disaster_cmd.c
changeset 2535 ed8b9592dc64
parent 2484 8e0c88a833fb
child 2548 97ada3bd2702
equal deleted inserted replaced
2534:2f12f7374039 2535:ed8b9592dc64
    15 #include "industry.h"
    15 #include "industry.h"
    16 #include "player.h"
    16 #include "player.h"
    17 #include "airport_movement.h"
    17 #include "airport_movement.h"
    18 #include "sound.h"
    18 #include "sound.h"
    19 #include "variables.h"
    19 #include "variables.h"
       
    20 #include "table/sprites.h"
    20 
    21 
    21 static void DisasterClearSquare(TileIndex tile)
    22 static void DisasterClearSquare(TileIndex tile)
    22 {
    23 {
    23 	if (!EnsureNoVehicle(tile))
    24 	if (!EnsureNoVehicle(tile))
    24 		return;
    25 		return;
   221 	SetDisasterVehiclePos(v, x, y, z);
   222 	SetDisasterVehiclePos(v, x, y, z);
   222 
   223 
   223 	if (++v->age == 1) {
   224 	if (++v->age == 1) {
   224 		CreateEffectVehicleRel(v, 0, 7, 8, EV_EXPLOSION_LARGE);
   225 		CreateEffectVehicleRel(v, 0, 7, 8, EV_EXPLOSION_LARGE);
   225 		SndPlayVehicleFx(SND_12_EXPLOSION, v);
   226 		SndPlayVehicleFx(SND_12_EXPLOSION, v);
   226 		v->u.disaster.image_override = 0xF42;
   227 		v->u.disaster.image_override = SPR_BLIMP_CRASHING;
   227 	} else if (v->age == 70) {
   228 	} else if (v->age == 70) {
   228 		v->u.disaster.image_override = 0xF43;
   229 		v->u.disaster.image_override = SPR_BLIMP_CRASHED;
   229 	} else if (v->age <= 300) {
   230 	} else if (v->age <= 300) {
   230 		if (!(v->tick_counter&7)) {
   231 		if (!(v->tick_counter&7)) {
   231 			uint32 r = Random();
   232 			uint32 r = Random();
   232 
   233 
   233 			CreateEffectVehicleRel(v,
   234 			CreateEffectVehicleRel(v,
   259 	GetNewVehiclePosResult gp;
   260 	GetNewVehiclePosResult gp;
   260 	Vehicle *u;
   261 	Vehicle *u;
   261 	uint dist;
   262 	uint dist;
   262 	byte z;
   263 	byte z;
   263 
   264 
   264 	v->u.disaster.image_override = (++v->tick_counter & 8) ? 0xF45 : 0xF44;
   265 	v->u.disaster.image_override = (++v->tick_counter & 8) ? SPR_UFO_SMALL_SCOUT_DARKER : SPR_UFO_SMALL_SCOUT;
   265 
   266 
   266 	if (v->current_order.station == 0) {
   267 	if (v->current_order.station == 0) {
   267 // fly around randomly
   268 // fly around randomly
   268 		int x = TileX(v->dest_tile) * 16;
   269 		int x = TileX(v->dest_tile) * 16;
   269 		int y = TileY(v->dest_tile) * 16;
   270 		int y = TileY(v->dest_tile) * 16;
   349 {
   350 {
   350 	GetNewVehiclePosResult gp;
   351 	GetNewVehiclePosResult gp;
   351 
   352 
   352 	v->tick_counter++;
   353 	v->tick_counter++;
   353 	v->u.disaster.image_override =
   354 	v->u.disaster.image_override =
   354 		(v->current_order.station == 1 && v->tick_counter&4) ? 0xF4F : 0;
   355 		(v->current_order.station == 1 && v->tick_counter&4) ? SPR_F_15_FIRING : 0;
   355 
   356 
   356 	GetNewVehiclePos(v, &gp);
   357 	GetNewVehiclePos(v, &gp);
   357 	SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
   358 	SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
   358 
   359 
   359 	if (gp.x < -160) {
   360 	if (gp.x < -160) {
   420 {
   421 {
   421 	GetNewVehiclePosResult gp;
   422 	GetNewVehiclePosResult gp;
   422 
   423 
   423 	v->tick_counter++;
   424 	v->tick_counter++;
   424 	v->u.disaster.image_override =
   425 	v->u.disaster.image_override =
   425 		(v->current_order.station == 1 && v->tick_counter&4) ? 0xF53 : 0;
   426 		(v->current_order.station == 1 && v->tick_counter&4) ? SPR_AH_64A_FIRING : 0;
   426 
   427 
   427 	GetNewVehiclePos(v, &gp);
   428 	GetNewVehiclePos(v, &gp);
   428 	SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
   429 	SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
   429 
   430 
   430 	if (gp.x > (int)MapSizeX() * 16 + 9*16 - 1) {
   431 	if (gp.x > (int)MapSizeX() * 16 + 9*16 - 1) {
   490 static void DisasterTick_3b(Vehicle *v)
   491 static void DisasterTick_3b(Vehicle *v)
   491 {
   492 {
   492 	if (++v->tick_counter & 1)
   493 	if (++v->tick_counter & 1)
   493 		return;
   494 		return;
   494 
   495 
   495 	if (++v->cur_image == 0xF40 + 1)
   496 	if (++v->cur_image > SPR_ROTOR_MOVING_3) v->cur_image = SPR_ROTOR_MOVING_1;
   496 		v->cur_image = 0xF3E;
       
   497 
   497 
   498 	VehiclePositionChanged(v);
   498 	VehiclePositionChanged(v);
   499 	BeginVehicleMove(v);
   499 	BeginVehicleMove(v);
   500 	EndVehicleMove(v);
   500 	EndVehicleMove(v);
   501 }
   501 }