mirror of https://github.com/OpenRCT2/OpenRCT2.git
Fix#9197: Peep insert new thought (#9230)
Improve the readability of the codebase by moving functions into the relevant structures. - Change name of peep_insert_new_thought to InsertNewThought. - Update InsertNewThought definition to Guest::InsertNewThought.
This commit is contained in:
parent
f7bd6d516a
commit
6b232f7e53
|
@ -1188,7 +1188,7 @@ void window_guest_overview_update(rct_window* w)
|
|||
int32_t random = util_rand() & 0xFFFF;
|
||||
if (random <= 0x2AAA)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_WATCHED, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_WATCHED, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -382,7 +382,7 @@ void Guest::Tick128UpdateGuest(int32_t index)
|
|||
PeepThoughtType thought_type = crowded_thoughts[scenario_rand() & 0xF];
|
||||
if (thought_type != PEEP_THOUGHT_TYPE_NONE)
|
||||
{
|
||||
peep_insert_new_thought(this, thought_type, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(thought_type, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -443,7 +443,7 @@ void Guest::Tick128UpdateGuest(int32_t index)
|
|||
|
||||
if (thought_type != PEEP_THOUGHT_TYPE_NONE)
|
||||
{
|
||||
peep_insert_new_thought(this, thought_type, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(thought_type, PEEP_THOUGHT_ITEM_NONE);
|
||||
happiness_target = std::min(PEEP_MAX_HAPPINESS, happiness_target + 45);
|
||||
}
|
||||
}
|
||||
|
@ -458,7 +458,7 @@ void Guest::Tick128UpdateGuest(int32_t index)
|
|||
|
||||
if (peep_flags & PEEP_FLAGS_WOW)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_WOW2, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_WOW2, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
|
||||
if (time_on_ride > 15)
|
||||
|
@ -473,7 +473,7 @@ void Guest::Tick128UpdateGuest(int32_t index)
|
|||
? PEEP_THOUGHT_TYPE_GET_OUT
|
||||
: PEEP_THOUGHT_TYPE_GET_OFF;
|
||||
|
||||
peep_insert_new_thought(this, thought_type, current_ride);
|
||||
InsertNewThought(thought_type, current_ride);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -560,7 +560,7 @@ void Guest::Tick128UpdateGuest(int32_t index)
|
|||
{
|
||||
PeepThoughtType chosen_thought = possible_thoughts[scenario_rand() % num_thoughts];
|
||||
|
||||
peep_insert_new_thought(this, chosen_thought, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(chosen_thought, PEEP_THOUGHT_ITEM_NONE);
|
||||
|
||||
switch (chosen_thought)
|
||||
{
|
||||
|
@ -596,7 +596,7 @@ void Guest::Tick128UpdateGuest(int32_t index)
|
|||
thought_type = PEEP_THOUGHT_TYPE_VERY_SICK;
|
||||
peep_head_for_nearest_ride_type(this, RIDE_TYPE_FIRST_AID);
|
||||
}
|
||||
peep_insert_new_thought(this, thought_type, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(thought_type, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1087,7 +1087,7 @@ void Guest::CheckIfLost()
|
|||
return;
|
||||
time_lost = 230;
|
||||
}
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_LOST, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_LOST, PEEP_THOUGHT_ITEM_NONE);
|
||||
|
||||
happiness_target = std::max(happiness_target - 30, 0);
|
||||
}
|
||||
|
@ -1105,7 +1105,7 @@ void Guest::CheckCantFindRide()
|
|||
// Peeps will think "I can't find ride X" twice before giving up completely.
|
||||
if (peep_is_lost_countdown == 30 || peep_is_lost_countdown == 60)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_CANT_FIND, guest_heading_to_ride_id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_CANT_FIND, guest_heading_to_ride_id);
|
||||
happiness_target = std::max(happiness_target - 30, 0);
|
||||
}
|
||||
|
||||
|
@ -1137,7 +1137,7 @@ void Guest::CheckCantFindExit()
|
|||
// Peeps who can't find the park exit will continue to get less happy until they find it.
|
||||
if (peep_is_lost_countdown == 1)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_CANT_FIND_EXIT, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_CANT_FIND_EXIT, PEEP_THOUGHT_ITEM_NONE);
|
||||
happiness_target = std::max(happiness_target - 30, 0);
|
||||
}
|
||||
|
||||
|
@ -1172,7 +1172,7 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price)
|
|||
|
||||
if (HasItem(shopItem))
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_ALREADY_GOT, shopItem);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_ALREADY_GOT, shopItem);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1181,12 +1181,12 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price)
|
|||
int32_t food = -1;
|
||||
if ((food = HasFoodStandardFlag()) != 0)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_HAVENT_FINISHED, bitscanforward(food));
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_HAVENT_FINISHED, bitscanforward(food));
|
||||
return false;
|
||||
}
|
||||
else if ((food = HasFoodExtraFlag()) != 0)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_HAVENT_FINISHED, bitscanforward(food) + 32);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_HAVENT_FINISHED, bitscanforward(food) + 32);
|
||||
return false;
|
||||
}
|
||||
else if (nausea >= 145)
|
||||
|
@ -1208,13 +1208,13 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price)
|
|||
|
||||
if (shop_item_is_food(shopItem) && (hunger > 75))
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_NOT_HUNGRY, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_NOT_HUNGRY, PEEP_THOUGHT_ITEM_NONE);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (shop_item_is_drink(shopItem) && (thirst > 75))
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_NOT_THIRSTY, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_NOT_THIRSTY, PEEP_THOUGHT_ITEM_NONE);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1236,12 +1236,12 @@ loc_69B119:
|
|||
{
|
||||
if (cash_in_pocket == 0)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_SPENT_MONEY, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_SPENT_MONEY, PEEP_THOUGHT_ITEM_NONE);
|
||||
return false;
|
||||
}
|
||||
if (price > cash_in_pocket)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_CANT_AFFORD, shopItem);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_CANT_AFFORD, shopItem);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1275,7 +1275,7 @@ loc_69B119:
|
|||
PeepThoughtType thought_type = static_cast<PeepThoughtType>(
|
||||
(shopItem >= 32 ? (PEEP_THOUGHT_TYPE_PHOTO2_MUCH + (shopItem - 32))
|
||||
: (PEEP_THOUGHT_TYPE_BALLOON_MUCH + shopItem)));
|
||||
peep_insert_new_thought(this, thought_type, ride->id);
|
||||
InsertNewThought(thought_type, ride->id);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1292,7 +1292,7 @@ loc_69B119:
|
|||
PeepThoughtType thought_item = static_cast<PeepThoughtType>(
|
||||
(shopItem >= 32 ? (PEEP_THOUGHT_TYPE_PHOTO2 + (shopItem - 32))
|
||||
: (PEEP_THOUGHT_TYPE_BALLOON + shopItem)));
|
||||
peep_insert_new_thought(this, thought_item, ride->id);
|
||||
InsertNewThought(thought_item, ride->id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1498,7 +1498,7 @@ void Guest::OnExitRide(ride_id_t rideIndex)
|
|||
|
||||
if (peep_really_liked_ride(this, ride))
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_WAS_GREAT, rideIndex);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_WAS_GREAT, rideIndex);
|
||||
|
||||
int32_t laugh = scenario_rand() & 7;
|
||||
if (laugh < 3)
|
||||
|
@ -1744,11 +1744,11 @@ bool Guest::ShouldGoOnRide(Ride* ride, int32_t entranceNum, bool atQueue, bool t
|
|||
{
|
||||
if (cash_in_pocket <= 0)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_SPENT_MONEY, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_SPENT_MONEY, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
else
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_CANT_AFFORD_0, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_CANT_AFFORD_0, ride->id);
|
||||
}
|
||||
}
|
||||
ChoseNotToGoOnRide(ride, peepAtRide, true);
|
||||
|
@ -1761,7 +1761,7 @@ bool Guest::ShouldGoOnRide(Ride* ride, int32_t entranceNum, bool atQueue, bool t
|
|||
{
|
||||
if (peepAtRide)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_NOT_SAFE, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_NOT_SAFE, ride->id);
|
||||
if (happiness_target >= 64)
|
||||
{
|
||||
happiness_target -= 8;
|
||||
|
@ -1791,7 +1791,7 @@ bool Guest::ShouldGoOnRide(Ride* ride, int32_t entranceNum, bool atQueue, bool t
|
|||
{
|
||||
if (peepAtRide)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_NOT_WHILE_RAINING, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_NOT_WHILE_RAINING, ride->id);
|
||||
if (happiness_target >= 64)
|
||||
{
|
||||
happiness_target -= 8;
|
||||
|
@ -1813,7 +1813,7 @@ bool Guest::ShouldGoOnRide(Ride* ride, int32_t entranceNum, bool atQueue, bool t
|
|||
{
|
||||
if (peepAtRide)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_MORE_THRILLING, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_MORE_THRILLING, ride->id);
|
||||
if (happiness_target >= 64)
|
||||
{
|
||||
happiness_target -= 8;
|
||||
|
@ -1836,7 +1836,7 @@ bool Guest::ShouldGoOnRide(Ride* ride, int32_t entranceNum, bool atQueue, bool t
|
|||
{
|
||||
if (peepAtRide)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_SICKENING, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_SICKENING, ride->id);
|
||||
if (happiness_target >= 64)
|
||||
{
|
||||
happiness_target -= 8;
|
||||
|
@ -1892,7 +1892,7 @@ bool Guest::ShouldGoOnRide(Ride* ride, int32_t entranceNum, bool atQueue, bool t
|
|||
{
|
||||
if (peepAtRide)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_BAD_VALUE, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_BAD_VALUE, ride->id);
|
||||
if (happiness_target >= 60)
|
||||
{
|
||||
happiness_target -= 16;
|
||||
|
@ -1910,7 +1910,7 @@ bool Guest::ShouldGoOnRide(Ride* ride, int32_t entranceNum, bool atQueue, bool t
|
|||
{
|
||||
if (!(peep_flags & PEEP_FLAGS_HAS_PAID_FOR_PARK_ENTRY))
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_GOOD_VALUE, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_GOOD_VALUE, ride->id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1959,7 +1959,7 @@ bool Guest::ShouldGoToShop(Ride* ride, bool peepAtShop)
|
|||
{
|
||||
if (peepAtShop)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_NOT_PAYING, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_NOT_PAYING, ride->id);
|
||||
if (happiness_target >= 60)
|
||||
{
|
||||
happiness_target -= 16;
|
||||
|
@ -1987,11 +1987,11 @@ bool Guest::ShouldGoToShop(Ride* ride, bool peepAtShop)
|
|||
{
|
||||
if (cash_in_pocket <= 0)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_SPENT_MONEY, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_SPENT_MONEY, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
else
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_CANT_AFFORD_0, ride->id);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_CANT_AFFORD_0, ride->id);
|
||||
}
|
||||
}
|
||||
ChoseNotToGoOnRide(ride, peepAtShop, true);
|
||||
|
@ -2128,7 +2128,7 @@ static void peep_ride_is_too_intense(Guest* peep, Ride* ride, bool peepAtRide)
|
|||
{
|
||||
if (peepAtRide)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_INTENSE, ride->id);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_INTENSE, ride->id);
|
||||
if (peep->happiness_target >= 64)
|
||||
{
|
||||
peep->happiness_target -= 8;
|
||||
|
@ -2329,14 +2329,14 @@ static bool peep_check_ride_price_at_entrance(Guest* peep, Ride* ride, money32 r
|
|||
|
||||
if (peep->cash_in_pocket <= 0)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_SPENT_MONEY, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_SPENT_MONEY, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep_update_ride_at_entrance_try_leave(peep);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ridePrice > peep->cash_in_pocket)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_CANT_AFFORD_0, peep->current_ride);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_CANT_AFFORD_0, peep->current_ride);
|
||||
peep_update_ride_at_entrance_try_leave(peep);
|
||||
return false;
|
||||
}
|
||||
|
@ -2346,7 +2346,7 @@ static bool peep_check_ride_price_at_entrance(Guest* peep, Ride* ride, money32 r
|
|||
{
|
||||
if (value * 2 < ridePrice)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_BAD_VALUE, peep->current_ride);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_BAD_VALUE, peep->current_ride);
|
||||
peep_update_ride_at_entrance_try_leave(peep);
|
||||
return false;
|
||||
}
|
||||
|
@ -2817,7 +2817,7 @@ static void peep_leave_park(Peep* peep)
|
|||
peep->peep_flags &= ~PEEP_FLAGS_PARK_ENTRANCE_CHOSEN;
|
||||
}
|
||||
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_GO_HOME, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_GO_HOME, PEEP_THOUGHT_ITEM_NONE);
|
||||
|
||||
rct_window* w = window_find_by_number(WC_PEEP, peep->sprite_index);
|
||||
if (w != nullptr)
|
||||
|
@ -5384,11 +5384,11 @@ void Guest::UpdateWalking()
|
|||
|
||||
if (current_seat & 1)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_NEW_RIDE, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_NEW_RIDE, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
if (current_ride == RIDE_ID_NULL)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_SCENERY, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_SCENERY, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5463,7 +5463,7 @@ void Guest::UpdateQueuing()
|
|||
if (time_in_queue >= 3500 && (0xFFFF & scenario_rand()) <= 93)
|
||||
{
|
||||
// Create the I have been waiting in line ages thought
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_QUEUING_AGES, current_ride);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_QUEUING_AGES, current_ride);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -1074,7 +1074,7 @@ void Peep::UpdateFalling()
|
|||
peep_release_balloon(guest, height);
|
||||
}
|
||||
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_DROWNING, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_DROWNING, PEEP_THOUGHT_ITEM_NONE);
|
||||
|
||||
action = PEEP_ACTION_DROWNING;
|
||||
action_frame = 0;
|
||||
|
@ -1173,7 +1173,7 @@ void Peep::UpdatePicked()
|
|||
sub_state++;
|
||||
if (sub_state == 13)
|
||||
{
|
||||
peep_insert_new_thought(this, PEEP_THOUGHT_TYPE_HELP, PEEP_THOUGHT_ITEM_NONE);
|
||||
InsertNewThought(PEEP_THOUGHT_TYPE_HELP, PEEP_THOUGHT_ITEM_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1704,6 +1704,55 @@ static constexpr const uint8_t tshirt_colours[] = {
|
|||
};
|
||||
// clang-format on
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x699F5A
|
||||
* al:thoughtType
|
||||
* ah:thoughtArguments
|
||||
* esi: peep
|
||||
*/
|
||||
void Peep::InsertNewThought(PeepThoughtType thoughtType, uint8_t thoughtArguments)
|
||||
{
|
||||
PeepActionType newAction = PeepThoughtToActionMap[thoughtType].action;
|
||||
if (newAction != PEEP_ACTION_NONE_2 && this->action >= PEEP_ACTION_NONE_1)
|
||||
{
|
||||
action = newAction;
|
||||
action_frame = 0;
|
||||
action_sprite_image_offset = 0;
|
||||
UpdateCurrentActionSpriteType();
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < PEEP_MAX_THOUGHTS; ++i)
|
||||
{
|
||||
rct_peep_thought* thought = &thoughts[i];
|
||||
// Remove the oldest thought by setting it to NONE.
|
||||
if (thought->type == PEEP_THOUGHT_TYPE_NONE)
|
||||
break;
|
||||
|
||||
if (thought->type == thoughtType && thought->item == thoughtArguments)
|
||||
{
|
||||
// If the thought type has not changed then we need to move
|
||||
// it to the top of the thought list. This is done by first removing the
|
||||
// existing thought and placing it at the top.
|
||||
if (i < PEEP_MAX_THOUGHTS - 2)
|
||||
{
|
||||
memmove(thought, thought + 1, sizeof(rct_peep_thought) * (PEEP_MAX_THOUGHTS - i - 1));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
memmove(&thoughts[1], &thoughts[0], sizeof(rct_peep_thought) * (PEEP_MAX_THOUGHTS - 1));
|
||||
|
||||
thoughts[0].type = thoughtType;
|
||||
thoughts[0].item = thoughtArguments;
|
||||
thoughts[0].freshness = 0;
|
||||
thoughts[0].fresh_timeout = 0;
|
||||
|
||||
window_invalidate_flags |= PEEP_INVALIDATE_PEEP_THOUGHTS;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0069A05D
|
||||
|
@ -2229,55 +2278,6 @@ int32_t peep_get_easteregg_name_id(Peep* peep)
|
|||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x699F5A
|
||||
* al:thought_type
|
||||
* ah:thought_arguments
|
||||
* esi: peep
|
||||
*/
|
||||
void peep_insert_new_thought(Peep* peep, PeepThoughtType thought_type, uint8_t thought_arguments)
|
||||
{
|
||||
PeepActionType action = PeepThoughtToActionMap[thought_type].action;
|
||||
if (action != PEEP_ACTION_NONE_2 && peep->action >= PEEP_ACTION_NONE_1)
|
||||
{
|
||||
peep->action = action;
|
||||
peep->action_frame = 0;
|
||||
peep->action_sprite_image_offset = 0;
|
||||
peep->UpdateCurrentActionSpriteType();
|
||||
peep->Invalidate();
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < PEEP_MAX_THOUGHTS; ++i)
|
||||
{
|
||||
rct_peep_thought* thought = &peep->thoughts[i];
|
||||
// Remove the oldest thought by setting it to NONE.
|
||||
if (thought->type == PEEP_THOUGHT_TYPE_NONE)
|
||||
break;
|
||||
|
||||
if (thought->type == thought_type && thought->item == thought_arguments)
|
||||
{
|
||||
// If the thought type has not changed then we need to move
|
||||
// it to the top of the thought list. This is done by first removing the
|
||||
// existing thought and placing it at the top.
|
||||
if (i < PEEP_MAX_THOUGHTS - 2)
|
||||
{
|
||||
memmove(thought, thought + 1, sizeof(rct_peep_thought) * (PEEP_MAX_THOUGHTS - i - 1));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
memmove(&peep->thoughts[1], &peep->thoughts[0], sizeof(rct_peep_thought) * (PEEP_MAX_THOUGHTS - 1));
|
||||
|
||||
peep->thoughts[0].type = thought_type;
|
||||
peep->thoughts[0].item = thought_arguments;
|
||||
peep->thoughts[0].freshness = 0;
|
||||
peep->thoughts[0].fresh_timeout = 0;
|
||||
|
||||
peep->window_invalidate_flags |= PEEP_INVALIDATE_PEEP_THOUGHTS;
|
||||
}
|
||||
|
||||
void peep_set_map_tooltip(Peep* peep)
|
||||
{
|
||||
if (peep->type == PEEP_TYPE_GUEST)
|
||||
|
@ -2745,7 +2745,7 @@ static void peep_footpath_move_forward(Peep* peep, int16_t x, int16_t y, TileEle
|
|||
{
|
||||
if ((scenario_rand() & 0xFFFF) <= 10922)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_VANDALISM, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_VANDALISM, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->happiness_target = std::max(0, peep->happiness_target - 17);
|
||||
}
|
||||
vandalThoughtTimeout = 3;
|
||||
|
@ -2793,7 +2793,7 @@ static void peep_footpath_move_forward(Peep* peep, int16_t x, int16_t y, TileEle
|
|||
|
||||
if (crowded >= 10 && peep->state == PEEP_STATE_WALKING && (scenario_rand() & 0xFFFF) <= 21845)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_CROWDED, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_CROWDED, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->happiness_target = std::max(0, peep->happiness_target - 14);
|
||||
}
|
||||
|
||||
|
@ -2819,7 +2819,7 @@ static void peep_footpath_move_forward(Peep* peep, int16_t x, int16_t y, TileEle
|
|||
|
||||
if (total_sick >= 3 && (scenario_rand() & 0xFFFF) <= 10922)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_PATH_DISGUSTING, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_PATH_DISGUSTING, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->happiness_target = std::max(0, peep->happiness_target - 17);
|
||||
// Reset disgusting time
|
||||
peep->disgusting_count |= 0xC0;
|
||||
|
@ -2845,7 +2845,7 @@ static void peep_footpath_move_forward(Peep* peep, int16_t x, int16_t y, TileEle
|
|||
|
||||
if (total_litter >= 3 && (scenario_rand() & 0xFFFF) <= 10922)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_BAD_LITTER, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_BAD_LITTER, PEEP_THOUGHT_ITEM_NONE);
|
||||
peep->happiness_target = std::max(0, peep->happiness_target - 17);
|
||||
// Reset litter time
|
||||
peep->litter_count |= 0xC0;
|
||||
|
|
|
@ -717,6 +717,7 @@ public: // Peep
|
|||
static Peep* Generate(const CoordsXYZ coords);
|
||||
void RemoveFromQueue();
|
||||
void RemoveFromRide();
|
||||
void InsertNewThought(PeepThoughtType thought_type, uint8_t thought_arguments);
|
||||
|
||||
// TODO: Make these private again when done refactoring
|
||||
public: // Peep
|
||||
|
@ -959,13 +960,6 @@ void peep_sprite_remove(Peep* peep);
|
|||
|
||||
void peep_window_state_update(Peep* peep);
|
||||
void peep_decrement_num_riders(Peep* peep);
|
||||
/**
|
||||
* rct2: 0x699F5A
|
||||
* al:thought_type
|
||||
* ah:thought_arguments
|
||||
* esi: peep
|
||||
*/
|
||||
void peep_insert_new_thought(Peep* peep, PeepThoughtType thought_type, uint8_t thought_arguments);
|
||||
|
||||
void peep_set_map_tooltip(Peep* peep);
|
||||
|
||||
|
|
|
@ -3042,7 +3042,7 @@ void vehicle_peep_easteregg_here_we_are(const rct_vehicle* vehicle)
|
|||
Peep* peep = GET_PEEP(vehicle->peep[i]);
|
||||
if (peep->peep_flags & PEEP_FLAGS_HERE_WE_ARE)
|
||||
{
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_HERE_WE_ARE, peep->current_ride);
|
||||
peep->InsertNewThought(PEEP_THOUGHT_TYPE_HERE_WE_ARE, peep->current_ride);
|
||||
}
|
||||
}
|
||||
} while ((spriteId = vehicle->next_vehicle_on_train) != SPRITE_INDEX_NULL);
|
||||
|
|
Loading…
Reference in New Issue