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

Method Sprite_Handle_Vehicle_Terrain_Check

Source/Fodder.cpp:4857–5029  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4855}
4856
4857void cFodder::Sprite_Handle_Vehicle_Terrain_Check(sSprite* pSprite) {
4858 int16 Data4, Data0;
4859 int32 Dataa0;
4860
4861 pSprite->field_50 = pSprite->field_52;
4862 if (!pSprite->field_50)
4863 pSprite->field_52 = 0;
4864
4865 if (Map_Sprite_Check_Around_Position(pSprite))
4866 goto Computer_Vehicle_SoftTerrain;
4867
4868 Data4 = 0x0F;
4869 Data0 = -10;
4870 Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, Data4);
4871
4872 pSprite->field_60 = static_cast<int8>(Data4);
4873 if (Data4 == eTerrainFeature_Rocky || Data4 == eTerrainFeature_Rocky2)
4874 goto loc_23056;
4875
4876 if (Data4 == eTerrainFeature_Jump)
4877 goto loc_23100;
4878
4879 if (Data4 == eTerrainFeature_Block)
4880 goto Computer_Vehicle_SoftTerrain;
4881
4882 if (Data4 == eTerrainFeature_Drop || Data4 == 0x0A)
4883 goto loc_22F06;
4884
4885 if (pSprite->field_56)
4886 pSprite->field_38 = eSprite_Anim_Die1;
4887
4888 if (Data4 == eTerrainFeature_Snow)
4889 goto loc_22FA3;
4890
4891 if (pSprite->field_22 == eSprite_PersonType_Human)
4892 goto Human_Vehicle;
4893
4894 if (Data4 == eTerrainFeature_QuickSand || Data4 == eTerrainFeature_WaterEdge
4895 || Data4 == eTerrainFeature_Water || Data4 == eTerrainFeature_Sink)
4896 goto Computer_Vehicle_SoftTerrain;
4897
4898 goto loc_22EEB;
4899
4900Human_Vehicle:;
4901
4902 if (Data4 == eTerrainFeature_QuickSand)
4903 goto Human_Vehicle_Quicksand;
4904
4905 if (Data4 == eTerrainFeature_WaterEdge)
4906 goto Human_Vehicle_WaterEdge;
4907
4908 if (Data4 == eTerrainFeature_Water || Data4 == eTerrainFeature_Sink)
4909 goto AnimDie3;
4910
4911loc_22EEB:;
4912 pSprite->field_52 = 0;
4913 if (pSprite->field_50)
4914 goto loc_23056;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected