MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Sprite_Handle_Civilian_Within_Range_OpenCloseDoor

Method Sprite_Handle_Civilian_Within_Range_OpenCloseDoor

Source/Fodder.cpp:6723–6781  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6721}
6722
6723int16 cFodder::Sprite_Handle_Civilian_Within_Range_OpenCloseDoor(sSprite* pSprite) {
6724
6725 if (!mSprite_OpenCloseDoor_Ptr)
6726 return -1;
6727
6728 if (pSprite->field_4C) {
6729 --pSprite->field_4C;
6730 return 0;
6731 }
6732
6733 sSprite* Data28 = mSprite_OpenCloseDoor_Ptr;
6734
6735 int16 Data0 = pSprite->field_0;
6736 int16 Data4 = pSprite->field_4;
6737 int16 Data8 = Data28->field_0;
6738 int16 DataC = Data28->field_4;
6739
6740 pSprite->field_26 = Data8;
6741 pSprite->field_28 = DataC;
6742
6743 mSprite_Civilian_Tmp_X = Data0;
6744 mSprite_Civilian_Tmp_Y = Data4;
6745 word_3B481 = Data8;
6746 word_3B483 = DataC;
6747 int16 Data10 = 0x20;
6748
6749 Map_Get_Distance_BetweenPoints(Data0, Data4, Data8, Data10, DataC);
6750 if (Data0 <= 3) {
6751 Sprite_Destroy_Wrapper(pSprite);
6752 mSprite_Civilian_GotHome = -1;
6753 return 1;
6754 }
6755
6756 if (Data0 < 6) {
6757 Data28->field_2A = 0x0A;
6758 return 0;
6759 }
6760
6761 Data0 = mSprite_Civilian_Tmp_X;
6762 Data4 = mSprite_Civilian_Tmp_Y;
6763 Data8 = word_3B481;
6764 DataC = word_3B483;
6765
6766 if (!Map_PathCheck_CalculateTo(Data0, Data4, Data8, DataC))
6767 return 0;
6768
6769 // Move toward top left
6770 Data0 = tool_RandomGet() & 0x3F;
6771 if (Data0)
6772 return 0;
6773
6774 pSprite->field_26 = pSprite->field_0;
6775 pSprite->field_28 = pSprite->field_4;
6776 pSprite->field_26 -= 0x10;
6777 pSprite->field_28 -= 0x20;
6778 pSprite->field_4C = 0x1E;
6779
6780 return 0;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected