1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 20:13:07 +01:00

Add MoveTo function

This commit is contained in:
duncanspumpkin
2018-04-03 19:28:27 +01:00
parent a94fb2fa2e
commit 2488cb9c3a
4 changed files with 41 additions and 35 deletions

View File

@@ -272,7 +272,7 @@ void rct_peep::UpdateSitting()
};
Invalidate();
sprite_move(loc.x, loc.y, loc.z, (rct_sprite *)this);
MoveTo(loc.x, loc.y, loc.z);
sprite_direction = ((var_37 + 2) & 3) * 8;
Invalidate();
@@ -1414,7 +1414,7 @@ void rct_peep::UpdateRideAtEntrance()
auto entrance = ride_get_entrance_location(ride, current_ride_station);
actionZ = entrance.z * 8 + 2;
}
sprite_move(actionX, actionY, actionZ, (rct_sprite *)this);
MoveTo(actionX, actionY, actionZ);
Invalidate();
}
else
@@ -1626,7 +1626,7 @@ void rct_peep::UpdateRideAdvanceThroughEntrance()
actionZ += RideData5[ride->type].z;
}
sprite_move(actionX, actionY, actionZ, (rct_sprite *)this);
MoveTo(actionX, actionY, actionZ);
Invalidate();
return;
}
@@ -1960,7 +1960,7 @@ void rct_peep::UpdateRideApproachVehicle()
}
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
}
@@ -2006,7 +2006,7 @@ void rct_peep::UpdateRideEnterVehicle()
invalidate_sprite_2((rct_sprite *)vehicle);
Invalidate();
sprite_move(LOCATION_NULL, 0, 0, (rct_sprite *)this);
MoveTo(LOCATION_NULL, 0, 0);
SetState(PEEP_STATE_ON_RIDE);
@@ -2195,7 +2195,7 @@ void rct_peep::UpdateRideLeaveVehicle()
if (ride->type == RIDE_TYPE_MOTION_SIMULATOR)
exitWaypointLoc.z += 15;
sprite_move(exitWaypointLoc.x, exitWaypointLoc.y, exitWaypointLoc.z, (rct_sprite *)this);
MoveTo(exitWaypointLoc.x, exitWaypointLoc.y, exitWaypointLoc.z);
Invalidate();
waypointLoc.x += vehicleEntry->peep_loading_waypoints[var_37 / 4][1].x;
@@ -2263,7 +2263,7 @@ void rct_peep::UpdateRideApproachExit()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}
@@ -2289,13 +2289,13 @@ void rct_peep::UpdateRideInExit()
sint16 actionZ = ride->station_heights[current_ride_station] * 8;
actionZ += RideData5[ride->type].z;
sprite_move(actionX, actionY, actionZ, (rct_sprite *)this);
MoveTo(actionX, actionY, actionZ);
Invalidate();
return;
}
SwitchToSpecialSprite(0);
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
}
@@ -2345,7 +2345,7 @@ void rct_peep::UpdateRideApproachVehicleWaypoints()
actionZ = z;
}
Invalidate();
sprite_move(actionX, actionY, actionZ, (rct_sprite *)this);
MoveTo(actionX, actionY, actionZ);
Invalidate();
return;
}
@@ -2416,7 +2416,7 @@ void rct_peep::UpdateRideApproachExitWaypoints()
actionZ = z;
}
Invalidate();
sprite_move(actionX, actionY, actionZ, (rct_sprite *)this);
MoveTo(actionX, actionY, actionZ);
Invalidate();
return;
}
@@ -2499,7 +2499,7 @@ void rct_peep::UpdateRideApproachSpiralSlide()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}
@@ -2512,7 +2512,7 @@ void rct_peep::UpdateRideApproachSpiralSlide()
destination_x = 0;
destination_y = 0;
var_37 = (var_37 / 4) & 0xC;
sprite_move(LOCATION_NULL, actionY, z, (rct_sprite *)this);
MoveTo(LOCATION_NULL, actionY, z);
return;
}
else if (waypoint == 2)
@@ -2627,7 +2627,7 @@ void rct_peep::UpdateRideOnSpiralSlide()
newX += _981F0C[dir].x;
newY += _981F0C[dir].y;
sprite_move(newX, newY, z, (rct_sprite *)this);
MoveTo(newX, newY, z);
sprite_direction = (var_37 & 0xC) * 2;
Invalidate();
@@ -2645,7 +2645,7 @@ void rct_peep::UpdateRideOnSpiralSlide()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}
@@ -2679,7 +2679,7 @@ void rct_peep::UpdateRideLeaveSpiralSlide()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}
@@ -2763,7 +2763,7 @@ void rct_peep::UpdateRideMazePathfinding()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}
@@ -2910,7 +2910,7 @@ void rct_peep::UpdateRideMazePathfinding()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}
@@ -2928,7 +2928,7 @@ void rct_peep::UpdateRideLeaveExit()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, ride->station_heights[current_ride_station] * 8, (rct_sprite *)this);
MoveTo(actionX, actionY, ride->station_heights[current_ride_station] * 8);
Invalidate();
return;
}
@@ -2968,7 +2968,7 @@ void rct_peep::UpdateRideLeaveExit()
if (z_diff > 0 || z_diff < -16)
continue;
sprite_move(x, y, height, (rct_sprite *)this);
MoveTo(x, y, height);
Invalidate();
return;
} while (!tile_element_is_last_for_tile(tileElement++));
@@ -2985,7 +2985,7 @@ void rct_peep::UpdateRideShopApproach()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}
@@ -3057,7 +3057,7 @@ void rct_peep::UpdateRideShopLeave()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
actionX = x & 0xFFE0;
@@ -3294,7 +3294,7 @@ void rct_peep::UpdateWalking()
{
Invalidate();
water_height *= 16;
sprite_move(x, y, water_height, (rct_sprite *)this);
MoveTo(x, y, water_height);
Invalidate();
SetState(PEEP_STATE_FALLING);
@@ -3583,7 +3583,7 @@ void rct_peep::UpdateEnteringPark()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}
@@ -3619,7 +3619,7 @@ void rct_peep::UpdateLeavingPark()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
Invalidate();
sprite_move(actionX, actionY, z, (rct_sprite *)this);
MoveTo(actionX, actionY, z);
Invalidate();
return;
}

