mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-31 08:51:29 -04:00
3aec45d6d7
* various d_bg debug cleanup * matching forward decl for compiler compatibility * fix build
1327 lines
46 KiB
C++
1327 lines
46 KiB
C++
/**
|
|
* d_menu_window_HIO.cpp
|
|
* Menu HostIO functionality
|
|
*/
|
|
|
|
#include "d/dolzel.h" // IWYU pragma: keep
|
|
|
|
#include "d/d_menu_window_HIO.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "d/d_msg_object.h"
|
|
#include "d/d_meter2_info.h"
|
|
|
|
#if DEBUG
|
|
#include "JSystem/JHostIO/JORServer.h"
|
|
#include "d/d_s_menu.h"
|
|
#endif
|
|
|
|
dMw_HIO_c::dMw_HIO_c() {
|
|
init();
|
|
}
|
|
|
|
void dMw_HIO_c::init() {
|
|
static u8 m_cloth_item[3] = {dItemNo_WEAR_KOKIRI_e, dItemNo_ARMOR_e, dItemNo_WEAR_ZORA_e};
|
|
static u8 m_sword_item[4] = {dItemNo_SWORD_e, dItemNo_MASTER_SWORD_e, dItemNo_LIGHT_SWORD_e, dItemNo_WOOD_STICK_e};
|
|
static u8 m_shield_item[3] = {dItemNo_SHIELD_e, dItemNo_HYLIA_SHIELD_e, dItemNo_WOOD_SHIELD_e};
|
|
|
|
mArrowFlag = 0;
|
|
mBombFlag = 0;
|
|
mPachinkoFlag = 0;
|
|
|
|
mLife = mLifeCopy = 0;
|
|
mMaxLife = mMaxLifeCopy = 0;
|
|
mMagic = mMagicCopy = 0;
|
|
mMaxMagic = mMaxMagicCopy = 0;
|
|
mOil = mOilCopy = 0;
|
|
mMaxOil = mMaxOilCopy = 0;
|
|
mOxygen = mOxygenCopy = 0;
|
|
mMaxOxygen = mMaxOxygenCopy = 0;
|
|
mEnableMagic = mEnableMagicCopy = false;
|
|
mEnableArrowDrops = mEnableArrowDropsCopy = false;
|
|
mRupees = mRupeesCopy = 0;
|
|
mWalletSize = mWalletSizeCopy = WALLET;
|
|
mKeys = mKeysCopy = 0;
|
|
field_0x23 = field_0x47 = 0;
|
|
mEnableOxygenMeter = mEnableOxygenMeterCopy = false;
|
|
mPoes = mPoesCopy = 0;
|
|
mDonationAmount = mDonationAmountCopy = 0;
|
|
|
|
for (int i = 0; i < 24; i++) {
|
|
mItems[i] = mItemsCopy[i] = dItemNo_NONE_e;
|
|
field_0x7a[i] = 0;
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
mBottleNum[i] = mBottleNumCopy[i] = 0;
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
mBombNum[i] = mBombNumCopy[i] = 0;
|
|
}
|
|
|
|
mScent = mScentCopy = dItemNo_NONE_e;
|
|
field_0xa8 = 0;
|
|
field_0xea = field_0xf4 = 0;
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
mSwords[i] = mSwordsCopy[i] = dComIfGs_isItemFirstBit(m_sword_item[i]) ? 1 : 0;
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
mShields[i] = mShieldsCopy[i] = dComIfGs_isItemFirstBit(m_shield_item[i]) ? 1 : 0;
|
|
mClothes[i] = mClothesCopy[i] = dComIfGs_isItemFirstBit(m_cloth_item[i]) ? 1 : 0;
|
|
}
|
|
|
|
mBombBagLV2 = mBombBagLV2Copy = false;
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
mLV2KeyShards[i] = mLV2KeyShardsCopy[i] = false;
|
|
}
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
mLV5Item[i] = mLV5ItemCopy[i] = false;
|
|
}
|
|
|
|
for (int i = 0; i < 24; i++) {
|
|
mGoldBug[i] = mGoldBugCopy[i] = false;
|
|
}
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
field_0xf9[i] = field_0x101[i] = 0;
|
|
field_0x109[i] = field_0x111[i] = 0;
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
mFusedShadow[i] = mFusedShadowCopy[i] = false;
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
mMirrorShard[i] = mMirrorShardCopy[i] = false;
|
|
}
|
|
}
|
|
|
|
#if DEBUG
|
|
void dMw_HIO_c::genMessage(JORMContext* mctx) {
|
|
// "*****Player Status*****"
|
|
mctx->genLabel("\n*****プレイヤーの状態*****", 0);
|
|
mctx->genCheckBox("魔法使える", &mEnableMagic, 1);
|
|
mctx->genCheckBox("矢補給", &mEnableArrowDrops, 1);
|
|
mctx->genCheckBox("矢の数無限", &mArrowFlag, 1);
|
|
mctx->genCheckBox("パチンコ玉の数無限", &mPachinkoFlag, 1);
|
|
mctx->genCheckBox("爆弾の数無限", &mBombFlag, 1);
|
|
mctx->genSlider("ライフ", (s16*)&mLife, 0, 80);
|
|
mctx->genSlider("ライフ最大", (s16*)&mMaxLife, 0, 100);
|
|
mctx->genSlider("魔法メーター", &mMagic, 0, 32);
|
|
mctx->genSlider("魔法メーター最大", &mMaxMagic, 0, 32);
|
|
mctx->genSlider("カンテラ油", &mOil, 0, 100000);
|
|
mctx->genSlider("カンテラ油最大", &mMaxOil, 0, 100000);
|
|
mctx->genCheckBox("酸素メーターON", &mEnableOxygenMeter, 1);
|
|
mctx->genSlider("酸素メーター", &mOxygen, 0, 100000);
|
|
mctx->genSlider("酸素メーター最大", &mMaxOxygen, 0, 100000);
|
|
mctx->genSlider("ルピ−", &mRupees, 0, 5000);
|
|
mctx->genSlider("財布", &mWalletSize, 0, 2);
|
|
mctx->genSlider("鍵", &mKeys, 0, 99);
|
|
mctx->genSlider("ゴースト", &mPoes, 0, 60);
|
|
mctx->genSlider("お布施総額", &mDonationAmount, 0, 10000);
|
|
mctx->genCheckBox("爆弾袋LV2", &mBombBagLV2, 1);
|
|
|
|
// "*****Item*****"
|
|
mctx->genLabel("\n*****アイテム*****", 0);
|
|
mctx->startComboBox("風のロッド", &mItems[0], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("風のロッド", dItemNo_BOOMERANG_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("カンテラ", &mItems[1], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("カンテラ", dItemNo_KANTERA_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("スピナー", &mItems[2], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("スピナー", dItemNo_SPINNER_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("アイアンブーツ", &mItems[3], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("アイアンブーツ", dItemNo_HVY_BOOTS_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("弓矢", &mItems[4], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("弓矢", dItemNo_BOW_e);
|
|
mctx->genComboBoxItem("光の矢", dItemNo_LIGHT_ARROW_e);
|
|
mctx->genComboBoxItem("ホークアイ+矢", dItemNo_HAWK_ARROW_e);
|
|
mctx->genComboBoxItem("爆弾+矢", dItemNo_BOMB_ARROW_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->genSlider("矢の数", &mArrowNum, 0, 100);
|
|
|
|
mctx->startComboBox("ホークアイ", &mItems[5], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("ホークアイ", dItemNo_HAWK_EYE_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("鉄球", &mItems[6], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("鉄球", dItemNo_IRONBALL_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("ミラーシールド", &mItems[7], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("コピーロッド", &mItems[8], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("コピーロッド", dItemNo_COPY_ROD_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("フックショット", &mItems[9], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("フックショット", dItemNo_HOOKSHOT_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("Wフックショット", &mItems[10], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("Wフックショット", dItemNo_W_HOOKSHOT_e);
|
|
mctx->endComboBox();
|
|
|
|
for (int i = 0; i < 4; i = i + 1) {
|
|
char sp30[8];
|
|
sprintf(sp30, "ビン%d", i + 1);
|
|
mctx->startComboBox(sp30, &mItems[11 + i], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("空きビン", dItemNo_EMPTY_BOTTLE_e);
|
|
mctx->genComboBoxItem("赤い薬入りビン", dItemNo_RED_BOTTLE_e);
|
|
mctx->genComboBoxItem("緑の薬入りビン", dItemNo_GREEN_BOTTLE_e);
|
|
mctx->genComboBoxItem("青い薬入りビン", dItemNo_BLUE_BOTTLE_e);
|
|
mctx->genComboBoxItem("水入りビン", dItemNo_WATER_BOTTLE_e);
|
|
mctx->genComboBoxItem("妖精入りビン", dItemNo_FAIRY_e);
|
|
mctx->genComboBoxItem("牛乳入りビン", dItemNo_MILK_BOTTLE_e);
|
|
mctx->genComboBoxItem("牛乳半分入りビン", dItemNo_HALF_MILK_BOTTLE_e);
|
|
mctx->genComboBoxItem("油入りビン", dItemNo_OIL_BOTTLE_e);
|
|
mctx->genComboBoxItem("まずいスープ", dItemNo_UGLY_SOUP_e);
|
|
mctx->genComboBoxItem("温泉水入りビン", dItemNo_HOT_SPRING_e);
|
|
mctx->genComboBoxItem("最初にもらうスープ", dItemNo_LV1_SOUP_e);
|
|
mctx->genComboBoxItem("材料が1つ入ったスープ", dItemNo_LV2_SOUP_e);
|
|
mctx->genComboBoxItem("完成したスープ", dItemNo_LV3_SOUP_e);
|
|
mctx->genComboBoxItem("ポウの炎1", dItemNo_POU_FIRE1_e);
|
|
mctx->genComboBoxItem("ポウの炎2", dItemNo_POU_FIRE2_e);
|
|
mctx->genComboBoxItem("ポウの炎3", dItemNo_POU_FIRE3_e);
|
|
mctx->genComboBoxItem("ポウの炎4", dItemNo_POU_FIRE4_e);
|
|
mctx->genComboBoxItem("チュチュゼリー赤", dItemNo_CHUCHU_RED_e);
|
|
mctx->genComboBoxItem("チュチュゼリー青", dItemNo_CHUCHU_BLUE_e);
|
|
mctx->genComboBoxItem("チュチュゼリー緑", dItemNo_CHUCHU_GREEN_e);
|
|
mctx->genComboBoxItem("チュチュゼリー黄", dItemNo_CHUCHU_YELLOW_e);
|
|
mctx->genComboBoxItem("チュチュゼリー紫", dItemNo_CHUCHU_PURPLE_e);
|
|
mctx->genComboBoxItem("チュチュゼリーレア", dItemNo_CHUCHU_RARE_e);
|
|
mctx->genComboBoxItem("チュチュゼリー黒", dItemNo_CHUCHU_BLACK_e);
|
|
mctx->genComboBoxItem("妖精", dItemNo_FAIRY_e);
|
|
mctx->genComboBoxItem("カブトムシ♂", dItemNo_M_BEETLE_e);
|
|
mctx->genComboBoxItem("カブトムシ♀", dItemNo_F_BEETLE_e);
|
|
mctx->genComboBoxItem("チョウチョ♂", dItemNo_M_BUTTERFLY_e);
|
|
mctx->genComboBoxItem("チョウチョ♀", dItemNo_F_BUTTERFLY_e);
|
|
mctx->genComboBoxItem("クワガタ♂", dItemNo_M_STAG_BEETLE_e);
|
|
mctx->genComboBoxItem("クワガタ♀", dItemNo_F_STAG_BEETLE_e);
|
|
mctx->genComboBoxItem("バッタ♂", dItemNo_M_GRASSHOPPER_e);
|
|
mctx->genComboBoxItem("バッタ♀", dItemNo_F_GRASSHOPPER_e);
|
|
mctx->genComboBoxItem("ナナフシ♂", dItemNo_M_NANAFUSHI_e);
|
|
mctx->genComboBoxItem("ナナフシ♀", dItemNo_F_NANAFUSHI_e);
|
|
mctx->genComboBoxItem("ダンゴムシ♂", dItemNo_M_DANGOMUSHI_e);
|
|
mctx->genComboBoxItem("ダンゴムシ♀", dItemNo_F_DANGOMUSHI_e);
|
|
mctx->genComboBoxItem("カマキリ♂", dItemNo_M_MANTIS_e);
|
|
mctx->genComboBoxItem("カマキリ♀", dItemNo_F_MANTIS_e);
|
|
mctx->genComboBoxItem("テントウムシ♂", dItemNo_M_LADYBUG_e);
|
|
mctx->genComboBoxItem("テントウムシ♀", dItemNo_F_LADYBUG_e);
|
|
mctx->genComboBoxItem("カタツムリ♂", dItemNo_M_SNAIL_e);
|
|
mctx->genComboBoxItem("カタツムリ♀", dItemNo_F_SNAIL_e);
|
|
mctx->genComboBoxItem("トンボ♂", dItemNo_M_DRAGONFLY_e);
|
|
mctx->genComboBoxItem("トンボ♀", dItemNo_F_DRAGONFLY_e);
|
|
mctx->genComboBoxItem("アリ♂", dItemNo_M_ANT_e);
|
|
mctx->genComboBoxItem("アリ♀", dItemNo_F_ANT_e);
|
|
mctx->genComboBoxItem("カゲロウ♂", dItemNo_M_MAYFLY_e);
|
|
mctx->genComboBoxItem("カゲロウ♀", dItemNo_F_MAYFLY_e);
|
|
mctx->genComboBoxItem("蜂の子", dItemNo_BEE_CHILD_e);
|
|
mctx->genComboBoxItem("みみず", dItemNo_WORM_e);
|
|
mctx->genComboBoxItem("大妖精の滴", dItemNo_FAIRY_DROP_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->genSlider("アイテムの数", &mBottleNum[i], 0, 10);
|
|
}
|
|
|
|
for (int i = 0; i < 3; i = i + 1) {
|
|
char sp38[8];
|
|
sprintf(sp38, "爆弾袋%d", i + 1);
|
|
mctx->startComboBox(sp38, &mItems[15 + i], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("爆弾袋", dItemNo_BOMB_BAG_LV1_e);
|
|
mctx->genComboBoxItem("ノーマル爆弾", dItemNo_NORMAL_BOMB_e);
|
|
mctx->genComboBoxItem("水中爆弾", dItemNo_WATER_BOMB_e);
|
|
mctx->genComboBoxItem("ポケ虫", dItemNo_POKE_BOMB_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->genSlider("爆弾の数", &mBombNum[i], 0, 99);
|
|
}
|
|
|
|
mctx->startComboBox("天空人", &mItems[18], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("天空人", dItemNo_DUNGEON_EXIT_e);
|
|
mctx->genComboBoxItem("天空人の息子", dItemNo_DUNGEON_BACK_e);
|
|
mctx->genComboBoxItem("天空人の書置き", dItemNo_TKS_LETTER_e);
|
|
mctx->genComboBoxItem("再開時の天空人", dItemNo_DUNGEON_EXIT_2_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("メモ", &mItems[19], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("ラフレルのメモ", dItemNo_RAFRELS_MEMO_e);
|
|
mctx->genComboBoxItem("アッシュの走り書き", dItemNo_ASHS_SCRIBBLING_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("釣竿", &mItems[20], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("珊瑚の耳飾り", dItemNo_ZORAS_JEWEL_e);
|
|
mctx->genComboBoxItem("釣竿", dItemNo_FISHING_ROD_1_e);
|
|
mctx->genComboBoxItem("釣竿+蜂の子", dItemNo_BEE_ROD_e);
|
|
mctx->genComboBoxItem("釣竿+みみず", dItemNo_WORM_ROD_e);
|
|
mctx->genComboBoxItem("珊瑚+釣竿", dItemNo_JEWEL_ROD_e);
|
|
mctx->genComboBoxItem("珊瑚+釣竿+蜂の子", dItemNo_JEWEL_BEE_ROD_e);
|
|
mctx->genComboBoxItem("珊瑚+釣竿+みみず", dItemNo_JEWEL_WORM_ROD_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("わらしべアイテム", &mItems[21], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("レナードの手紙", dItemNo_LETTER_e);
|
|
mctx->genComboBoxItem("請求書", dItemNo_BILL_e);
|
|
mctx->genComboBoxItem("木彫りの像", dItemNo_WOOD_STATUE_e);
|
|
mctx->genComboBoxItem("イリアのペンダント", dItemNo_IRIAS_PENDANT_e);
|
|
mctx->genComboBoxItem("馬笛", dItemNo_HORSE_FLUTE_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->startComboBox("古文書", &mItems[22], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("天空の古文書", dItemNo_ANCIENT_DOCUMENT_e);
|
|
mctx->genComboBoxItem("天空文字", dItemNo_AIR_LETTER_e);
|
|
mctx->genComboBoxItem("解封の古文書", dItemNo_ANCIENT_DOCUMENT2_e);
|
|
mctx->endComboBox();
|
|
|
|
char sp40[8];
|
|
sprintf(sp40, "パチンコ");
|
|
mctx->startComboBox(sp40, &mItems[23], 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("未装備", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("パチンコ", dItemNo_PACHINKO_e);
|
|
mctx->endComboBox();
|
|
|
|
mctx->genSlider("パチンコ玉の数", &mSeedNum, 0, 50);
|
|
|
|
// "*****Collect*****"
|
|
mctx->genLabel("\n*****コレクト*****", 0);
|
|
mctx->genCheckBox("コキリの服", &mClothes[0], 1);
|
|
mctx->genCheckBox("装甲服", &mClothes[1], 1);
|
|
mctx->genCheckBox("ゾーラの服", &mClothes[2], 1);
|
|
mctx->genCheckBox("木刀", &mSwords[3], 1);
|
|
mctx->genCheckBox("金剛の剣", &mSwords[0], 1);
|
|
mctx->genCheckBox("マスターソード", &mSwords[1], 1);
|
|
mctx->genCheckBox("ライトニングソード", &mSwords[2], 1);
|
|
mctx->genCheckBox("木彫りの盾", &mShields[2], 1);
|
|
mctx->genCheckBox("木の盾", &mShields[0], 1);
|
|
mctx->genCheckBox("ハイリアの盾", &mShields[1], 1);
|
|
mctx->genCheckBox("LV2ボス鍵かけら1", &mLV2KeyShards[0], 1);
|
|
mctx->genCheckBox("LV2ボス鍵かけら2", &mLV2KeyShards[1], 1);
|
|
mctx->genCheckBox("LV2ボス鍵かけら3", &mLV2KeyShards[2], 1);
|
|
mctx->genCheckBox("かぼちゃ", &mLV5Item[0], 1);
|
|
mctx->genCheckBox("トアル産チーズ", &mLV5Item[1], 1);
|
|
|
|
mctx->startComboBox("におい", &mScent, 0, NULL, 0xFFFF, 0xFFFF, 256, 26);
|
|
mctx->genComboBoxItem("覚えてない", dItemNo_NONE_e);
|
|
mctx->genComboBoxItem("かぼちゃのにおい(削除)", dItemNo_SMELL_PUMPKIN_e);
|
|
mctx->genComboBoxItem("イリアのポーチのにおい", dItemNo_SMELL_YELIA_POUCH_e);
|
|
mctx->genComboBoxItem("魚のにおい", dItemNo_SMELL_FISH_e);
|
|
mctx->genComboBoxItem("ポウのにおい", dItemNo_SMELL_POH_e);
|
|
mctx->genComboBoxItem("子供のにおい", dItemNo_SMELL_CHILDREN_e);
|
|
mctx->genComboBoxItem("薬品のにおい", dItemNo_SMELL_MEDICINE_e);
|
|
mctx->endComboBox();
|
|
|
|
for (int i = 0; i < 24; i = i + 1) {
|
|
static const char* insect_name[] = {
|
|
"カブトムシ♂", "カブトムシ♀",
|
|
"チョウチョ♂", "チョウチョ♀",
|
|
"クワガタ♂", "クワガタ♀",
|
|
"バッタ♂", "バッタ♀",
|
|
"ナナフシ♂", "ナナフシ♀",
|
|
"ダンゴムシ♂", "ダンゴムシ♀",
|
|
"カマキリ♂", "カマキリ♀",
|
|
"テントウムシ♂", "テントウムシ♀",
|
|
"カタツムリ♂", "カタツムリ♀",
|
|
"トンボ♂", "トンボ♀",
|
|
"アリ♂", "アリ♀",
|
|
"カゲロウ♂", "カゲロウ♀",
|
|
};
|
|
|
|
mctx->genCheckBox(insect_name[i], &mGoldBug[i], 1);
|
|
}
|
|
|
|
// "*****Fused Shadows*****"
|
|
mctx->genLabel("\n*****影の水晶石*****", 0);
|
|
char sp28[24];
|
|
for (int i = 0; i < 4; i = i + 1) {
|
|
sprintf(sp28, "影の水晶石%d", i + 1);
|
|
mctx->genCheckBox(sp28, &mFusedShadow[i], 1);
|
|
}
|
|
|
|
// "*****Mirror Shards*****"
|
|
mctx->genLabel("\n*****陰りの鏡*****", 0);
|
|
for (int i = 0; i < 4; i = i + 1) {
|
|
sprintf(sp28, "陰りの鏡%d", i + 1);
|
|
mctx->genCheckBox(sp28, &mMirrorShard[i], 1);
|
|
}
|
|
}
|
|
|
|
void dMw_HIO_c::update() {
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
mctx->startUpdateNode(this);
|
|
mctx->updateCheckBox(2, &mArrowFlag, 1, 0);
|
|
mctx->updateCheckBox(2, &mBombFlag, 1, 0);
|
|
mctx->endUpdateNode();
|
|
releaseJORMContext(mctx);
|
|
}
|
|
|
|
void dMw_HIO_c::playerStatusHIO() {
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
|
|
if (mLife != mLifeCopy) {
|
|
s16 sp10 = mLife - dComIfGs_getLife();
|
|
dComIfGp_clearItemLifeCount();
|
|
dComIfGp_setItemLifeCount(sp10, 0);
|
|
mLifeCopy = mLife;
|
|
} else if (mLifeCopy != dComIfGs_getLife()) {
|
|
mLife = mLifeCopy = dComIfGs_getLife();
|
|
mctx->updateSlider(2, &mLife, 0, 0, 0);
|
|
}
|
|
|
|
if (mMaxLifeCopy != mMaxLife) {
|
|
s16 spE = mMaxLife - dComIfGs_getMaxLife();
|
|
dComIfGp_clearItemMaxLifeCount();
|
|
dComIfGp_setItemMaxLifeCount(spE);
|
|
mMaxLifeCopy = mMaxLife;
|
|
} else if (mMaxLifeCopy != dComIfGs_getMaxLife()) {
|
|
mMaxLife = mMaxLifeCopy = dComIfGs_getMaxLife();
|
|
mctx->updateSlider(2, &mMaxLife, 0, 0, 0);
|
|
}
|
|
|
|
if (mMagicCopy != mMagic) {
|
|
s16 spC = mMagic - dComIfGs_getMagic();
|
|
dComIfGp_setItemMagicCount(spC);
|
|
mMagicCopy = mMagic;
|
|
} else if (mMagicCopy != dComIfGs_getMagic()) {
|
|
mMagic = mMagicCopy = dComIfGs_getMagic();
|
|
mctx->updateSlider(2, &mMagic, 0, 0, 0);
|
|
}
|
|
|
|
if (mMaxMagicCopy != mMaxMagic) {
|
|
s16 spB = mMaxMagic - dComIfGs_getMaxMagic();
|
|
dComIfGp_setItemMaxMagicCount(spB);
|
|
mMaxMagicCopy = mMaxMagic;
|
|
} else if (mMaxMagicCopy != dComIfGs_getMaxMagic()) {
|
|
mMaxMagic = mMaxMagicCopy = dComIfGs_getMaxMagic();
|
|
mctx->updateSlider(2, &mMaxMagic, 0, 0, 0);
|
|
}
|
|
|
|
if (mOilCopy != mOil) {
|
|
s32 sp2C = mOil - dComIfGs_getOil();
|
|
dComIfGp_setItemOilCount(sp2C);
|
|
mOilCopy = mOil;
|
|
} else if (mOilCopy != dComIfGs_getOil()) {
|
|
mOil = mOilCopy = dComIfGs_getOil();
|
|
mctx->updateSlider(2, &mOil, 0, 0, 0);
|
|
}
|
|
|
|
if (mMaxOilCopy != mMaxOil) {
|
|
s32 sp30 = mMaxOil - dComIfGs_getMaxOil();
|
|
dComIfGp_setItemMaxOilCount(sp30);
|
|
mMaxOilCopy = mMaxOil;
|
|
} else if (mMaxOilCopy != dComIfGs_getMaxOil()) {
|
|
mMaxOil = mMaxOilCopy = dComIfGs_getMaxOil();
|
|
mctx->updateSlider(2, &mMaxOil, 0, 0, 0);
|
|
}
|
|
|
|
if (mEnableOxygenMeterCopy != mEnableOxygenMeter) {
|
|
if (mEnableOxygenMeter) {
|
|
dComIfGp_onOxygenShowFlag();
|
|
} else {
|
|
dComIfGp_offOxygenShowFlag();
|
|
}
|
|
mEnableOxygenMeterCopy = mEnableOxygenMeter;
|
|
} else if (mEnableOxygenMeterCopy != dComIfGp_getOxygenShowFlag()) {
|
|
mEnableOxygenMeter = mEnableOxygenMeterCopy = dComIfGp_getOxygenShowFlag();
|
|
mctx->updateSlider(2, &mEnableOxygenMeter, 0, 0, 0);
|
|
}
|
|
|
|
if (mOxygenCopy != mOxygen) {
|
|
s32 sp30 = mOxygen - dComIfGp_getOxygen();
|
|
dComIfGp_setOxygenCount(sp30);
|
|
mOxygenCopy = mOxygen;
|
|
} else if (mOxygenCopy != dComIfGp_getOxygen()) {
|
|
mOxygen = mOxygenCopy = dComIfGp_getOxygen();
|
|
mctx->updateSlider(2, &mOxygen, 0, 0, 0);
|
|
}
|
|
|
|
if (mMaxOxygenCopy != mMaxOxygen) {
|
|
s32 sp30 = mMaxOxygen - dComIfGp_getMaxOxygen();
|
|
dComIfGp_setMaxOxygenCount(sp30);
|
|
mMaxOxygenCopy = mMaxOxygen;
|
|
} else if (mMaxOxygenCopy != dComIfGp_getMaxOxygen()) {
|
|
mMaxOxygen = mMaxOxygenCopy = dComIfGp_getMaxOxygen();
|
|
mctx->updateSlider(2, &mMaxOxygen, 0, 0, 0);
|
|
}
|
|
|
|
if (mRupeesCopy != mRupees) {
|
|
s32 sp30 = mRupees - dComIfGs_getRupee();
|
|
dComIfGp_clearItemRupeeCount();
|
|
dComIfGp_setItemRupeeCount(sp30);
|
|
mRupeesCopy = mRupees;
|
|
} else if (mRupeesCopy != dComIfGs_getRupee()) {
|
|
mRupees = mRupeesCopy = dComIfGs_getRupee();
|
|
mctx->updateSlider(2, &mRupees, 0, 0, 0);
|
|
}
|
|
|
|
if (mWalletSizeCopy != mWalletSize) {
|
|
mWalletSizeCopy = mWalletSize;
|
|
dComIfGs_setWalletSize(mWalletSize);
|
|
} else if (mWalletSizeCopy != (s16)dComIfGs_getWalletSize()) {
|
|
mWalletSize = mWalletSizeCopy = dComIfGs_getWalletSize();
|
|
mctx->updateSlider(2, &mWalletSize, 0, 0, 0);
|
|
}
|
|
|
|
if (mKeysCopy != mKeys) {
|
|
s16 sp30 = mKeys - dComIfGs_getKeyNum();
|
|
dComIfGp_clearItemKeyNumCount();
|
|
dComIfGp_setItemKeyNumCount(sp30);
|
|
mKeysCopy = mKeys;
|
|
} else if (mKeysCopy != dComIfGs_getKeyNum()) {
|
|
mKeys = mKeysCopy = dComIfGs_getKeyNum();
|
|
mctx->updateSlider(2, &mKeys, 0, 0, 0);
|
|
}
|
|
|
|
if (mPoesCopy != mPoes) {
|
|
dComIfGs_setPohSpiritNum(mPoes);
|
|
mPoesCopy = mPoes;
|
|
} else if (mPoesCopy != dComIfGs_getPohSpiritNum()) {
|
|
mPoes = mPoesCopy = dComIfGs_getPohSpiritNum();
|
|
mctx->updateSlider(2, &mPoes, 0, 0, 0);
|
|
}
|
|
|
|
if (mDonationAmountCopy != mDonationAmount) {
|
|
dMsgObject_setOffering(mDonationAmount);
|
|
mDonationAmountCopy = mDonationAmount;
|
|
} else if (mDonationAmountCopy != dMsgObject_getOffering()) {
|
|
mDonationAmount = mDonationAmountCopy = dMsgObject_getOffering();
|
|
mctx->updateSlider(2, &mDonationAmount, 0, 0, 0);
|
|
}
|
|
|
|
releaseJORMContext(mctx);
|
|
}
|
|
#endif
|
|
|
|
u8 dMw_HIO_c::getBombFlag() {
|
|
#if DEBUG
|
|
if (mDoCPd_c::isConnect(PAD_3)) {
|
|
return mBombFlag;
|
|
} else if (mDoCPd_c::isConnect(PAD_3)) {
|
|
return mBombFlag;
|
|
} else {
|
|
return false;
|
|
}
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
u8 dMw_HIO_c::getArrowFlag() {
|
|
#if DEBUG
|
|
if (mDoCPd_c::isConnect(PAD_3)) {
|
|
return mArrowFlag;
|
|
} else {
|
|
return false;
|
|
}
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
u8 dMw_HIO_c::getPachinkoFlag() {
|
|
#if DEBUG
|
|
if (mDoCPd_c::isConnect(PAD_3)) {
|
|
return mPachinkoFlag;
|
|
} else {
|
|
return false;
|
|
}
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
#if DEBUG
|
|
void dMw_HIO_c::itemBitCheck() {
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
u8 var_r29;
|
|
|
|
if (dComIfGs_isGetMagicUseFlag())
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mEnableMagicCopy != var_r29) {
|
|
mEnableMagicCopy = mEnableMagic;
|
|
mEnableMagic = var_r29;
|
|
mctx->updateSlider(2, &mEnableMagic, 0, 0, 0);
|
|
}
|
|
|
|
if (mEnableArrowDrops != mEnableArrowDropsCopy) {
|
|
mEnableArrowDropsCopy = mEnableArrowDrops;
|
|
if (mEnableArrowDrops) {
|
|
dComIfGs_onItemFirstBit(dItemNo_BOW_e);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(dItemNo_BOW_e);
|
|
}
|
|
}
|
|
|
|
if (mEnableArrowDrops != (u8)dComIfGs_isItemFirstBit(dItemNo_BOW_e)) {
|
|
mEnableArrowDrops = mEnableArrowDropsCopy = dComIfGs_isItemFirstBit(dItemNo_BOW_e);
|
|
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
mctx->startUpdateNode(this);
|
|
mctx->updateCheckBox(2, &mEnableArrowDrops, 1, 0);
|
|
mctx->endUpdateNode();
|
|
releaseJORMContext(mctx);
|
|
}
|
|
|
|
for (int i = 0; i < 24; i++) {
|
|
if (mItemsCopy[i] != dComIfGs_getItem((u8)i, false)) {
|
|
field_0x7a[i] = 1;
|
|
mItemsCopy[i] = mItems[i];
|
|
mItems[i] = dComIfGs_getItem((u8)i, false);
|
|
mctx->updateComboBox(2, &mItems[i], 0);
|
|
}
|
|
}
|
|
|
|
if (mScentCopy != dComIfGs_getCollectSmell()) {
|
|
field_0xa8 = 1;
|
|
mScentCopy = mScent;
|
|
mScent = dComIfGs_getCollectSmell();
|
|
mctx->updateComboBox(2, &mScent, 0);
|
|
}
|
|
|
|
var_r29 = field_0x101[0];
|
|
if (dComIfGs_isCollectClothes(2)) {
|
|
var_r29 = 3;
|
|
} else if (dComIfGs_isCollectClothes(1)) {
|
|
var_r29 = 2;
|
|
} else if (dComIfGs_isCollectClothes(0)) {
|
|
var_r29 = 1;
|
|
} else {
|
|
var_r29 = 0;
|
|
}
|
|
|
|
if (field_0x101[0] != var_r29) {
|
|
field_0x101[0] = field_0xf9[0];
|
|
field_0xf9[0] = var_r29;
|
|
mctx->updateComboBox(2, &field_0xf9[0], 0);
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
static u8 m_sword_item[] = {dItemNo_SWORD_e, dItemNo_MASTER_SWORD_e, dItemNo_LIGHT_SWORD_e, dItemNo_WOOD_STICK_e};
|
|
if (dComIfGs_isItemFirstBit(m_sword_item[i]))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mSwordsCopy[i] != var_r29) {
|
|
mSwordsCopy[i] = mSwords[i];
|
|
mSwords[i] = var_r29;
|
|
mctx->updateSlider(2, &mSwords[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
static u8 m_cloth_item[] = {dItemNo_WEAR_KOKIRI_e, dItemNo_ARMOR_e, dItemNo_WEAR_ZORA_e};
|
|
if (dComIfGs_isItemFirstBit(m_cloth_item[i]))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mClothesCopy[i] != var_r29) {
|
|
mClothesCopy[i] = mClothes[i];
|
|
mClothes[i] = var_r29;
|
|
mctx->updateSlider(2, &mClothes[i], 0, 0, 0);
|
|
}
|
|
|
|
static u8 m_shield_item[] = {dItemNo_SHIELD_e, dItemNo_HYLIA_SHIELD_e, dItemNo_WOOD_SHIELD_e};
|
|
if (dComIfGs_isItemFirstBit(m_shield_item[i]))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mShieldsCopy[i] != var_r29) {
|
|
mShieldsCopy[i] = mShields[i];
|
|
mShields[i] = var_r29;
|
|
mctx->updateSlider(2, &mShields[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
if (dComIfGs_isItemFirstBit(dItemNo_BOMB_BAG_LV2_e))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mBombBagLV2Copy != var_r29) {
|
|
mBombBagLV2Copy = mBombBagLV2;
|
|
mBombBagLV2 = var_r29;
|
|
mctx->updateSlider(2, &mBombBagLV2, 0, 0, 0);
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
static u8 m_lv2_dun_key[] = {dItemNo_L2_KEY_PIECES1_e, dItemNo_L2_KEY_PIECES2_e, dItemNo_L2_KEY_PIECES3_e};
|
|
if (dComIfGs_isItemFirstBit(m_lv2_dun_key[i]))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mLV2KeyShardsCopy[i] != var_r29) {
|
|
mLV2KeyShardsCopy[i] = mLV2KeyShards[i];
|
|
mLV2KeyShards[i] = var_r29;
|
|
mctx->updateSlider(2, &mLV2KeyShards[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
static u8 m_lv5_dun_item[] = {dItemNo_TOMATO_PUREE_e, dItemNo_TASTE_e};
|
|
if (dComIfGs_isItemFirstBit(m_lv5_dun_item[i]))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mLV5ItemCopy[i] != var_r29) {
|
|
mLV5ItemCopy[i] = mLV5Item[i];
|
|
mLV5Item[i] = var_r29;
|
|
mctx->updateSlider(2, &mLV5Item[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 24; i++) {
|
|
if (dComIfGs_isItemFirstBit(i + dItemNo_M_BEETLE_e))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mGoldBugCopy[i] != var_r29) {
|
|
mGoldBugCopy[i] = mGoldBug[i];
|
|
mGoldBug[i] = var_r29;
|
|
mctx->updateSlider(2, &mGoldBug[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
var_r29 = field_0x101[1];
|
|
if (dComIfGs_isCollectSword(1)) {
|
|
var_r29 = 2;
|
|
} else if (dComIfGs_isCollectSword(0)) {
|
|
var_r29 = 1;
|
|
} else if (dComIfGs_isCollectSword(2)) {
|
|
var_r29 = 3;
|
|
} else if (dComIfGs_isCollectSword(3)) {
|
|
var_r29 = 4;
|
|
} else {
|
|
var_r29 = 0;
|
|
}
|
|
|
|
if (field_0x101[1] != var_r29) {
|
|
field_0x101[1] = field_0xf9[1];
|
|
field_0xf9[1] = var_r29;
|
|
mctx->updateComboBox(2, &field_0xf9[1], 0);
|
|
}
|
|
|
|
var_r29 = field_0x101[2];
|
|
if (dComIfGs_isCollectShield(3)) {
|
|
var_r29 = 4;
|
|
} else if (dComIfGs_isCollectShield(2)) {
|
|
var_r29 = 3;
|
|
} else if (dComIfGs_isCollectShield(1)) {
|
|
var_r29 = 2;
|
|
} else if (dComIfGs_isCollectShield(0)) {
|
|
var_r29 = 1;
|
|
} else {
|
|
var_r29 = 0;
|
|
}
|
|
|
|
if (field_0x101[2] != var_r29) {
|
|
field_0x101[2] = field_0xf9[2];
|
|
field_0xf9[2] = var_r29;
|
|
mctx->updateComboBox(2, &field_0xf9[2], 0);
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
if (dComIfGs_isCollectCrystal(i))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mFusedShadowCopy[i] != var_r29) {
|
|
mFusedShadowCopy[i] = mFusedShadow[i];
|
|
mFusedShadow[i] = var_r29;
|
|
mctx->updateSlider(2, &mFusedShadow[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
if (dComIfGs_isCollectMirror(i))
|
|
var_r29 = 1;
|
|
else
|
|
var_r29 = 0;
|
|
|
|
if (mMirrorShardCopy[i] != var_r29) {
|
|
mMirrorShardCopy[i] = mMirrorShard[i];
|
|
mMirrorShard[i] = var_r29;
|
|
mctx->updateSlider(2, &mMirrorShard[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
releaseJORMContext(mctx);
|
|
}
|
|
|
|
void dMw_HIO_c::itemNumHIO() {
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
|
|
if (mArrowNumCopy != mArrowNum) {
|
|
s16 count = mArrowNum - dComIfGs_getArrowNum();
|
|
dComIfGp_setItemArrowNumCount(count);
|
|
mArrowNumCopy = mArrowNum;
|
|
} else if (mArrowNumCopy != dComIfGs_getArrowNum()) {
|
|
mArrowNum = mArrowNumCopy = dComIfGs_getArrowNum();
|
|
mctx->updateSlider(2, &mArrowNum, 0, 0, 0);
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
if (mBottleNumCopy[i] != mBottleNum[i]) {
|
|
s16 count = mBottleNum[i] - dComIfGs_getBottleNum(i);
|
|
dComIfGs_addBottleNum(i, count);
|
|
mBottleNumCopy[i] = mBottleNum[i];
|
|
} else if (mBottleNumCopy[i] != dComIfGs_getBottleNum(i)) {
|
|
mBottleNum[i] = mBottleNumCopy[i] = dComIfGs_getBottleNum(i);
|
|
mctx->updateSlider(2, &mBottleNum[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
if (mBombNumCopy[i] != mBombNum[i]) {
|
|
s16 count = mBombNum[i] - dComIfGs_getBombNum(i);
|
|
dComIfGp_setItemBombNumCount(i, count);
|
|
mBombNumCopy[i] = mBombNum[i];
|
|
} else if (mBombNumCopy[i] != dComIfGs_getBombNum(i)) {
|
|
mBombNum[i] = mBombNumCopy[i] = dComIfGs_getBombNum(i);
|
|
mctx->updateSlider(2, &mBombNum[i], 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
if (mSeedNumCopy != mSeedNum) {
|
|
s16 count = mSeedNum - dComIfGs_getPachinkoNum();
|
|
dComIfGp_setItemPachinkoNumCount(count);
|
|
mSeedNumCopy = mSeedNum;
|
|
} else if (mSeedNumCopy != dComIfGs_getPachinkoNum()) {
|
|
mSeedNum = mSeedNumCopy = dComIfGs_getPachinkoNum();
|
|
mctx->updateSlider(2, &mSeedNum, 0, 0, 0);
|
|
}
|
|
|
|
releaseJORMContext(mctx);
|
|
}
|
|
|
|
void dMw_HIO_c::itemHIO() {
|
|
playerStatusHIO();
|
|
itemNumHIO();
|
|
itemBitCheck();
|
|
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
|
|
if (mEnableMagic != mEnableMagicCopy) {
|
|
mEnableMagicCopy = mEnableMagic;
|
|
if (mEnableMagic) {
|
|
dComIfGs_onGetMagicUseFlag();
|
|
} else {
|
|
dComIfGs_offGetMagicUseFlag();
|
|
}
|
|
}
|
|
|
|
if (mEnableMagic != (u8)dComIfGs_isGetMagicUseFlag()) {
|
|
mEnableMagic = mEnableMagicCopy = dComIfGs_isGetMagicUseFlag();
|
|
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
mctx->startUpdateNode(this);
|
|
mctx->updateCheckBox(2, &mEnableMagic, 1, 0);
|
|
mctx->endUpdateNode();
|
|
releaseJORMContext(mctx);
|
|
}
|
|
|
|
if (mEnableArrowDrops != mEnableArrowDropsCopy) {
|
|
mEnableArrowDropsCopy = mEnableArrowDrops;
|
|
if (mEnableArrowDrops) {
|
|
dComIfGs_onItemFirstBit(dItemNo_BOW_e);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(dItemNo_BOW_e);
|
|
}
|
|
}
|
|
|
|
if (mEnableArrowDrops != (u8)dComIfGs_isItemFirstBit(dItemNo_BOW_e)) {
|
|
mEnableArrowDrops = mEnableArrowDropsCopy = dComIfGs_isItemFirstBit(dItemNo_BOW_e);
|
|
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
mctx->startUpdateNode(this);
|
|
mctx->updateCheckBox(2, &mEnableArrowDrops, 1, 0);
|
|
mctx->endUpdateNode();
|
|
releaseJORMContext(mctx);
|
|
}
|
|
|
|
for (int i = 0; i < 24; i++) {
|
|
if (mItems[i] != mItemsCopy[i]) {
|
|
if (i == 20 && field_0x7a[i] == 0) {
|
|
switch (mItems[i]) {
|
|
case dItemNo_NONE_e:
|
|
case dItemNo_FISHING_ROD_1_e:
|
|
case dItemNo_BEE_ROD_e:
|
|
case dItemNo_WORM_ROD_e:
|
|
dComIfGs_offItemFirstBit(dItemNo_ZORAS_JEWEL_e);
|
|
break;
|
|
case dItemNo_JEWEL_ROD_e:
|
|
case dItemNo_JEWEL_BEE_ROD_e:
|
|
case dItemNo_JEWEL_WORM_ROD_e:
|
|
case dItemNo_ZORAS_JEWEL_e:
|
|
dComIfGs_onItemFirstBit(dItemNo_ZORAS_JEWEL_e);
|
|
break;
|
|
}
|
|
}
|
|
|
|
dComIfGs_setItem((u8)i, mItems[i]);
|
|
|
|
if (mItems[i] == dItemNo_HOT_SPRING_e) {
|
|
dMeter2Info_setHotSpringTimer(i);
|
|
}
|
|
|
|
if (mItems[i] == dItemNo_BEE_CHILD_e && field_0x7a[i] == 0) {
|
|
dComIfGs_setBottleNum(i - 11, dComIfGs_getBottleMax());
|
|
}
|
|
|
|
mItemsCopy[i] = mItems[i];
|
|
field_0x7a[i] = 0;
|
|
}
|
|
}
|
|
|
|
if (mScent != mScentCopy) {
|
|
dMsgObject_setSmellType(mScent);
|
|
mScentCopy = mScent;
|
|
field_0xa8 = 0;
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
if (mSwords[i] != mSwordsCopy[i]) {
|
|
static u8 m_sword_item[] = {dItemNo_SWORD_e, dItemNo_MASTER_SWORD_e, dItemNo_LIGHT_SWORD_e, dItemNo_WOOD_STICK_e};
|
|
if (mSwords[i] != 0) {
|
|
dComIfGs_onItemFirstBit(m_sword_item[i]);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(m_sword_item[i]);
|
|
if (m_sword_item[i] == dComIfGs_getSelectEquipSword()) {
|
|
dMeter2Info_setSword(dItemNo_NONE_e, false);
|
|
}
|
|
}
|
|
|
|
mSwordsCopy[i] = mSwords[i];
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
if (mClothes[i] != mClothesCopy[i]) {
|
|
static u8 m_cloth_item[] = {dItemNo_WEAR_KOKIRI_e, dItemNo_ARMOR_e, dItemNo_WEAR_ZORA_e};
|
|
if (mClothes[i] != 0) {
|
|
dComIfGs_onItemFirstBit(m_cloth_item[i]);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(m_cloth_item[i]);
|
|
|
|
}
|
|
mClothesCopy[i] = mClothes[i];
|
|
}
|
|
|
|
if (mShields[i] != mShieldsCopy[i]) {
|
|
static u8 m_shield_item[] = {dItemNo_SHIELD_e, dItemNo_HYLIA_SHIELD_e, dItemNo_WOOD_SHIELD_e};
|
|
if (mShields[i] != 0) {
|
|
dComIfGs_onItemFirstBit(m_shield_item[i]);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(m_shield_item[i]);
|
|
|
|
}
|
|
mShieldsCopy[i] = mShields[i];
|
|
}
|
|
}
|
|
|
|
if (mBombBagLV2 != mBombBagLV2Copy) {
|
|
if (mBombBagLV2) {
|
|
dComIfGs_onItemFirstBit(dItemNo_BOMB_BAG_LV2_e);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(dItemNo_BOMB_BAG_LV2_e);
|
|
}
|
|
mBombBagLV2Copy = mBombBagLV2;
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
static u8 m_lv2_dun_key[] = {dItemNo_L2_KEY_PIECES1_e, dItemNo_L2_KEY_PIECES2_e, dItemNo_L2_KEY_PIECES3_e};
|
|
if (mLV2KeyShards[i] != mLV2KeyShardsCopy[i]) {
|
|
if (mLV2KeyShards[i] != 0) {
|
|
dComIfGs_onItemFirstBit(m_lv2_dun_key[i]);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(m_lv2_dun_key[i]);
|
|
}
|
|
mLV2KeyShardsCopy[i] = mLV2KeyShards[i];
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
static u8 m_lv5_dun_item[] = {dItemNo_TOMATO_PUREE_e, dItemNo_TASTE_e};
|
|
if (mLV5Item[i] != mLV5ItemCopy[i]) {
|
|
if (mLV5Item[i] != 0) {
|
|
dComIfGs_onItemFirstBit(m_lv5_dun_item[i]);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(m_lv5_dun_item[i]);
|
|
}
|
|
mLV5ItemCopy[i] = mLV5Item[i];
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 24; i++) {
|
|
if (mGoldBug[i] != mGoldBugCopy[i]) {
|
|
if (mGoldBug[i] != 0) {
|
|
dComIfGs_onItemFirstBit(i + dItemNo_M_BEETLE_e);
|
|
} else {
|
|
dComIfGs_offItemFirstBit(i + dItemNo_M_BEETLE_e);
|
|
}
|
|
mGoldBugCopy[i] = mGoldBug[i];
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
if (i == 0) {
|
|
if (g_playerKind == 2) {
|
|
field_0xf9[i] = 0;
|
|
} else if (g_playerKind == 3) {
|
|
field_0xf9[i] = 1;
|
|
} else if (g_playerKind == 4) {
|
|
field_0xf9[i] = 2;
|
|
}
|
|
}
|
|
|
|
if (field_0xf9[i] != field_0x101[i]) {
|
|
switch (i) {
|
|
case 0:
|
|
for (int j = 0; j < 8; j++) {
|
|
dComIfGs_offCollectClothes(j);
|
|
}
|
|
|
|
if (field_0xf9[i] != 0) {
|
|
dComIfGs_setCollectClothes(field_0xf9[i] - 1);
|
|
} else {
|
|
dComIfGs_setSelectEquipClothes(dItemNo_WEAR_CASUAL_e);
|
|
}
|
|
break;
|
|
case 1:
|
|
for (int j = 0; j < 8; j++) {
|
|
dComIfGs_offCollectSword(j);
|
|
}
|
|
|
|
if (field_0xf9[i] != 0) {
|
|
dComIfGs_setCollectSword(field_0xf9[i] - 1);
|
|
} else {
|
|
dComIfGs_setSelectEquipSword(dItemNo_NONE_e);
|
|
}
|
|
break;
|
|
case 2:
|
|
for (int j = 0; j < 8; j++) {
|
|
dComIfGs_offCollectShield(j);
|
|
}
|
|
|
|
if (field_0xf9[i] != 0) {
|
|
dComIfGs_setCollectShield(field_0xf9[i] - 1);
|
|
} else {
|
|
dComIfGs_setSelectEquipShield(dItemNo_NONE_e);
|
|
}
|
|
break;
|
|
}
|
|
|
|
field_0x101[i] = field_0xf9[i];
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
if (mFusedShadow[i] != mFusedShadowCopy[i]) {
|
|
if (mFusedShadow[i] != 0) {
|
|
dComIfGs_onCollectCrystal(i);
|
|
} else {
|
|
dComIfGs_offCollectCrystal(i);
|
|
}
|
|
mFusedShadowCopy[i] = mFusedShadow[i];
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
if (mMirrorShard[i] != mMirrorShardCopy[i]) {
|
|
if (mMirrorShard[i] != 0) {
|
|
dComIfGs_onCollectMirror(i);
|
|
} else {
|
|
dComIfGs_offCollectMirror(i);
|
|
}
|
|
mMirrorShardCopy[i] = mMirrorShard[i];
|
|
}
|
|
}
|
|
|
|
releaseJORMContext(mctx);
|
|
}
|
|
#endif
|
|
|
|
dMw_DHIO_c::dMw_DHIO_c() {
|
|
for (int i = 0; i < 32; i++) {
|
|
mMap[i] = false;
|
|
mCompass[i] = false;
|
|
mBossKey[i] = false;
|
|
mBossClear[i] = false;
|
|
mHeartContainer[i] = false;
|
|
mBossDemo[i] = false;
|
|
mPortal[i] = false;
|
|
mMidBossClear[i] = false;
|
|
mMapCopy[i] = false;
|
|
mCompassCopy[i] = false;
|
|
mBossKeyCopy[i] = false;
|
|
mBossClearCopy[i] = false;
|
|
mHeartContainerCopy[i] = false;
|
|
mBossDemoCopy[i] = false;
|
|
mPortalCopy[i] = false;
|
|
mMidBossClearCopy[i] = false;
|
|
}
|
|
}
|
|
|
|
#if DEBUG
|
|
void dMw_DHIO_c::genMessage(JORMContext* mctx) {
|
|
static const char* name_str[] = {
|
|
"\n*****0 ラトアーヌ地方*****",
|
|
"\n*****1 ハイラル城*****",
|
|
"\n*****2 フィローネ地方*****",
|
|
"\n*****3 オルディン地方*****",
|
|
"\n*****4 ラネール地方*****",
|
|
"\n*****5 影の世界*****",
|
|
"\n*****6 環状フィールド*****",
|
|
"\n*****7 空き*****",
|
|
"\n*****8 空き*****",
|
|
"\n*****9 空き*****",
|
|
"\n*****10 空き*****",
|
|
"\n*****11 空き*****",
|
|
"\n*****12 空き*****",
|
|
"\n*****13 空き*****",
|
|
"\n*****14 空き*****",
|
|
"\n*****15 空き*****",
|
|
"\n*****16 L-1ダンジョン*****",
|
|
"\n*****17 L-2ダンジョン*****",
|
|
"\n*****18 L-3ダンジョン*****",
|
|
"\n*****19 L-4ダンジョン*****",
|
|
"\n*****20 L-5ダンジョン*****",
|
|
"\n*****21 L-6ダンジョン*****",
|
|
"\n*****22 L-7ダンジョン*****",
|
|
"\n*****23 L-8ダンジョン*****",
|
|
"\n*****24 最終ダンジョン*****",
|
|
"\n*****25 空き*****",
|
|
"\n*****26 空き*****",
|
|
"\n*****27 空き*****",
|
|
"\n*****28 空き*****",
|
|
"\n*****29 空き*****",
|
|
"\n*****30 空き*****",
|
|
"\n*****31 デフォルト*****",
|
|
};
|
|
|
|
for (int i = 16; i < 25; i++) {
|
|
mctx->genLabel(name_str[i], 0);
|
|
mctx->genCheckBox("マップ", &mMap[i], 1);
|
|
mctx->genCheckBox("コンパス", &mCompass[i], 1);
|
|
mctx->genCheckBox("ボス鍵", &mBossKey[i], 1);
|
|
mctx->genCheckBox("ワープ", &mPortal[i], 1);
|
|
mctx->genCheckBox("中ボス攻略", &mMidBossClear[i], 1);
|
|
mctx->genCheckBox("ボス攻略", &mBossClear[i], 1);
|
|
mctx->genCheckBox("ハートの器", &mHeartContainer[i], 1);
|
|
mctx->genCheckBox("ボスデモ", &mBossDemo[i], 1);
|
|
}
|
|
}
|
|
|
|
void dMw_DHIO_c::bitCheck() {
|
|
JORMContext* mctx = attachJORMContext(8);
|
|
u8 var_r28;
|
|
|
|
for (int i = 0; i < 32; i++) {
|
|
if (dComIfGs_isDungeonItemMap(i))
|
|
var_r28 = 1;
|
|
else
|
|
var_r28 = 0;
|
|
|
|
if (mMapCopy[i] != var_r28) {
|
|
mMapCopy[i] = mMap[i];
|
|
mMap[i] = var_r28;
|
|
mctx->updateSlider(2, &mMap[i], 0, 0, 0);
|
|
}
|
|
|
|
if (mMap[i] != mMapCopy[i]) {
|
|
if (mMap[i] != 0) {
|
|
dComIfGs_onDungeonItemMap(i);
|
|
} else {
|
|
dComIfGs_offDungeonItemMap(i);
|
|
}
|
|
mMapCopy[i] = mMap[i];
|
|
}
|
|
|
|
if (dComIfGs_isDungeonItemCompass(i))
|
|
var_r28 = 1;
|
|
else
|
|
var_r28 = 0;
|
|
|
|
if (mCompassCopy[i] != var_r28) {
|
|
mCompassCopy[i] = mCompass[i];
|
|
mCompass[i] = var_r28;
|
|
mctx->updateSlider(2, &mCompass[i], 0, 0, 0);
|
|
}
|
|
|
|
if (mCompass[i] != mCompassCopy[i]) {
|
|
if (mCompass[i] != 0) {
|
|
dComIfGs_onDungeonItemCompass(i);
|
|
} else {
|
|
dComIfGs_offDungeonItemCompass(i);
|
|
}
|
|
mCompassCopy[i] = mCompass[i];
|
|
}
|
|
|
|
if (dComIfGs_isDungeonItemBossKey(i))
|
|
var_r28 = 1;
|
|
else
|
|
var_r28 = 0;
|
|
|
|
if (mBossKeyCopy[i] != var_r28) {
|
|
mBossKeyCopy[i] = mBossKey[i];
|
|
mBossKey[i] = var_r28;
|
|
mctx->updateSlider(2, &mBossKey[i], 0, 0, 0);
|
|
}
|
|
|
|
if (mBossKey[i] != mBossKeyCopy[i]) {
|
|
if (mBossKey[i] != 0) {
|
|
dComIfGs_onDungeonItemBossKey(i);
|
|
} else {
|
|
dComIfGs_offDungeonItemBossKey(i);
|
|
}
|
|
mBossKeyCopy[i] = mBossKey[i];
|
|
}
|
|
|
|
if (dComIfGs_isDungeonItemWarp(i))
|
|
var_r28 = 1;
|
|
else
|
|
var_r28 = 0;
|
|
|
|
if (mPortalCopy[i] != var_r28) {
|
|
mPortalCopy[i] = mPortal[i];
|
|
mPortal[i] = var_r28;
|
|
mctx->updateSlider(2, &mPortal[i], 0, 0, 0);
|
|
}
|
|
|
|
if (mPortal[i] != mPortalCopy[i]) {
|
|
if (mPortal[i] != 0) {
|
|
dComIfGs_onDungeonItemWarp(i);
|
|
} else {
|
|
dComIfGs_offDungeonItemWarp(i);
|
|
}
|
|
mPortalCopy[i] = mPortal[i];
|
|
}
|
|
|
|
if (dComIfGs_isStageBossEnemy(i))
|
|
var_r28 = 1;
|
|
else
|
|
var_r28 = 0;
|
|
|
|
if (mBossClearCopy[i] != var_r28) {
|
|
mBossClearCopy[i] = mBossClear[i];
|
|
mBossClear[i] = var_r28;
|
|
mctx->updateSlider(2, &mBossClear[i], 0, 0, 0);
|
|
}
|
|
|
|
if (mBossClear[i] != mBossClearCopy[i]) {
|
|
if (mBossClear[i] != 0) {
|
|
dComIfGs_onStageBossEnemy(i);
|
|
} else {
|
|
dComIfGs_offStageBossEnemy(i);
|
|
}
|
|
mBossClearCopy[i] = mBossClear[i];
|
|
}
|
|
|
|
if (dComIfGs_isStageMiddleBoss(i))
|
|
var_r28 = 1;
|
|
else
|
|
var_r28 = 0;
|
|
|
|
if (mMidBossClearCopy[i] != var_r28) {
|
|
mMidBossClearCopy[i] = mMidBossClear[i];
|
|
mMidBossClear[i] = var_r28;
|
|
mctx->updateSlider(2, &mMidBossClear[i], 0, 0, 0);
|
|
}
|
|
|
|
if (mMidBossClear[i] != mMidBossClearCopy[i]) {
|
|
if (mMidBossClear[i] != 0) {
|
|
dComIfGs_onStageMiddleBoss(i);
|
|
} else {
|
|
dComIfGs_offStageMiddleBoss(i);
|
|
}
|
|
mMidBossClearCopy[i] = mMidBossClear[i];
|
|
}
|
|
|
|
if (dComIfGs_isStageLife(i))
|
|
var_r28 = 1;
|
|
else
|
|
var_r28 = 0;
|
|
|
|
if (mHeartContainerCopy[i] != var_r28) {
|
|
mHeartContainerCopy[i] = mHeartContainer[i];
|
|
mHeartContainer[i] = var_r28;
|
|
mctx->updateSlider(2, &mHeartContainer[i], 0, 0, 0);
|
|
}
|
|
|
|
if (mHeartContainer[i] != mHeartContainerCopy[i]) {
|
|
if (mHeartContainer[i] != 0) {
|
|
dComIfGs_onStageLife(i);
|
|
} else {
|
|
dComIfGs_offStageLife(i);
|
|
}
|
|
mHeartContainerCopy[i] = mHeartContainer[i];
|
|
}
|
|
|
|
if (dComIfGs_isStageBossDemo(i))
|
|
var_r28 = 1;
|
|
else
|
|
var_r28 = 0;
|
|
|
|
if (mBossDemoCopy[i] != var_r28) {
|
|
mBossDemoCopy[i] = mBossDemo[i];
|
|
mBossDemo[i] = var_r28;
|
|
mctx->updateSlider(2, &mBossDemo[i], 0, 0, 0);
|
|
}
|
|
|
|
if (mBossDemo[i] != mBossDemoCopy[i]) {
|
|
if (mBossDemo[i] != 0) {
|
|
dComIfGs_onStageBossDemo(i);
|
|
} else {
|
|
dComIfGs_offStageBossDemo(i);
|
|
}
|
|
mBossDemoCopy[i] = mBossDemo[i];
|
|
}
|
|
}
|
|
|
|
releaseJORMContext(mctx);
|
|
}
|
|
#endif
|
|
|
|
dMw_HIO_c g_mwHIO;
|
|
|
|
dMw_DHIO_c g_mwDHIO;
|