mirror of https://github.com/zeldaret/botw.git
Match ShootingStarMgr::initSchedule (#114)
This commit is contained in:
parent
6198143b5f
commit
969b1c3f33
|
@ -89438,7 +89438,7 @@ Address,Quality,Size,Name
|
||||||
0x00000071010dce80,O,000004,_ZN4ksys5world15ShootingStarMgrD1Ev
|
0x00000071010dce80,O,000004,_ZN4ksys5world15ShootingStarMgrD1Ev
|
||||||
0x00000071010dce84,O,000036,_ZN4ksys5world15ShootingStarMgrD0Ev
|
0x00000071010dce84,O,000036,_ZN4ksys5world15ShootingStarMgrD0Ev
|
||||||
0x00000071010dcea8,O,000036,_ZN4ksys5world15ShootingStarMgr5init_EPN4sead4HeapE
|
0x00000071010dcea8,O,000036,_ZN4ksys5world15ShootingStarMgr5init_EPN4sead4HeapE
|
||||||
0x00000071010dcecc,M,000620,_ZN4ksys5world15ShootingStarMgr12initScheduleEv
|
0x00000071010dcecc,O,000620,_ZN4ksys5world15ShootingStarMgr12initScheduleEv
|
||||||
0x00000071010dd138,O,000368,_ZN4ksys5world15ShootingStarMgr5calc_Ev
|
0x00000071010dd138,O,000368,_ZN4ksys5world15ShootingStarMgr5calc_Ev
|
||||||
0x00000071010dd2a8,O,000116,_ZN4ksys5world15ShootingStarMgr15isScheduledTimeEv
|
0x00000071010dd2a8,O,000116,_ZN4ksys5world15ShootingStarMgr15isScheduledTimeEv
|
||||||
0x00000071010dd31c,U,000308,
|
0x00000071010dd31c,U,000308,
|
||||||
|
|
Can't render this file because it is too large.
|
|
@ -30,27 +30,32 @@ void ShootingStarMgr::init_(sead::Heap* heap) {
|
||||||
initSchedule();
|
initSchedule();
|
||||||
}
|
}
|
||||||
|
|
||||||
// NON_MATCHING
|
|
||||||
void ShootingStarMgr::initSchedule() {
|
void ShootingStarMgr::initSchedule() {
|
||||||
if (sHours.start >= sHours.end) {
|
const s32& start_hour = sHours.start;
|
||||||
sead::FixedObjArray<u32, 24> validHours;
|
const s32 end_hour = sHours.end - 1;
|
||||||
|
|
||||||
if (sHours.start <= 23) {
|
s32 fall_hour;
|
||||||
for (int i = 0; i < 24; ++i) {
|
|
||||||
validHours.emplaceBack(sHours.start);
|
if (start_hour <= end_hour) {
|
||||||
}
|
// Time range is continuous.
|
||||||
}
|
fall_hour = sead::GlobalRandom::instance()->getS32Range(start_hour, end_hour);
|
||||||
if (sHours.end > 1) {
|
|
||||||
for (int i = 0; i < 23; ++i) {
|
|
||||||
validHours.emplaceBack(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
auto rand = sead::Random();
|
|
||||||
validHours.shuffle(&rand);
|
|
||||||
mFallHour = *validHours[0];
|
|
||||||
} else {
|
} else {
|
||||||
mFallHour = sead::GlobalRandom::instance()->getS32Range(sHours.start, sHours.end - 1);
|
// Time range is discontinuous.
|
||||||
|
// Fill an array with valid hours, shuffle it, and take the first.
|
||||||
|
sead::FixedObjArray<s32, 24> valid_hours;
|
||||||
|
|
||||||
|
for (int i = start_hour; i < 24; ++i) {
|
||||||
|
valid_hours.emplaceBack(i);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < end_hour; ++i) {
|
||||||
|
valid_hours.emplaceBack(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
valid_hours.shuffle();
|
||||||
|
fall_hour = *valid_hours[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mFallHour = fall_hour;
|
||||||
mFallMinute = sead::GlobalRandom::instance()->getU32(59);
|
mFallMinute = sead::GlobalRandom::instance()->getU32(59);
|
||||||
mInitialised = true;
|
mInitialised = true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue