diff options
| author | Prakxo <87568477+Prakxo@users.noreply.github.com> | 2023-10-05 20:39:15 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-05 11:39:15 -0700 |
| commit | eba2c4cb0ffdee3adce5de9919e82cd4befe98c6 (patch) | |
| tree | ea7f8a1d49db63cefeab71829b608c1d4955cc0d /src/code | |
| parent | 41c63f5f4db141e4e60980c354afdd4186aaa6e5 (diff) | |
m_cockroach OK (#106)
* m_cockroach OK
* fixes
* fixes
* fix
* forgor which change was mine lol
* space
---------
Co-authored-by: emilybrooks <emilybrooksemilybrooks@gmail.com>
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/m_cockroach.c | 173 | ||||
| -rw-r--r-- | src/code/m_start_data_init.c | 4 |
2 files changed, 175 insertions, 2 deletions
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; |
