From eba2c4cb0ffdee3adce5de9919e82cd4befe98c6 Mon Sep 17 00:00:00 2001 From: Prakxo <87568477+Prakxo@users.noreply.github.com> Date: Thu, 5 Oct 2023 20:39:15 +0200 Subject: m_cockroach OK (#106) * m_cockroach OK * fixes * fixes * fix * forgor which change was mine lol * space --------- Co-authored-by: emilybrooks --- src/code/m_cockroach.c | 173 +++++++++++++++++++++++++++++++++++++++++++ src/code/m_start_data_init.c | 4 +- 2 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 src/code/m_cockroach.c (limited to 'src/code') diff --git a/src/code/m_cockroach.c b/src/code/m_cockroach.c new file mode 100644 index 0000000..da38126 --- /dev/null +++ b/src/code/m_cockroach.c @@ -0,0 +1,173 @@ + +#include "m_cockroach.h" +#include "m_common_data.h" +#include "m_house.h" +#include "m_field_info.h" +#include "code_variables.h" +#include "attributes.h" + +s32 mCkRh_GokiFamilyCount2Good(s32 count) { + if (count < 0) { + return 0; + } + + if (count > mCkRh_MAX_NUM) { + return mCkRh_MAX_NUM; + } + + return count; +} + +s32 mCkRh_InitGokiSaveData_1Room(s32 player) { + common_data.homes[player & 3].goki.num = 0; + common_data.homes[player & 3].goki.pad = 0; + common_data.homes[player & 3].goki.time.year = common_data.time.rtcTime.year; + common_data.homes[player & 3].goki.time.month = common_data.time.rtcTime.month; + common_data.homes[player & 3].goki.time.day = common_data.time.rtcTime.day; +} + +void mCkRh_InitGokiSaveData_1Room_ByHomeData(mHm_hs_c* home) { + home->goki.num = 0; + home->goki.pad = 0; + home->goki.time.year = common_data.time.rtcTime.year; + home->goki.time.month = common_data.time.rtcTime.month; + home->goki.time.day = common_data.time.rtcTime.day; +} + +void mCkRh_InitGokiSaveData_InitNewPlayer() { + s32 i; + + for (i = 0; i < PLAYER_NUM; i++) { + mCkRh_InitGokiSaveData_1Room(i); + } +} + +void mCkRh_SavePlayTime(s32 player) { + s32 home; + + if (player < PLAYER_NUM) { + home = mHS_get_arrange_idx(player) & 3; + common_data.homes[home].goki.time.year = common_data.time.rtcTime.year; + common_data.homes[home].goki.time.month = common_data.time.rtcTime.month; + common_data.homes[home].goki.time.day = common_data.time.rtcTime.day; + } +} + +s32 mCkRh_DaysGapCompareWithSaveTime(s32 player) { + s32 home; + s32 pad UNUSED; + + if (player < PLAYER_NUM) { + lbRTC_time_c gokiTime; + + home = mHS_get_arrange_idx(player) & 3; + gokiTime.year = common_data.homes[home].goki.time.year; + gokiTime.month = common_data.homes[home].goki.time.month; + gokiTime.day = common_data.homes[home].goki.time.day; + + gokiTime.weekday = lbRTC_Week(gokiTime.year, gokiTime.month, gokiTime.day); + gokiTime.hour = 1; + gokiTime.min = 1; + gokiTime.sec = 1; + + return lbRTC_GetIntervalDays(&gokiTime, &common_data.time.rtcTime); + } else { + return 0; + } +} + +void mCkRh_DecideNowGokiFamilyCount(s32 player) { + s32 dayGap; + s32 home; + + if (player < PLAYER_NUM) { + dayGap = mCkRh_DaysGapCompareWithSaveTime(player); + home = mHS_get_arrange_idx(player) & 3; + if (dayGap > 6) { + s32 gokiNum; + s32 count; + gokiNum = common_data.homes[home].goki.num; + count = gokiNum > 0 ? dayGap : dayGap - 6; + common_data.homes[home].goki.num = mCkRh_GokiFamilyCount2Good(count + gokiNum); + } + } +} + +s32 mCkRh_PlussGokiN_NowRoom(s32 count) { + u16 fieldId = mFI_GetFieldId(); + s32 player; + s32 housefieldId; + s32 homeId; + s32 num; + s32 pad[1] UNUSED; + + if (FI_IS_PLAYER_ROOM(fieldId)) { + player = common_data.player_no; + housefieldId = FI_GET_PLAYER_ROOM_NO(fieldId); + homeId = mHS_get_arrange_idx(player) & 3; + if ((player < PLAYER_NUM) && (housefieldId == homeId)) { + num = common_data.homes[homeId].goki.num; + + common_data.homes[homeId].goki.num = mCkRh_GokiFamilyCount2Good(count + num); + return TRUE; + } + } + return FALSE; +} + +s32 mCkRh_MinusGokiN_NowRoom(s32 count) { + u16 fieldId = mFI_GetFieldId(); + s32 player; + s32 housefieldId; + s32 homeId; + s32 num; + s32 pad[1] UNUSED; + + if (FI_IS_PLAYER_ROOM(fieldId)) { + player = common_data.player_no; + housefieldId = FI_GET_PLAYER_ROOM_NO(fieldId); + homeId = mHS_get_arrange_idx(player) & 3; + if ((player < PLAYER_NUM) && (housefieldId == homeId)) { + num = common_data.homes[homeId].goki.num; + common_data.homes[homeId].goki.num = mCkRh_GokiFamilyCount2Good(num - count); + return TRUE; + } + } + return FALSE; +} + +s32 mCkRh_NowSceneGokiFamilyCount() { + u16 fieldid = mFI_GetFieldId(); + + if (FI_IS_PLAYER_ROOM(fieldid)) { + return common_data.homes[FI_GET_PLAYER_ROOM_NO(fieldid)].goki.num; + } else { + return 0; + } +} + +void mCkRh_InitCanLookGokiCount() { + CanLookGokiCount = 0; +} + +s32 mCkRh_CalcCanLookGokiCount(s32 count) { + s32 calc = count + CanLookGokiCount; + + if (calc < 0) { + CanLookGokiCount = 0; + return FALSE; + } + + if (calc > mCkRh_MAX_LOOK_NUM) { + CanLookGokiCount = mCkRh_MAX_LOOK_NUM; + return FALSE; + } + + CanLookGokiCount = calc; + + return TRUE; +} + +s32 mCkRh_GetCanLookGokiCount() { + return CanLookGokiCount; +} diff --git a/src/code/m_start_data_init.c b/src/code/m_start_data_init.c index 40a16f4..380a8d1 100644 --- a/src/code/m_start_data_init.c +++ b/src/code/m_start_data_init.c @@ -1,6 +1,6 @@ #include "m_start_data_init.h" #include "6792F0.h" -#include "68AB30.h" +#include "m_cockroach.h" #include "69CB30.h" #include "6A83A0.h" #include "6B81C0.h" @@ -255,7 +255,7 @@ s32 mSDI_StartInitNew(Game* game2, s32 player_no, s32 malloc_flag) { } mPr_SetPossessionItem(common_data.now_private, 0, ITM_MONEY_1000, mPr_ITEM_COND_QUEST); - mNW_InitMyOriginal(); + mCkRh_InitGokiSaveData_InitNewPlayer(); mEv_2nd_init(&game_play->event); famicom_emu_initial_common_data(); return TRUE; -- cgit v1.2.3