View File

@@ -395,6 +395,11 @@ void rct_peep::Invalidate()
invalidate_sprite_2((rct_sprite*)this);
}
void rct_peep::MoveTo(sint16 destX, sint16 destY, sint16 destZ)
{
sprite_move(destX, destY, destZ, (rct_sprite*)this);
}
rct_peep * try_get_guest(uint16 spriteIndex)
{
rct_sprite * sprite = try_get_sprite(spriteIndex);
@@ -2192,7 +2197,7 @@ void rct_peep::UpdateFalling()
{
// Looks like we are drowning!
Invalidate();
sprite_move(x, y, height, (rct_sprite *)this);
MoveTo(x, y, height);
// Drop balloon if held
peep_release_balloon(this, height);
@@ -2229,13 +2234,13 @@ void rct_peep::UpdateFalling()
Remove();
return;
}
sprite_move(x, y, z - 2, (rct_sprite *)this);
MoveTo(x, y, z - 2);
Invalidate();
return;
}
Invalidate();
sprite_move(x, y, saved_height, (rct_sprite *)this);
MoveTo(x, y, saved_height);
Invalidate();
next_x = x & 0xFFE0;
@@ -4345,7 +4350,7 @@ sint32 rct_peep::PerformNextAction(uint8 & pathing_result, rct_tile_element * &
{
sint16 height = GetZOnSlope(actionX, actionY);
Invalidate();
sprite_move(actionX, actionY, height, (rct_sprite *)this);
MoveTo(actionX, actionY, height);
Invalidate();
return 1;
}
@@ -4431,7 +4436,7 @@ sint32 rct_peep::PerformNextAction(uint8 & pathing_result, rct_tile_element * &
height = GetZOnSlope(actionX, actionY);
Invalidate();
sprite_move(actionX, actionY, height, (rct_sprite *)this);
MoveTo(actionX, actionY, height);
Invalidate();
return 1;
}

View File

@@ -701,6 +701,7 @@ struct rct_peep
bool HasDrink() const;
bool HasEmptyContainer() const;
bool HeadingForRideOrParkExit() const;
void MoveTo(sint16 destX, sint16 destY, sint16 destZ);
private:
void UpdateFalling();
void Update1();

View File

@@ -1656,7 +1656,7 @@ void rct_peep::UpdateMowing()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
sint16 checkZ = tile_element_height(actionX, actionY) & 0xFFFF;
sprite_move(actionX, actionY, checkZ, (rct_sprite *)this);
MoveTo(actionX, actionY, checkZ);
Invalidate();
return;
}
@@ -1866,7 +1866,7 @@ void rct_peep::UpdateSweeping()
if (UpdateAction(&actionX, &actionY, &xy_distance))
{
sint16 actionZ = GetZOnSlope(actionX, actionY);
sprite_move(actionX, actionY, actionZ, (rct_sprite *)this);
MoveTo(actionX, actionY, actionZ);
Invalidate();
return;
}
@@ -1993,7 +1993,7 @@ void rct_peep::UpdateHeadingToInspect()
newZ += RideData5[ride->type].z;
}
sprite_move(actionX, actionY, newZ, (rct_sprite *)this);
MoveTo(actionX, actionY, newZ);
Invalidate();
}
@@ -2112,7 +2112,7 @@ void rct_peep::UpdateAnswering()
newZ += RideData5[ride->type].z;
}
sprite_move(actionX, actionY, newZ, (rct_sprite *)this);
MoveTo(actionX, actionY, newZ);
Invalidate();
}
@@ -2350,7 +2350,7 @@ void rct_peep::UpdatePatrolling()
{
Invalidate();
water_height *= 16;
sprite_move(x, y, water_height, (rct_sprite *)this);
MoveTo(x, y, water_height);
Invalidate();
SetState(PEEP_STATE_FALLING);