dSv_info_c::isItem OK

This commit is contained in:
Pheenoh 2021-01-03 03:35:54 -05:00
parent 5abaebc40d
commit 47c40cce41
No known key found for this signature in database
GPG Key ID: 4312662758CE7D5A
2 changed files with 22 additions and 3 deletions

View File

@ -722,6 +722,7 @@ public:
dSv_memory_c(void); // the assembly for this is in d_com_inf_game.s
void init(void);
dSv_memBit_c& getTempFlags() { return temp_flags; }
const dSv_memBit_c& getTempFlagsConst() const { return temp_flags; }
private:
dSv_memBit_c temp_flags;
@ -803,6 +804,7 @@ public:
dSv_zone_c(void); // the assembly for this is in d_com_inf_game.s
void init(int);
dSv_zoneBit_c& getZoneBit() { return zone_bit; }
const dSv_zoneBit_c& getZoneBitConst() const { return zone_bit; }
dSv_zoneActor_c& getZoneActor() { return zone_actor; }
const dSv_zoneActor_c& getZoneActorConst() const { return zone_actor; }

View File

@ -1429,9 +1429,26 @@ void dSv_info_c::onItem(int i_no, int i_roomNo) {
}
}
asm BOOL dSv_info_c::isItem(int i_no, int i_roomNo) const {
nofralloc
#include "d/d_save/d_save/asm/func_80035590.s"
BOOL dSv_info_c::isItem(int i_no, int i_roomNo) const {
int value;
if ((i_no == -1) || (i_no == 0xFF)) {
return 0;
}
if (i_no < 0x80) {
value = this->dungeon_bit.isItem(i_no);
} else if (i_no < 0xA0) {
value = this->memory.getTempFlagsConst().isItem(i_no - 0x80);
} else {
int zoneNo = dStage_roomControl_c_NS_getZoneNo(i_roomNo, i_no);
if (i_no < 0xC0) {
value = this->zones[zoneNo].getZoneBitConst().isItem(i_no - 0xA0);
} else {
value = this->zones[zoneNo].getZoneBitConst().isOneItem(i_no - 0xC0);
}
}
return value;
}
void dSv_info_c::onActor(int i_id, int i_roomNo) {