engine.c
changeset 4171 5c6e60c392c3
parent 4077 d4d440dd8925
child 4261 28670f743746
equal deleted inserted replaced
4170:81bafc4dd1b9 4171:5c6e60c392c3
   238 	EngineID i;
   238 	EngineID i;
   239 
   239 
   240 	if (_cur_year >= 130) return;
   240 	if (_cur_year >= 130) return;
   241 
   241 
   242 	for (i = 0; i != lengthof(_engines); i++) {
   242 	for (i = 0; i != lengthof(_engines); i++) {
   243 		Engine* e = &_engines[i];
   243 		Engine *e = &_engines[i];
   244 
   244 
   245 		if (e->flags & ENGINE_INTRODUCING) {
   245 		if (e->flags & ENGINE_INTRODUCING) {
   246 			if (e->flags & ENGINE_PREVIEWING) {
   246 			if (e->flags & ENGINE_PREVIEWING) {
   247 				if (e->preview_player != 0xFF && !--e->preview_wait) {
   247 				if (e->preview_player != 0xFF && !--e->preview_wait) {
   248 					e->flags &= ~ENGINE_PREVIEWING;
   248 					e->flags &= ~ENGINE_PREVIEWING;
   487 /**
   487 /**
   488  * Retrieves the EngineRenew that specifies the replacement of the given
   488  * Retrieves the EngineRenew that specifies the replacement of the given
   489  * engine type from the given renewlist */
   489  * engine type from the given renewlist */
   490 static EngineRenew *GetEngineReplacement(EngineRenewList erl, EngineID engine)
   490 static EngineRenew *GetEngineReplacement(EngineRenewList erl, EngineID engine)
   491 {
   491 {
   492 	EngineRenew* er = (EngineRenew*)erl; /* Fetch first element */
   492 	EngineRenew *er = (EngineRenew*)erl; /* Fetch first element */
   493 	while (er) {
   493 	while (er) {
   494 		if (er->from == engine) return er;
   494 		if (er->from == engine) return er;
   495 		er = er->next;
   495 		er = er->next;
   496 	}
   496 	}
   497 	return NULL;
   497 	return NULL;
   498 }
   498 }
   499 
   499 
   500 void RemoveAllEngineReplacement(EngineRenewList* erl)
   500 void RemoveAllEngineReplacement(EngineRenewList *erl)
   501 {
   501 {
   502 	EngineRenew* er = (EngineRenew*)(*erl); /* Fetch first element */
   502 	EngineRenew *er = (EngineRenew*)(*erl); /* Fetch first element */
   503 	while (er) {
   503 	while (er) {
   504 		er->from = INVALID_ENGINE; /* "Deallocate" all elements */
   504 		er->from = INVALID_ENGINE; /* "Deallocate" all elements */
   505 		er = er->next;
   505 		er = er->next;
   506 	}
   506 	}
   507 	*erl = NULL; /* Empty list */
   507 	*erl = NULL; /* Empty list */
   511 {
   511 {
   512 	const EngineRenew *er = GetEngineReplacement(erl, engine);
   512 	const EngineRenew *er = GetEngineReplacement(erl, engine);
   513 	return er == NULL ? INVALID_ENGINE : er->to;
   513 	return er == NULL ? INVALID_ENGINE : er->to;
   514 }
   514 }
   515 
   515 
   516 int32 AddEngineReplacement(EngineRenewList* erl, EngineID old_engine, EngineID new_engine, uint32 flags)
   516 int32 AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, EngineID new_engine, uint32 flags)
   517 {
   517 {
   518 	EngineRenew *er;
   518 	EngineRenew *er;
   519 
   519 
   520 	// Check if the old vehicle is already in the list
   520 	// Check if the old vehicle is already in the list
   521 	er = GetEngineReplacement(*erl, old_engine);
   521 	er = GetEngineReplacement(*erl, old_engine);
   536 	}
   536 	}
   537 
   537 
   538 	return 0;
   538 	return 0;
   539 }
   539 }
   540 
   540 
   541 int32 RemoveEngineReplacement(EngineRenewList* erl, EngineID engine, uint32 flags)
   541 int32 RemoveEngineReplacement(EngineRenewList *erl, EngineID engine, uint32 flags)
   542 {
   542 {
   543 	EngineRenew* er = (EngineRenew*)(*erl); /* Start at the first element */
   543 	EngineRenew *er = (EngineRenew*)(*erl); /* Start at the first element */
   544 	EngineRenew* prev = NULL;
   544 	EngineRenew *prev = NULL;
   545 
   545 
   546 	while (er)
   546 	while (er)
   547 	{
   547 	{
   548 		if (er->from == engine) {
   548 		if (er->from == engine) {
   549 			if (flags & DC_EXEC) {
   549 			if (flags & DC_EXEC) {