From 74787f8f12eaee18c0644a28f6758d077020d0f5 Mon Sep 17 00:00:00 2001 From: Sun Daowen Date: Thu, 6 Jun 2024 22:57:18 +0800 Subject: [PATCH] Fix undefined reference to ... --- include/bmarch.h | 4 ++-- include/bmunit.h | 1 + src/bmtarget.c | 10 ++++------ src/bmunit.c | 4 ++-- src/bmusemind.c | 6 ++---- src/fogmap.c | 6 ++---- src/mapanim_summon.c | 3 --- 7 files changed, 13 insertions(+), 21 deletions(-) diff --git a/include/bmarch.h b/include/bmarch.h index c93e3b224..08d2e46ae 100644 --- a/include/bmarch.h +++ b/include/bmarch.h @@ -11,7 +11,7 @@ s32 IsBallista(struct Trap* trap); int sub_8037AC0(struct Trap* trap); int sub_8037AEC(struct Trap* trap); int GetBallistaItemUses(struct Trap* trap); -// ??? ClearBallistaOccupied(???); -// ??? SetBallistaOccupied(???); +void ClearBallistaOccupied(struct Trap* trap); +void SetBallistaOccupied(struct Trap* trap); #endif // GUARD_BMARCH_H diff --git a/include/bmunit.h b/include/bmunit.h index 0c39c0295..545bf0cce 100644 --- a/include/bmunit.h +++ b/include/bmunit.h @@ -463,6 +463,7 @@ struct Unit* GetUnit(int id); const struct ClassData* GetClassData(int classId); const struct CharacterData* GetCharacterData(int charId); void UnitRemoveItem(struct Unit* unit, int slot); +s32 CanUnitCrossTerrain(struct Unit* unit, int terrain); #define UNIT_IS_VALID(aUnit) ((aUnit) && (aUnit)->pCharacterData) #define UNIT_CHAR_ID(aUnit) ((aUnit)->pCharacterData->number) diff --git a/src/bmtarget.c b/src/bmtarget.c index 9b07d9d60..b0d76501d 100644 --- a/src/bmtarget.c +++ b/src/bmtarget.c @@ -18,8 +18,6 @@ struct Unit* EWRAM_DATA gSubjectUnit = NULL; -s8 CanUnitCrossTerrain(struct Unit* unit, int terrain); - void ForEachUnitInMovement(void(*func)(struct Unit* unit)) { int ix; int iy; @@ -306,7 +304,7 @@ void TryAddToDropTargetList(int x, int y) { return; } - if (!CanUnitCrossTerrain(GetUnit(gSubjectUnit->rescue), gBmMapTerrain[y][x])) { + if (!(s8)CanUnitCrossTerrain(GetUnit(gSubjectUnit->rescue), gBmMapTerrain[y][x])) { return; } @@ -809,7 +807,7 @@ void AddAsTarget_IfPositionCleanForSummon(int x, int y) { return; } - if (!CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { + if (!(s8)CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { return; } @@ -841,7 +839,7 @@ void sub_8025CD8(int x, int y) { return; } - if (!CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { + if (!(s8)CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { return; } @@ -1272,7 +1270,7 @@ void TryAddToMineTargetList(int x, int y) { return; } - if (!CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { + if (!(s8)CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { return; } diff --git a/src/bmunit.c b/src/bmunit.c index a30de7421..27b431990 100644 --- a/src/bmunit.c +++ b/src/bmunit.c @@ -989,7 +989,7 @@ void UnitChangeFaction(struct Unit* unit, int faction) { GetUnit(newUnit->rescue)->rescue = newUnit->index; } -inline s8 CanUnitCrossTerrain(struct Unit* unit, int terrain) { +inline s32 CanUnitCrossTerrain(struct Unit* unit, int terrain) { const s8* lookup = GetUnitMovementCost(unit); return (lookup[terrain] > 0) ? TRUE : FALSE; } @@ -1036,7 +1036,7 @@ void UnitGetDeathDropLocation(struct Unit* unit, int* xOut, int* yOut) { if (gBmMapHidden[iy][ix] & HIDDEN_BIT_UNIT) continue; - if (!CanUnitCrossTerrain(rescuee, gBmMapTerrain[iy][ix])) + if (!(s8)CanUnitCrossTerrain(rescuee, gBmMapTerrain[iy][ix])) continue; distance = RECT_DISTANCE(ix, iy, unit->xPos, unit->yPos); diff --git a/src/bmusemind.c b/src/bmusemind.c index 165aff1b8..ab9312ef8 100644 --- a/src/bmusemind.c +++ b/src/bmusemind.c @@ -25,8 +25,6 @@ #include "bmmind.h" #include "bmusemind.h" -s8 CanUnitCrossTerrain(struct Unit* unit, int terrain); - struct ProcCmd CONST_DATA ProcScr_PostWarpStaffAction[] = { PROC_SLEEP(0), PROC_CALL_2(PostWarpStaff_ExecTrap), @@ -142,7 +140,7 @@ void GetRescueStaffeePosition(struct Unit* unit, struct Unit* target, int* xOut, continue; } - if (!CanUnitCrossTerrain(target, gBmMapTerrain[iy][ix])) { + if (!(s8)CanUnitCrossTerrain(target, gBmMapTerrain[iy][ix])) { continue; } @@ -181,7 +179,7 @@ void GetRescueStaffeePosition(struct Unit* unit, struct Unit* target, int* xOut, continue; } - if (!CanUnitCrossTerrain(target, gBmMapTerrain[iy][ix])) { + if (!(s8)CanUnitCrossTerrain(target, gBmMapTerrain[iy][ix])) { continue; } diff --git a/src/fogmap.c b/src/fogmap.c index c1d04a1f6..73e85e206 100644 --- a/src/fogmap.c +++ b/src/fogmap.c @@ -8,8 +8,6 @@ #include "hardware.h" #include "bmudisp.h" -s8 CanUnitCrossTerrain(struct Unit* unit, int terrain); - void UpdateMapViewWithFog(int vision_range) { if (vision_range < 0) @@ -51,7 +49,7 @@ void FillWarpRangeMap(struct Unit *unit_act, struct Unit *unit_tar) { if (gBmMapMovement[y][x] > 0x78) continue; - if (CanUnitCrossTerrain(unit_tar, gBmMapTerrain[y][x]) && + if ((s8)CanUnitCrossTerrain(unit_tar, gBmMapTerrain[y][x]) && 0 == gBmMapUnit[y][x]) continue; @@ -64,7 +62,7 @@ void FillWarpRangeMap(struct Unit *unit_act, struct Unit *unit_tar) { if (gBmMapMovement[y][x] > 0x78) continue; - if (CanUnitCrossTerrain(unit_tar, gBmMapTerrain[y][x]) && + if ((s8)CanUnitCrossTerrain(unit_tar, gBmMapTerrain[y][x]) && 0 == gBmMapUnit[y][x] && 0 != gBmMapFog[y][x]) continue; diff --git a/src/mapanim_summon.c b/src/mapanim_summon.c index d6eda926d..3b63b93f8 100644 --- a/src/mapanim_summon.c +++ b/src/mapanim_summon.c @@ -202,9 +202,6 @@ void ProcSummonDK_ResetCounter(struct SumProc* proc) s8 SelectSummonPos(int x, int y, struct SumThing* result) { - // It is very strange that in this function, CanUnitCrossTerrain should return as int(*)(Unit*, int) - extern int CanUnitCrossTerrain(struct Unit* unit, int terrain); - struct SumThing array[9]; u8 chosen, count = 0; short iy, ix;