equal
deleted
inserted
replaced
122 for(e=_engines, ei=_engine_info; e != endof(_engines); e++,ei++) { |
122 for(e=_engines, ei=_engine_info; e != endof(_engines); e++,ei++) { |
123 e->age = 0; |
123 e->age = 0; |
124 e->railtype = ei->railtype_climates >> 4; |
124 e->railtype = ei->railtype_climates >> 4; |
125 e->flags = 0; |
125 e->flags = 0; |
126 e->player_avail = 0; |
126 e->player_avail = 0; |
127 |
127 |
128 r = Random(); |
128 r = Random(); |
129 e->intro_date = (uint16)((r & 0x1FF) + ei->base_intro); |
129 e->intro_date = (uint16)((r & 0x1FF) + ei->base_intro); |
130 if (e->intro_date <= _date) { |
130 if (e->intro_date <= _date) { |
131 e->age = (_date - e->intro_date) >> 5; |
131 e->age = (_date - e->intro_date) >> 5; |
132 e->player_avail = (byte)-1; |
132 e->player_avail = (byte)-1; |
189 |
189 |
190 wos = &_engine_wagon_overrides[engine]; |
190 wos = &_engine_wagon_overrides[engine]; |
191 wos->overrides_count++; |
191 wos->overrides_count++; |
192 wos->overrides = realloc(wos->overrides, |
192 wos->overrides = realloc(wos->overrides, |
193 wos->overrides_count * sizeof(struct WagonOverride)); |
193 wos->overrides_count * sizeof(struct WagonOverride)); |
194 |
194 |
195 wo = &wos->overrides[wos->overrides_count - 1]; |
195 wo = &wos->overrides[wos->overrides_count - 1]; |
196 wo->superset = *superset; |
196 wo->superset = *superset; |
197 wo->trains = trains; |
197 wo->trains = trains; |
198 wo->train_id = malloc(trains); |
198 wo->train_id = malloc(trains); |
199 memcpy(wo->train_id, train_id, trains); |
199 memcpy(wo->train_id, train_id, trains); |
244 struct SpriteSuperSet *overset; |
244 struct SpriteSuperSet *overset; |
245 |
245 |
246 overset = GetWagonOverrideSpriteSet(engine, overriding_engine); |
246 overset = GetWagonOverrideSpriteSet(engine, overriding_engine); |
247 if (overset) superset = overset; |
247 if (overset) superset = overset; |
248 } |
248 } |
249 |
249 |
250 if (!superset->sprites_per_set && cargo != 29) { |
250 if (!superset->sprites_per_set && cargo != 29) { |
251 // This superset is empty but perhaps there'll be a default one. |
251 // This superset is empty but perhaps there'll be a default one. |
252 superset = &_engine_custom_sprites[engine][29]; |
252 superset = &_engine_custom_sprites[engine][29]; |
253 } |
253 } |
254 |
254 |
305 Player *p; |
305 Player *p; |
306 |
306 |
307 SETBIT(e->player_avail, player); |
307 SETBIT(e->player_avail, player); |
308 |
308 |
309 p = DEREF_PLAYER(player); |
309 p = DEREF_PLAYER(player); |
310 |
310 |
311 UPDATE_PLAYER_RAILTYPE(e,p); |
311 UPDATE_PLAYER_RAILTYPE(e,p); |
312 |
312 |
313 e->preview_player = 0xFF; |
313 e->preview_player = 0xFF; |
314 InvalidateWindowClasses(WC_BUILD_VEHICLE); |
314 InvalidateWindowClasses(WC_BUILD_VEHICLE); |
315 } |
315 } |
331 if (e->flags & ENGINE_PREVIEWING) { |
331 if (e->flags & ENGINE_PREVIEWING) { |
332 if (!--e->preview_wait) { |
332 if (!--e->preview_wait) { |
333 e->flags &= ~ENGINE_PREVIEWING; |
333 e->flags &= ~ENGINE_PREVIEWING; |
334 DeleteWindowById(WC_ENGINE_PREVIEW, i); |
334 DeleteWindowById(WC_ENGINE_PREVIEW, i); |
335 e->preview_player++; |
335 e->preview_player++; |
336 } |
336 } |
337 } else if (e->preview_player != 0xFF) { |
337 } else if (e->preview_player != 0xFF) { |
338 num = e->preview_player; |
338 num = e->preview_player; |
339 mask = 0; |
339 mask = 0; |
340 do { |
340 do { |
341 best_hist = -1; |
341 best_hist = -1; |
342 best_player = -1; |
342 best_player = -1; |
343 FOR_ALL_PLAYERS(p) { |
343 FOR_ALL_PLAYERS(p) { |
344 if (p->is_active && p->block_preview == 0 && !HASBIT(mask,p->index) && |
344 if (p->is_active && p->block_preview == 0 && !HASBIT(mask,p->index) && |
345 p->old_economy[0].performance_history > best_hist) { |
345 p->old_economy[0].performance_history > best_hist) { |
346 best_hist = p->old_economy[0].performance_history; |
346 best_hist = p->old_economy[0].performance_history; |
347 best_player = p->index; |
347 best_player = p->index; |
348 } |
348 } |
349 } |
349 } |
351 e->preview_player = 0xFF; |
351 e->preview_player = 0xFF; |
352 goto next_engine; |
352 goto next_engine; |
353 } |
353 } |
354 mask |= (1 << best_player); |
354 mask |= (1 << best_player); |
355 } while (--num != 0); |
355 } while (--num != 0); |
356 |
356 |
357 if (!IS_HUMAN_PLAYER(best_player)) { |
357 if (!IS_HUMAN_PLAYER(best_player)) { |
358 /* TTDBUG: TTD has a bug here */ |
358 /* TTDBUG: TTD has a bug here */ |
359 AcceptEnginePreview(e, best_player); |
359 AcceptEnginePreview(e, best_player); |
360 } else { |
360 } else { |
361 e->flags |= ENGINE_PREVIEWING; |
361 e->flags |= ENGINE_PREVIEWING; |
362 e->preview_wait = 20; |
362 e->preview_wait = 20; |
363 if (IS_INTERACTIVE_PLAYER(best_player)) { |
363 if (IS_INTERACTIVE_PLAYER(best_player)) { |
364 ShowEnginePreviewWindow(i); |
364 ShowEnginePreviewWindow(i); |
365 } |
365 } |
366 } |
366 } |
367 } |
367 } |
368 } |
368 } |
369 next_engine:; |
369 next_engine:; |
388 // prevent that player from getting future intro periods for a while. |
388 // prevent that player from getting future intro periods for a while. |
389 if (e->flags&ENGINE_INTRODUCING) { |
389 if (e->flags&ENGINE_INTRODUCING) { |
390 FOR_ALL_PLAYERS(p) { |
390 FOR_ALL_PLAYERS(p) { |
391 if (!HASBIT(e->player_avail,p->index)) |
391 if (!HASBIT(e->player_avail,p->index)) |
392 continue; |
392 continue; |
393 |
393 |
394 for(v=_vehicles;;) { |
394 for(v=_vehicles;;) { |
395 if (v->type == VEH_Train || v->type == VEH_Road || v->type == VEH_Ship || |
395 if (v->type == VEH_Train || v->type == VEH_Road || v->type == VEH_Ship || |
396 (v->type == VEH_Aircraft && v->subtype <= 2)) { |
396 (v->type == VEH_Aircraft && v->subtype <= 2)) { |
397 if (v->owner == p->index && v->engine_type == index) break; |
397 if (v->owner == p->index && v->engine_type == index) break; |
398 } |
398 } |
464 StringID str; |
464 StringID str; |
465 |
465 |
466 str = AllocateName((byte*)_decode_parameters, 0); |
466 str = AllocateName((byte*)_decode_parameters, 0); |
467 if (str == 0) |
467 if (str == 0) |
468 return CMD_ERROR; |
468 return CMD_ERROR; |
469 |
469 |
470 if (flags & DC_EXEC) { |
470 if (flags & DC_EXEC) { |
471 StringID old_str = _engine_name_strings[p1]; |
471 StringID old_str = _engine_name_strings[p1]; |
472 _engine_name_strings[p1] = str; |
472 _engine_name_strings[p1] = str; |
473 DeleteName(old_str); |
473 DeleteName(old_str); |
474 _vehicle_design_names |= 3; |
474 _vehicle_design_names |= 3; |