mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-06-11 02:21:11 +00:00
Make ttc speeds change properly
This commit is contained in:
parent
a42533e93d
commit
61cd748e75
7 changed files with 22 additions and 2 deletions
|
|
@ -1943,6 +1943,7 @@
|
|||
--- @field public oTTCTreadmillSpeed number
|
||||
--- @field public oTTCTreadmillTargetSpeed number
|
||||
--- @field public oTTCTreadmillTimeUntilSwitch integer
|
||||
--- @field public oTTCTreadmillPrevTTCSpeed integer
|
||||
--- @field public oTTCMovingBarDelay integer
|
||||
--- @field public oTTCMovingBarStoppedTimer integer
|
||||
--- @field public oTTCMovingBarOffset number
|
||||
|
|
|
|||
|
|
@ -1732,6 +1732,7 @@ s64 DynOS_Bhv_ParseBehaviorScriptConstants(const String &_Arg, bool *found) {
|
|||
bhv_constant(oTTCTreadmillSpeed);
|
||||
bhv_constant(oTTCTreadmillTargetSpeed);
|
||||
bhv_constant(oTTCTreadmillTimeUntilSwitch);
|
||||
bhv_constant(oTTCTreadmillPrevTTCSpeed);
|
||||
|
||||
/* TTCMovingBar */
|
||||
bhv_constant(oTTCMovingBarDelay);
|
||||
|
|
|
|||
|
|
@ -2541,6 +2541,7 @@
|
|||
| oTTCTreadmillSpeed | `number` | |
|
||||
| oTTCTreadmillTargetSpeed | `number` | |
|
||||
| oTTCTreadmillTimeUntilSwitch | `integer` | |
|
||||
| oTTCTreadmillPrevTTCSpeed | `integer` | |
|
||||
| oTTCMovingBarDelay | `integer` | |
|
||||
| oTTCMovingBarStoppedTimer | `integer` | |
|
||||
| oTTCMovingBarOffset | `number` | |
|
||||
|
|
|
|||
|
|
@ -1002,6 +1002,7 @@
|
|||
#define /*0x0FC*/ oTTCTreadmillSpeed OBJECT_FIELD_F32(0x1D)
|
||||
#define /*0x100*/ oTTCTreadmillTargetSpeed OBJECT_FIELD_F32(0x1E)
|
||||
#define /*0x104*/ oTTCTreadmillTimeUntilSwitch OBJECT_FIELD_S32(0x1F)
|
||||
#define /*0x108*/ oTTCTreadmillPrevTTCSpeed OBJECT_FIELD_S32(0x20)
|
||||
|
||||
/* TTC Moving Bar */
|
||||
#define /*0x0F4*/ oTTCMovingBarDelay OBJECT_FIELD_S32(0x1B)
|
||||
|
|
|
|||
|
|
@ -156,6 +156,15 @@ static void ttc_moving_bar_act_retract(void) {
|
|||
* Update function for bhvTTCMovingBar.
|
||||
*/
|
||||
void bhv_ttc_moving_bar_update(void) {
|
||||
if (gTTCSpeedSetting == TTC_SPEED_STOPPED) {
|
||||
if (o->oTTCMovingBarDelay != 0 && (o->oTTCMovingBarDelay = gTTCMovingBarDelays[gTTCSpeedSetting]) == 0) {
|
||||
o->oTTCMovingBarOffset = 250.0f;
|
||||
}
|
||||
return;
|
||||
} else if (o->oTTCMovingBarDelay == 0) {
|
||||
o->oTTCMovingBarDelay = gTTCMovingBarDelays[gTTCSpeedSetting];
|
||||
}
|
||||
|
||||
o->oTTCMovingBarStartOffset = o->oTTCMovingBarOffset;
|
||||
obj_perform_position_op(POS_OP_SAVE_POSITION);
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ void bhv_ttc_treadmill_init(void) {
|
|||
|
||||
sMasterTreadmill = NULL;
|
||||
|
||||
o->oTTCTreadmillPrevTTCSpeed = gTTCSpeedSetting;
|
||||
|
||||
// uses standard distance-based syncing
|
||||
struct SyncObject *so = sync_object_init(o, 4000.0f);
|
||||
if (so) {
|
||||
|
|
@ -48,8 +50,12 @@ void bhv_ttc_treadmill_init(void) {
|
|||
* Update function for bhvTTCTreadmill. It calls cur_obj_compute_vel_xz afterward.
|
||||
*/
|
||||
void bhv_ttc_treadmill_update(void) {
|
||||
if (gTTCSpeedSetting >= 0 && gTTCSpeedSetting <= 3 && *o->oTTCTreadmillBigSurface != gTTCTreadmillSpeeds[gTTCSpeedSetting]) {
|
||||
if (gTTCSpeedSetting >= 0 && gTTCSpeedSetting <= 3 && o->oTTCTreadmillPrevTTCSpeed != gTTCSpeedSetting) {
|
||||
*o->oTTCTreadmillBigSurface = *o->oTTCTreadmillSmallSurface = gTTCTreadmillSpeeds[gTTCSpeedSetting];
|
||||
o->oTTCTreadmillTimeUntilSwitch = random_mod_offset(10, 20, 7);
|
||||
o->oTTCTreadmillTargetSpeed = random_sign() * 50.0f;
|
||||
o->oTimer = 0;
|
||||
o->oTTCTreadmillPrevTTCSpeed = gTTCSpeedSetting;
|
||||
}
|
||||
|
||||
if (sMasterTreadmill == o || sMasterTreadmill == NULL) {
|
||||
|
|
|
|||
|
|
@ -1580,7 +1580,7 @@ static struct LuaObjectField sNetworkPlayerFields[LUA_NETWORK_PLAYER_FIELD_COUNT
|
|||
{ "type", LVT_U8, offsetof(struct NetworkPlayer, type), true, LOT_NONE, 1, sizeof(u8) },
|
||||
};
|
||||
|
||||
#define LUA_OBJECT_FIELD_COUNT 766
|
||||
#define LUA_OBJECT_FIELD_COUNT 767
|
||||
static struct LuaObjectField sObjectFields[LUA_OBJECT_FIELD_COUNT] = {
|
||||
{ "activeFlags", LVT_S16, offsetof(struct Object, activeFlags), false, LOT_NONE, 1, sizeof(s16) },
|
||||
{ "allowRemoteInteractions", LVT_U8, offsetof(struct Object, allowRemoteInteractions), false, LOT_NONE, 1, sizeof(u8) },
|
||||
|
|
@ -2235,6 +2235,7 @@ static struct LuaObjectField sObjectFields[LUA_OBJECT_FIELD_COUNT] = {
|
|||
{ "oTTCRotatingSolidVelY", LVT_F32, offsetof(struct Object, oTTCRotatingSolidVelY), false, LOT_NONE, 1, sizeof(f32) },
|
||||
{ "oTTCSpinnerDir", LVT_S32, offsetof(struct Object, oTTCSpinnerDir), false, LOT_NONE, 1, sizeof(s32) },
|
||||
{ "oTTCTreadmillBigSurface", LVT_S16_P, offsetof(struct Object, oTTCTreadmillBigSurface), true, LOT_POINTER, 1, sizeof(s16*) },
|
||||
{ "oTTCTreadmillPrevTTCSpeed", LVT_S32, offsetof(struct Object, oTTCTreadmillPrevTTCSpeed), false, LOT_NONE, 1, sizeof(s32) },
|
||||
{ "oTTCTreadmillSmallSurface", LVT_S16_P, offsetof(struct Object, oTTCTreadmillSmallSurface), true, LOT_POINTER, 1, sizeof(s16*) },
|
||||
{ "oTTCTreadmillSpeed", LVT_F32, offsetof(struct Object, oTTCTreadmillSpeed), false, LOT_NONE, 1, sizeof(f32) },
|
||||
{ "oTTCTreadmillTargetSpeed", LVT_F32, offsetof(struct Object, oTTCTreadmillTargetSpeed), false, LOT_NONE, 1, sizeof(f32) },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue