equal
deleted
inserted
replaced
658 case 0x1A: return v->x_pos; |
658 case 0x1A: return v->x_pos; |
659 case 0x1B: return v->x_pos & 0xFF; |
659 case 0x1B: return v->x_pos & 0xFF; |
660 case 0x1C: return v->y_pos; |
660 case 0x1C: return v->y_pos; |
661 case 0x1D: return v->y_pos & 0xFF; |
661 case 0x1D: return v->y_pos & 0xFF; |
662 case 0x1E: return v->z_pos; |
662 case 0x1E: return v->z_pos; |
663 case 0x1F: return v->direction; |
663 case 0x1F: return object->info_view ? DIR_W : v->direction; |
664 case 0x28: return v->cur_image; |
664 case 0x28: return v->cur_image; |
665 case 0x29: return v->cur_image & 0xFF; |
665 case 0x29: return v->cur_image & 0xFF; |
666 case 0x32: return v->vehstatus; |
666 case 0x32: return v->vehstatus; |
667 case 0x33: return v->vehstatus; |
667 case 0x33: return v->vehstatus; |
668 case 0x34: return v->cur_speed; |
668 case 0x34: return v->cur_speed; |
797 res->ResolveReal = &VehicleResolveReal; |
797 res->ResolveReal = &VehicleResolveReal; |
798 |
798 |
799 res->u.vehicle.self = v; |
799 res->u.vehicle.self = v; |
800 res->u.vehicle.parent = (v != NULL && v->type == VEH_Train) ? GetFirstVehicleInChain(v) : v; |
800 res->u.vehicle.parent = (v != NULL && v->type == VEH_Train) ? GetFirstVehicleInChain(v) : v; |
801 |
801 |
|
802 res->info_view = false; |
|
803 |
802 res->callback = 0; |
804 res->callback = 0; |
803 res->callback_param1 = 0; |
805 res->callback_param1 = 0; |
804 res->callback_param2 = 0; |
806 res->callback_param2 = 0; |
805 res->last_value = 0; |
807 res->last_value = 0; |
806 res->trigger = 0; |
808 res->trigger = 0; |
840 |
842 |
841 return group->g.result.sprite + (direction % group->g.result.num_sprites); |
843 return group->g.result.sprite + (direction % group->g.result.num_sprites); |
842 } |
844 } |
843 |
845 |
844 |
846 |
845 SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle *v) |
847 SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle *v, bool info_view) |
846 { |
848 { |
847 const SpriteGroup *group; |
849 const SpriteGroup *group; |
848 ResolverObject object; |
850 ResolverObject object; |
849 |
851 |
850 assert(engine >= AIRCRAFT_ENGINES_INDEX); |
852 assert(engine >= AIRCRAFT_ENGINES_INDEX); |
853 /* Only valid for helicopters */ |
855 /* Only valid for helicopters */ |
854 assert(!(AircraftVehInfo(engine)->subtype & AIR_CTOL)); |
856 assert(!(AircraftVehInfo(engine)->subtype & AIR_CTOL)); |
855 |
857 |
856 NewVehicleResolver(&object, v); |
858 NewVehicleResolver(&object, v); |
857 |
859 |
|
860 object.info_view = info_view; |
|
861 |
858 group = heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX]; |
862 group = heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX]; |
859 group = Resolve(group, &object); |
863 group = Resolve(group, &object); |
860 |
864 |
861 if (group == NULL || group->type != SGT_RESULT) return 0; |
865 if (group == NULL || group->type != SGT_RESULT) return 0; |
862 |
866 |
863 if (v == NULL) return group->g.result.sprite; |
867 if (v == NULL) return group->g.result.sprite; |
864 |
868 |
865 return group->g.result.sprite + (v->next->next->u.air.state % group->g.result.num_sprites); |
869 return group->g.result.sprite + (info_view ? 0 : (v->next->next->u.air.state % group->g.result.num_sprites)); |
866 } |
870 } |
867 |
871 |
868 |
872 |
869 /** |
873 /** |
870 * Check if a wagon is currently using a wagon override |
874 * Check if a wagon is currently using a wagon override |