mirror of https://github.com/PrimeDecomp/prime.git
Link 4 script objects & renaming from MPR
Former-commit-id: ac3887c54088adddef1ddd84421e5754a618f210
This commit is contained in:
parent
79d5df69e1
commit
06be29dc5c
|
@ -1018,15 +1018,15 @@ __dl__24TOneStatic<10CPlayerGun>FPv = .text:0x80043B4C; // type:function size:0x
|
|||
__sinit_CPlayerGun_cpp = .text:0x80043B78; // type:function size:0x268 scope:local
|
||||
IntegrateVisorFog__13CStateManagerFf = .text:0x80043DE0; // type:function size:0x74 scope:global
|
||||
SendScriptMsgAlways__13CStateManagerF9TUniqueId9TUniqueId20EScriptObjectMessage = .text:0x80043E54; // type:function size:0x7C scope:global
|
||||
SendScriptMsg__13CStateManagerFP7CEntity9TUniqueId20EScriptObjectMessage = .text:0x80043ED0; // type:function size:0x5C scope:global
|
||||
DeliverScriptMsg__13CStateManagerFP7CEntity9TUniqueId20EScriptObjectMessage = .text:0x80043ED0; // type:function size:0x5C scope:global
|
||||
QueueMessage__13CStateManagerFiUif = .text:0x80043F2C; // type:function size:0x10 scope:global
|
||||
GetPlayer__13CStateManagerCFv = .text:0x80043F3C; // type:function size:0x8 scope:global
|
||||
SetBossParams__13CStateManagerF9TUniqueIdfUi = .text:0x80043F44; // type:function size:0x14 scope:global
|
||||
SetGameState__13CStateManagerFQ213CStateManager10EGameState = .text:0x80043F58; // type:function size:0xB0 scope:global
|
||||
fn_80044008 = .text:0x80044008; // type:function size:0x28
|
||||
SetCurrentMaze__13CStateManagerFQ24rstl24single_ptr<10CMazeState> = .text:0x80044030; // type:function size:0x58 scope:global
|
||||
CurrentMaze__13CStateManagerFv = .text:0x80044088; // type:function size:0x8 scope:global
|
||||
GetCurrentMaze__13CStateManagerCFv = .text:0x80044090; // type:function size:0x8 scope:global
|
||||
SetSinglePathMaze__13CStateManagerFQ24rstl29single_ptr<15CSinglePathMaze> = .text:0x80044030; // type:function size:0x58 scope:global
|
||||
SinglePathMaze__13CStateManagerFv = .text:0x80044088; // type:function size:0x8 scope:global
|
||||
GetSinglePathMaze__13CStateManagerCFv = .text:0x80044090; // type:function size:0x8 scope:global
|
||||
fn_80044098 = .text:0x80044098; // type:function size:0x3D8
|
||||
GetCharacterRenderMaskAndTarget__13CStateManagerFbRiRi = .text:0x80044470; // type:function size:0xF8 scope:global
|
||||
UpdateThermalVisor__13CStateManagerFv = .text:0x80044568; // type:function size:0x284 scope:global
|
||||
|
@ -1127,7 +1127,7 @@ fn_8004BEB0 = .text:0x8004BEB0; // type:function size:0x94
|
|||
UpdateRoomAcoustics__13CStateManagerF7TAreaId = .text:0x8004BF44; // type:function size:0x188 scope:global
|
||||
SetCurrentAreaId__13CStateManagerF7TAreaId = .text:0x8004C0CC; // type:function size:0xC8 scope:global
|
||||
ClearGraveyard__13CStateManagerFv = .text:0x8004C194; // type:function size:0xD8 scope:global
|
||||
FreeScriptObject__13CStateManagerF9TUniqueId = .text:0x8004C26C; // type:function size:0x200 scope:global
|
||||
DeleteObjectRequest__13CStateManagerF9TUniqueId = .text:0x8004C26C; // type:function size:0x200 scope:global
|
||||
fn_8004C46C = .text:0x8004C46C; // type:function size:0x28
|
||||
fn_8004C494 = .text:0x8004C494; // type:function size:0xE0
|
||||
ObjectById__13CStateManagerF9TUniqueId = .text:0x8004C574; // type:function size:0x30 scope:global
|
||||
|
@ -5696,7 +5696,7 @@ Remove__10CWeaponMgrF9TUniqueId = .text:0x800C2174; // type:function size:0x160
|
|||
__ct__10CWeaponMgrFv = .text:0x800C22D4; // type:function size:0x30 scope:global
|
||||
__dl__FPv = .text:0x800C2304; // type:function size:0x20 scope:global
|
||||
insert_into__Q24rstl215red_black_tree<9TUniqueId,Q24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>>,0,Q24rstl67select1st<Q24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>>>,Q24rstl16less<9TUniqueId>,Q24rstl17rmemory_allocator>FPQ34rstl215red_black_tree<9TUniqueId,Q24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>>,0,Q24rstl67select1st<Q24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>>>,Q24rstl16less<9TUniqueId>,Q24rstl17rmemory_allocator>4nodeRCQ24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>> = .text:0x800C2324; // type:function size:0x2CC scope:global
|
||||
SetSpawned__13CScriptPickupFv = .text:0x800C25F0; // type:function size:0x14 scope:global
|
||||
SetWasGenerated__13CScriptPickupFv = .text:0x800C25F0; // type:function size:0x14 scope:global
|
||||
GetPossibility__13CScriptPickupCFv = .text:0x800C2604; // type:function size:0x8 scope:global
|
||||
GetItem__13CScriptPickupCFv = .text:0x800C260C; // type:function size:0x8 scope:global
|
||||
Accept__13CScriptPickupFR8IVisitor = .text:0x800C2614; // type:function size:0x38 scope:global
|
||||
|
@ -7672,10 +7672,10 @@ BuildProjectileCameraShake__16CCameraShakeDataFff = .text:0x8015DBB4; // type:fu
|
|||
__sinit_CCameraShakeData_cpp = .text:0x8015DCB4; // type:function size:0x1D4 scope:local
|
||||
Accept__22CScriptPickupGeneratorFR8IVisitor = .text:0x8015DE88; // type:function size:0x38 scope:global
|
||||
AcceptScriptMsg__22CScriptPickupGeneratorF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x8015DEC0; // type:function size:0x360 scope:global
|
||||
ResetDelayTimer__22CScriptPickupGeneratorFv = .text:0x8015E220; // type:function size:0x34 scope:global
|
||||
GeneratePickup__22CScriptPickupGeneratorCFR13CStateManager9TEditorId9TUniqueId = .text:0x8015E254; // type:function size:0x208 scope:global
|
||||
GetPickupTemplates__22CScriptPickupGeneratorCFR13CStateManagerRQ24rstl62vector<Q24rstl18pair<f,9TEditorId>,Q24rstl17rmemory_allocator> = .text:0x8015E45C; // type:function size:0x2EC scope:global
|
||||
GetGeneratorIds__22CScriptPickupGeneratorCFR13CStateManager9TUniqueIdRQ24rstl45vector<9TUniqueId,Q24rstl17rmemory_allocator> = .text:0x8015E748; // type:function size:0x190 scope:global
|
||||
ResetSpawnNothingCounter__22CScriptPickupGeneratorFv = .text:0x8015E220; // type:function size:0x34 scope:global
|
||||
SpawnPickup__22CScriptPickupGeneratorCFR13CStateManager9TEditorId9TUniqueId = .text:0x8015E254; // type:function size:0x208 scope:global
|
||||
GetSpawnablePickups__22CScriptPickupGeneratorCFR13CStateManagerRQ24rstl62vector<Q24rstl18pair<f,9TEditorId>,Q24rstl17rmemory_allocator> = .text:0x8015E45C; // type:function size:0x2EC scope:global
|
||||
GetTargets__22CScriptPickupGeneratorCFR13CStateManager9TUniqueIdRQ24rstl45vector<9TUniqueId,Q24rstl17rmemory_allocator> = .text:0x8015E748; // type:function size:0x190 scope:global
|
||||
__dt__22CScriptPickupGeneratorFv = .text:0x8015E8D8; // type:function size:0x60 scope:global
|
||||
__ct__22CScriptPickupGeneratorF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC9CVector3ffb = .text:0x8015E938; // type:function size:0xA4 scope:global
|
||||
reserve__Q24rstl62vector<Q24rstl18pair<f,9TEditorId>,Q24rstl17rmemory_allocator>Fi = .text:0x8015E9DC; // type:function size:0xF4 scope:global
|
||||
|
@ -7945,7 +7945,7 @@ InhabitantExited__18CScriptBallTriggerFR6CActorR13CStateManager = .text:0x801768
|
|||
InhabitantAdded__18CScriptBallTriggerFR6CActorR13CStateManager = .text:0x80176890; // type:function size:0x3C scope:global
|
||||
__dt__18CScriptBallTriggerFv = .text:0x801768CC; // type:function size:0x60 scope:global
|
||||
__ct__18CScriptBallTriggerF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC9CVector3fRC9CVector3fbfffRC9CVector3fb = .text:0x8017692C; // type:function size:0x1AC scope:global
|
||||
calculate_ball_aabox__Fv = .text:0x80176AD8; // type:function size:0x54 scope:global
|
||||
calculate_ball_aabox__Fv = .text:0x80176AD8; // type:function size:0x54 scope:local
|
||||
__dt__17CPlasmaProjectileFv = .text:0x80176B2C; // type:function size:0x1EC scope:global
|
||||
__dt__15CBeamProjectileFv = .text:0x80176D18; // type:function size:0x11C scope:global
|
||||
fn_80176E34 = .text:0x80176E34; // type:function size:0x68
|
||||
|
@ -11321,17 +11321,17 @@ __dt__15CScriptMazeNodeFv = .text:0x802887C8; // type:function size:0xAC scope:g
|
|||
LoadMazeSeeds__15CScriptMazeNodeFv = .text:0x80288874; // type:function size:0xC4 scope:global
|
||||
Think__15CScriptMazeNodeFfR13CStateManager = .text:0x80288938; // type:function size:0x94 scope:global
|
||||
AcceptScriptMsg__15CScriptMazeNodeF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x802889CC; // type:function size:0x854 scope:global
|
||||
SendScriptMsgs__15CScriptMazeNodeFR13CStateManager20EScriptObjectMessage = .text:0x80289220; // type:function size:0x120 scope:global
|
||||
Reset__15CScriptMazeNodeFR13CStateManager = .text:0x80289340; // type:function size:0xA4 scope:global
|
||||
GenerateObjects__15CScriptMazeNodeFR13CStateManager = .text:0x802893E4; // type:function size:0x250 scope:global
|
||||
SendBarrierMsg__15CScriptMazeNodeFR13CStateManager20EScriptObjectMessage = .text:0x80289220; // type:function size:0x120 scope:global
|
||||
DeleteBarrier__15CScriptMazeNodeFR13CStateManager = .text:0x80289340; // type:function size:0xA4 scope:global
|
||||
GenerateBarrier__15CScriptMazeNodeFR13CStateManager = .text:0x802893E4; // type:function size:0x250 scope:global
|
||||
Accept__15CScriptMazeNodeFR8IVisitor = .text:0x80289634; // type:function size:0x38 scope:global
|
||||
__ct__15CScriptMazeNodeF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fbiiiRC9CVector3fRC9CVector3fRC9CVector3f = .text:0x8028966C; // type:function size:0x190 scope:global
|
||||
Initialize__10CMazeStateFv = .text:0x802897FC; // type:function size:0x1CC scope:global
|
||||
GenerateObstacles__10CMazeStateFv = .text:0x802899C8; // type:function size:0x530 scope:global
|
||||
GetCell__10CMazeStateFUiUi = .text:0x80289EF8; // type:function size:0x1C scope:global
|
||||
GetCell__10CMazeStateCFUiUi = .text:0x80289F14; // type:function size:0x1C scope:global
|
||||
Reset__10CMazeStateFi = .text:0x80289F30; // type:function size:0x968 scope:global
|
||||
__ct__10CMazeStateFiiii = .text:0x8028A898; // type:function size:0x80 scope:global
|
||||
SolveMaze__15CSinglePathMazeFv = .text:0x802897FC; // type:function size:0x1CC scope:global
|
||||
AddGimmicks__15CSinglePathMazeFv = .text:0x802899C8; // type:function size:0x530 scope:global
|
||||
MazePoint__15CSinglePathMazeFUiUi = .text:0x80289EF8; // type:function size:0x1C scope:global
|
||||
GetMazePoint__15CSinglePathMazeCFUiUi = .text:0x80289F14; // type:function size:0x1C scope:global
|
||||
CreateMaze__15CSinglePathMazeFi = .text:0x80289F30; // type:function size:0x968 scope:global
|
||||
__ct__15CSinglePathMazeFiiii = .text:0x8028A898; // type:function size:0x80 scope:global
|
||||
__ct__9SMazeCellFv = .text:0x8028A918; // type:function size:0xB4 scope:weak
|
||||
get_current_suit__12NWeaponTypesFRC13CStateManager = .text:0x8028A9CC; // type:function size:0x58 scope:global
|
||||
GetShotDamageInfo__10CGunWeaponCFRC10SShotParamR13CStateManager = .text:0x8028AA24; // type:function size:0xD4 scope:global
|
||||
|
@ -17118,7 +17118,7 @@ lbl_803CFDB8 = .rodata:0x803CFDB8; // type:object size:0x108
|
|||
lbl_803CFEC0 = .rodata:0x803CFEC0; // type:object size:0xB0
|
||||
lbl_803CFF70 = .rodata:0x803CFF70; // type:object size:0xC8
|
||||
lbl_803D0038 = .rodata:0x803D0038; // type:object size:0x10
|
||||
lbl_803D0048 = .rodata:0x803D0048; // type:object size:0x8
|
||||
@stringBase0 = .rodata:0x803D0048; // type:object size:0x7 scope:local data:string_table
|
||||
lbl_803D0050 = .rodata:0x803D0050; // type:object size:0x8
|
||||
lbl_803D0058 = .rodata:0x803D0058; // type:object size:0x8
|
||||
lbl_803D0060 = .rodata:0x803D0060; // type:object size:0x10
|
||||
|
@ -17688,7 +17688,7 @@ lbl_803D5E29 = .rodata:0x803D5E29; // type:object size:0xD data:string
|
|||
lbl_803D5E36 = .rodata:0x803D5E36; // type:object size:0x1A
|
||||
lbl_803D5E50 = .rodata:0x803D5E50; // type:object size:0x30
|
||||
@stringBase0 = .rodata:0x803D5E80; // type:object size:0x15 scope:local data:string_table
|
||||
lbl_803D5E98 = .rodata:0x803D5E98; // type:object size:0x18
|
||||
@stringBase0 = .rodata:0x803D5E98; // type:object size:0x15 scope:local data:string_table
|
||||
lbl_803D5EB0 = .rodata:0x803D5EB0; // type:object size:0x8
|
||||
lbl_803D5EB8 = .rodata:0x803D5EB8; // type:object size:0x30
|
||||
@stringBase0 = .rodata:0x803D5EE8; // type:object size:0x7 scope:local data:string_table
|
||||
|
@ -17857,7 +17857,7 @@ cplext = .rodata:0x803D7CFC; // type:object size:0x7C scope:local
|
|||
cpdist = .rodata:0x803D7D78; // type:object size:0x78 scope:local
|
||||
cpdext = .rodata:0x803D7DF0; // type:object size:0x78 scope:local
|
||||
@stringBase0 = .rodata:0x803D7E68; // type:object size:0xE5 scope:local data:string_table
|
||||
@stringBase0 = .rodata:0x803D7F50; // type:object size:0x8 data:string_table
|
||||
@stringBase0 = .rodata:0x803D7F50; // type:object size:0x7 data:string_table
|
||||
lbl_803D7F58 = .rodata:0x803D7F58; // type:object size:0xF0
|
||||
lbl_803D8048 = .rodata:0x803D8048; // type:object size:0x30 data:4byte
|
||||
lbl_803D8078 = .rodata:0x803D8078; // type:object size:0x30
|
||||
|
@ -18196,7 +18196,7 @@ jumptable_803DF194 = .data:0x803DF194; // type:object size:0x8C scope:local
|
|||
__vt__15CScriptPlatform = .data:0x803DF220; // type:object size:0x8C scope:global
|
||||
jumptable_803DF2AC = .data:0x803DF2AC; // type:object size:0x7C scope:local
|
||||
__vt__16CScriptGenerator = .data:0x803DF328; // type:object size:0x20 scope:global
|
||||
__vt__21CScriptCameraWaypoint = .data:0x803DF348; // type:object size:0x70 scope:global
|
||||
__vt__21CScriptCameraWaypoint = .data:0x803DF348; // type:object size:0x6C scope:global
|
||||
__vt__10CGameLight = .data:0x803DF3B8; // type:object size:0x6C scope:global
|
||||
lbl_803DF428 = .data:0x803DF428; // type:object size:0x10
|
||||
__vt__16CTweakAutoMapper = .data:0x803DF438; // type:object size:0xC scope:global
|
||||
|
@ -18210,7 +18210,7 @@ lbl_803DF688 = .data:0x803DF688; // type:object size:0x6C
|
|||
lbl_803DF6F4 = .data:0x803DF6F4; // type:object size:0xC
|
||||
__vt__41TObjOwnerDerivedFromIObj<13CStateMachine> = .data:0x803DF700; // type:object size:0x10
|
||||
__vt__11CPlasmaBeam = .data:0x803DF710; // type:object size:0x44 scope:global
|
||||
__vt__10CPowerBeam = .data:0x803DF758; // type:object size:0x48 scope:global
|
||||
__vt__10CPowerBeam = .data:0x803DF758; // type:object size:0x44 scope:global
|
||||
__vt__9CWaveBeam = .data:0x803DF7A0; // type:object size:0x48 scope:global
|
||||
__vt__8CIceBeam = .data:0x803DF7E8; // type:object size:0x48 scope:global
|
||||
__vt__12CScriptRelay = .data:0x803DF830; // type:object size:0x20 scope:global
|
||||
|
@ -18229,7 +18229,7 @@ lbl_803DFD08 = .data:0x803DFD08; // type:object size:0x70
|
|||
lbl_803DFD78 = .data:0x803DFD78; // type:object size:0x88
|
||||
__vt__19CScriptCameraShaker = .data:0x803DFE00; // type:object size:0x20 scope:global
|
||||
__vt__20CScriptActorKeyframe = .data:0x803DFE20; // type:object size:0x20 scope:global
|
||||
__vt__14CBCScriptedCmd = .data:0x803DFE40; // type:object size:0x10 scope:global
|
||||
__vt__14CBCScriptedCmd = .data:0x803DFE40; // type:object size:0xC scope:global
|
||||
lbl_803DFE50 = .data:0x803DFE50; // type:object size:0x20
|
||||
lbl_803DFE70 = .data:0x803DFE70; // type:object size:0x80
|
||||
__vt__7CWeapon = .data:0x803DFEF0; // type:object size:0x6C scope:global
|
||||
|
@ -18267,11 +18267,11 @@ jumptable_803E0AF8 = .data:0x803E0AF8; // type:object size:0x94 scope:local
|
|||
__vt__11CBCCoverCmd = .data:0x803E0B8C; // type:object size:0xC scope:global
|
||||
__vt__14CBCWallHangCmd = .data:0x803E0B98; // type:object size:0x48 scope:global
|
||||
lbl_803E0BE0 = .data:0x803E0BE0; // type:object size:0x18
|
||||
__vt__17CScriptCoverPoint = .data:0x803E0BF8; // type:object size:0x70 scope:global
|
||||
__vt__17CScriptCoverPoint = .data:0x803E0BF8; // type:object size:0x6C scope:global
|
||||
lbl_803E0C68 = .data:0x803E0C68; // type:object size:0x78
|
||||
lbl_803E0CE0 = .data:0x803E0CE0; // type:object size:0x20
|
||||
__vt__19CScriptGrapplePoint = .data:0x803E0D00; // type:object size:0x6C scope:global
|
||||
__vt__19CHUDBillboardEffect = .data:0x803E0D70; // type:object size:0x70 scope:global
|
||||
__vt__19CHUDBillboardEffect = .data:0x803E0D70; // type:object size:0x6C scope:global
|
||||
lbl_803E0DE0 = .data:0x803E0DE0; // type:object size:0x2D0
|
||||
__vt__16CBCLoopAttackCmd = .data:0x803E10B0; // type:object size:0xC scope:global
|
||||
__vt__20CBCAdditiveFlinchCmd = .data:0x803E10BC; // type:object size:0xC scope:global
|
||||
|
@ -19169,7 +19169,7 @@ lbl_8046C564 = .bss:0x8046C564; // type:object size:0xC
|
|||
lbl_8046C570 = .bss:0x8046C570; // type:object size:0xA8
|
||||
lbl_8046C618 = .bss:0x8046C618; // type:object size:0x108
|
||||
lbl_8046C720 = .bss:0x8046C720; // type:object size:0x18 data:4byte
|
||||
lbl_8046C738 = .bss:0x8046C738; // type:object size:0x10 data:float
|
||||
lbl_8046C738 = .bss:0x8046C738; // type:object size:0xC data:float
|
||||
lbl_8046C748 = .bss:0x8046C748; // type:object size:0x10
|
||||
lbl_8046C758 = .bss:0x8046C758; // type:object size:0x18 data:4byte
|
||||
lbl_8046C770 = .bss:0x8046C770; // type:object size:0x18 data:4byte
|
||||
|
@ -19243,7 +19243,7 @@ lbl_804BFF00 = .bss:0x804BFF00; // type:object size:0x10
|
|||
lbl_804BFF10 = .bss:0x804BFF10; // type:object size:0xC
|
||||
lbl_804BFF1C = .bss:0x804BFF1C; // type:object size:0x14
|
||||
lbl_804BFF30 = .bss:0x804BFF30; // type:object size:0x10
|
||||
@52 = .bss:0x804BFF40; // type:object size:0x10
|
||||
@52 = .bss:0x804BFF40; // type:object size:0xC
|
||||
sPlayerPosition = .bss:0x804BFF50; // type:object size:0xC scope:local data:float
|
||||
sTextureProjectionTransform = .bss:0x804BFF5C; // type:object size:0x34 scope:local data:float
|
||||
lbl_804BFF90 = .bss:0x804BFF90; // type:object size:0x10
|
||||
|
@ -19917,7 +19917,7 @@ lbl_805A7200 = .sdata:0x805A7200; // type:object size:0x4 data:4byte
|
|||
lbl_805A7204 = .sdata:0x805A7204; // type:object size:0x4 data:4byte
|
||||
lbl_805A7208 = .sdata:0x805A7208; // type:object size:0x4 data:4byte
|
||||
lbl_805A720C = .sdata:0x805A720C; // type:object size:0x4 data:4byte
|
||||
lbl_805A7210 = .sdata:0x805A7210; // type:object size:0x8 data:4byte
|
||||
lbl_805A7210 = .sdata:0x805A7210; // type:object size:0x4 data:4byte
|
||||
@192 = .sdata:0x805A7218; // type:object size:0x4 scope:local data:4byte
|
||||
lbl_805A7220 = .sdata:0x805A7220; // type:object size:0x1 data:byte
|
||||
lbl_805A7221 = .sdata:0x805A7221; // type:object size:0x1 data:byte
|
||||
|
@ -20203,7 +20203,7 @@ lbl_805A7694 = .sdata:0x805A7694; // type:object size:0x4
|
|||
lbl_805A7698 = .sdata:0x805A7698; // type:object size:0x4
|
||||
lbl_805A769C = .sdata:0x805A769C; // type:object size:0x4
|
||||
lbl_805A76A0 = .sdata:0x805A76A0; // type:object size:0x8
|
||||
lbl_805A76A8 = .sdata:0x805A76A8; // type:object size:0x8 data:4byte
|
||||
lbl_805A76A8 = .sdata:0x805A76A8; // type:object size:0x4 data:4byte
|
||||
lbl_805A76B0 = .sdata:0x805A76B0; // type:object size:0x4 data:4byte
|
||||
lbl_805A76B4 = .sdata:0x805A76B4; // type:object size:0x4 data:4byte
|
||||
lbl_805A76B8 = .sdata:0x805A76B8; // type:object size:0x4 data:float
|
||||
|
@ -20215,7 +20215,7 @@ lbl_805A76D0 = .sdata:0x805A76D0; // type:object size:0x8 data:float
|
|||
lbl_805A76D8 = .sdata:0x805A76D8; // type:object size:0x4 data:4byte
|
||||
lbl_805A76DC = .sdata:0x805A76DC; // type:object size:0x4 data:4byte
|
||||
@191 = .sdata:0x805A76E0; // type:object size:0x4 scope:local data:4byte
|
||||
lbl_805A76E8 = .sdata:0x805A76E8; // type:object size:0x8 data:float
|
||||
lbl_805A76E8 = .sdata:0x805A76E8; // type:object size:0x4 data:float
|
||||
lbl_805A76F0 = .sdata:0x805A76F0; // type:object size:0x4 data:4byte
|
||||
lbl_805A76F4 = .sdata:0x805A76F4; // type:object size:0x4 data:4byte
|
||||
lbl_805A76F8 = .sdata:0x805A76F8; // type:object size:0x4 data:4byte
|
||||
|
@ -21661,7 +21661,7 @@ lbl_805A8F68 = .sbss:0x805A8F68; // type:object size:0x4 data:4byte
|
|||
lbl_805A8F6C = .sbss:0x805A8F6C; // type:object size:0x4 data:4byte
|
||||
g_BillboardCount__19CHUDBillboardEffect = .sbss:0x805A8F70; // type:object size:0x4 scope:global data:4byte
|
||||
g_IndirectTexturedBillboardCount__19CHUDBillboardEffect = .sbss:0x805A8F74; // type:object size:0x4 scope:global data:4byte
|
||||
lbl_805A8F78 = .sbss:0x805A8F78; // type:object size:0x8 data:byte
|
||||
lbl_805A8F78 = .sbss:0x805A8F78; // type:object size:0x1 data:byte
|
||||
lbl_805A8F80 = .sbss:0x805A8F80; // type:object size:0x8 data:float
|
||||
lbl_805A8F88 = .sbss:0x805A8F88; // type:object size:0x4 data:float
|
||||
lbl_805A8F8C = .sbss:0x805A8F8C; // type:object size:0x1 data:byte
|
||||
|
@ -23690,7 +23690,7 @@ lbl_805AB3DC = .sdata2:0x805AB3DC; // type:object size:0x4 data:float
|
|||
lbl_805AB3E0 = .sdata2:0x805AB3E0; // type:object size:0x4 data:float
|
||||
lbl_805AB3E4 = .sdata2:0x805AB3E4; // type:object size:0x4 data:float
|
||||
lbl_805AB3E8 = .sdata2:0x805AB3E8; // type:object size:0x8 data:float
|
||||
lbl_805AB3F0 = .sdata2:0x805AB3F0; // type:object size:0x4 data:float
|
||||
kDefaultScale__7CRipple = .sdata2:0x805AB3F0; // type:object size:0x4 data:float
|
||||
lbl_805AB3F4 = .sdata2:0x805AB3F4; // type:object size:0x4 data:float
|
||||
lbl_805AB3F8 = .sdata2:0x805AB3F8; // type:object size:0x4 data:float
|
||||
lbl_805AB3FC = .sdata2:0x805AB3FC; // type:object size:0x4 data:float
|
||||
|
|
|
@ -1018,7 +1018,7 @@ __dl__24TOneStatic<10CPlayerGun>FPv = .text:0x80043BC8; // type:function size:0x
|
|||
__sinit_CPlayerGun_cpp = .text:0x80043BF4; // type:function size:0x268 scope:global
|
||||
IntegrateVisorFog__13CStateManagerFf = .text:0x80043E5C; // type:function size:0x74 scope:global
|
||||
SendScriptMsgAlways__13CStateManagerF9TUniqueId9TUniqueId20EScriptObjectMessage = .text:0x80043ED0; // type:function size:0x7C scope:global
|
||||
SendScriptMsg__13CStateManagerFP7CEntity9TUniqueId20EScriptObjectMessage = .text:0x80043F4C; // type:function size:0x5C scope:global
|
||||
DeliverScriptMsg__13CStateManagerFP7CEntity9TUniqueId20EScriptObjectMessage = .text:0x80043F4C; // type:function size:0x5C scope:global
|
||||
QueueMessage__13CStateManagerFiUif = .text:0x80043FA8; // type:function size:0x10 scope:global
|
||||
GetPlayer__13CStateManagerCFv = .text:0x80043FB8; // type:function size:0x8 scope:global
|
||||
SetBossParams__13CStateManagerF9TUniqueIdfUi = .text:0x80043FC0; // type:function size:0x14 scope:global
|
||||
|
@ -1127,7 +1127,7 @@ fn_8004BEB0 = .text:0x8004BF2C; // type:function size:0x94 scope:global
|
|||
UpdateRoomAcoustics__13CStateManagerF7TAreaId = .text:0x8004BFC0; // type:function size:0x188 scope:global
|
||||
SetCurrentAreaId__13CStateManagerF7TAreaId = .text:0x8004C148; // type:function size:0xC8 scope:global
|
||||
ClearGraveyard__13CStateManagerFv = .text:0x8004C210; // type:function size:0xD8 scope:global
|
||||
FreeScriptObject__13CStateManagerF9TUniqueId = .text:0x8004C2E8; // type:function size:0x200 scope:global
|
||||
DeleteObjectRequest__13CStateManagerF9TUniqueId = .text:0x8004C2E8; // type:function size:0x200 scope:global
|
||||
fn_8004C46C = .text:0x8004C4E8; // type:function size:0x28 scope:global
|
||||
fn_8004C494 = .text:0x8004C510; // type:function size:0xE0 scope:global
|
||||
ObjectById__13CStateManagerF9TUniqueId = .text:0x8004C5F0; // type:function size:0x30 scope:global
|
||||
|
@ -5698,7 +5698,7 @@ Remove__10CWeaponMgrF9TUniqueId = .text:0x800C21F0; // type:function size:0x160
|
|||
__ct__10CWeaponMgrFv = .text:0x800C2350; // type:function size:0x30 scope:global
|
||||
__dl__FPv = .text:0x800C2380; // type:function size:0x20 scope:global
|
||||
insert_into__Q24rstl215red_black_tree<9TUniqueId,Q24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>>,0,Q24rstl67select1st<Q24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>>>,Q24rstl16less<9TUniqueId>,Q24rstl17rmemory_allocator>FPQ34rstl215red_black_tree<9TUniqueId,Q24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>>,0,Q24rstl67select1st<Q24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>>>,Q24rstl16less<9TUniqueId>,Q24rstl17rmemory_allocator>4nodeRCQ24rstl47pair<9TUniqueId,Q24rstl21reserved_vector<i,15>> = .text:0x800C23A0; // type:function size:0x2CC scope:global
|
||||
SetSpawned__13CScriptPickupFv = .text:0x800C266C; // type:function size:0x14 scope:global
|
||||
SetWasGenerated__13CScriptPickupFv = .text:0x800C266C; // type:function size:0x14 scope:global
|
||||
GetPossibility__13CScriptPickupCFv = .text:0x800C2680; // type:function size:0x8 scope:global
|
||||
GetItem__13CScriptPickupCFv = .text:0x800C2688; // type:function size:0x8 scope:global
|
||||
Accept__13CScriptPickupFR8IVisitor = .text:0x800C2690; // type:function size:0x38 scope:global
|
||||
|
@ -7675,10 +7675,10 @@ BuildProjectileCameraShake__16CCameraShakeDataFff = .text:0x8015DC30; // type:fu
|
|||
__sinit_CCameraShakeData_cpp = .text:0x8015DD30; // type:function size:0x1D4 scope:global
|
||||
Accept__22CScriptPickupGeneratorFR8IVisitor = .text:0x8015DF04; // type:function size:0x38 scope:global
|
||||
AcceptScriptMsg__22CScriptPickupGeneratorF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x8015DF3C; // type:function size:0x360 scope:global
|
||||
ResetDelayTimer__22CScriptPickupGeneratorFv = .text:0x8015E29C; // type:function size:0x34 scope:global
|
||||
GeneratePickup__22CScriptPickupGeneratorCFR13CStateManager9TEditorId9TUniqueId = .text:0x8015E2D0; // type:function size:0x208 scope:global
|
||||
GetPickupTemplates__22CScriptPickupGeneratorCFR13CStateManagerRQ24rstl62vector<Q24rstl18pair<f,9TEditorId>,Q24rstl17rmemory_allocator> = .text:0x8015E4D8; // type:function size:0x2EC scope:global
|
||||
GetGeneratorIds__22CScriptPickupGeneratorCFR13CStateManager9TUniqueIdRQ24rstl45vector<9TUniqueId,Q24rstl17rmemory_allocator> = .text:0x8015E7C4; // type:function size:0x190 scope:global
|
||||
ResetSpawnNothingCounter__22CScriptPickupGeneratorFv = .text:0x8015E29C; // type:function size:0x34 scope:global
|
||||
SpawnPickup__22CScriptPickupGeneratorCFR13CStateManager9TEditorId9TUniqueId = .text:0x8015E2D0; // type:function size:0x208 scope:global
|
||||
GetSpawnablePickups__22CScriptPickupGeneratorCFR13CStateManagerRQ24rstl62vector<Q24rstl18pair<f,9TEditorId>,Q24rstl17rmemory_allocator> = .text:0x8015E4D8; // type:function size:0x2EC scope:global
|
||||
GetTargets__22CScriptPickupGeneratorCFR13CStateManager9TUniqueIdRQ24rstl45vector<9TUniqueId,Q24rstl17rmemory_allocator> = .text:0x8015E7C4; // type:function size:0x190 scope:global
|
||||
__dt__22CScriptPickupGeneratorFv = .text:0x8015E954; // type:function size:0x60 scope:global
|
||||
__ct__22CScriptPickupGeneratorF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC9CVector3ffb = .text:0x8015E9B4; // type:function size:0xA4 scope:global
|
||||
reserve__Q24rstl62vector<Q24rstl18pair<f,9TEditorId>,Q24rstl17rmemory_allocator>Fi = .text:0x8015EA58; // type:function size:0xF4 scope:global
|
||||
|
@ -7949,7 +7949,7 @@ InhabitantExited__18CScriptBallTriggerFR6CActorR13CStateManager = .text:0x801768
|
|||
InhabitantAdded__18CScriptBallTriggerFR6CActorR13CStateManager = .text:0x8017690C; // type:function size:0x3C scope:global
|
||||
__dt__18CScriptBallTriggerFv = .text:0x80176948; // type:function size:0x60 scope:global
|
||||
__ct__18CScriptBallTriggerF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC9CVector3fRC9CVector3fbfffRC9CVector3fb = .text:0x801769A8; // type:function size:0x1AC scope:global
|
||||
calculate_ball_aabox__Fv = .text:0x80176B54; // type:function size:0x54 scope:global
|
||||
calculate_ball_aabox__Fv = .text:0x80176B54; // type:function size:0x54 scope:local
|
||||
__dt__17CPlasmaProjectileFv = .text:0x80176BA8; // type:function size:0x1EC scope:global
|
||||
__dt__15CBeamProjectileFv = .text:0x80176D94; // type:function size:0x11C scope:global
|
||||
fn_80176E34 = .text:0x80176EB0; // type:function size:0x68 scope:global
|
||||
|
@ -11334,17 +11334,17 @@ __dt__15CScriptMazeNodeFv = .text:0x80288844; // type:function size:0xAC scope:g
|
|||
LoadMazeSeeds__15CScriptMazeNodeFv = .text:0x802888F0; // type:function size:0xC4 scope:global
|
||||
Think__15CScriptMazeNodeFfR13CStateManager = .text:0x802889B4; // type:function size:0x94 scope:global
|
||||
AcceptScriptMsg__15CScriptMazeNodeF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x80288A48; // type:function size:0x854 scope:global
|
||||
SendScriptMsgs__15CScriptMazeNodeFR13CStateManager20EScriptObjectMessage = .text:0x8028929C; // type:function size:0x120 scope:global
|
||||
Reset__15CScriptMazeNodeFR13CStateManager = .text:0x802893BC; // type:function size:0xA4 scope:global
|
||||
GenerateObjects__15CScriptMazeNodeFR13CStateManager = .text:0x80289460; // type:function size:0x250 scope:global
|
||||
SendBarrierMsg__15CScriptMazeNodeFR13CStateManager20EScriptObjectMessage = .text:0x8028929C; // type:function size:0x120 scope:global
|
||||
DeleteBarrier__15CScriptMazeNodeFR13CStateManager = .text:0x802893BC; // type:function size:0xA4 scope:global
|
||||
GenerateBarrier__15CScriptMazeNodeFR13CStateManager = .text:0x80289460; // type:function size:0x250 scope:global
|
||||
Accept__15CScriptMazeNodeFR8IVisitor = .text:0x802896B0; // type:function size:0x38 scope:global
|
||||
__ct__15CScriptMazeNodeF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fbiiiRC9CVector3fRC9CVector3fRC9CVector3f = .text:0x802896E8; // type:function size:0x190 scope:global
|
||||
Initialize__10CMazeStateFv = .text:0x80289878; // type:function size:0x1CC scope:global
|
||||
GenerateObstacles__10CMazeStateFv = .text:0x80289A44; // type:function size:0x530 scope:global
|
||||
GetCell__10CMazeStateFUiUi = .text:0x80289F74; // type:function size:0x1C scope:global
|
||||
GetCell__10CMazeStateCFUiUi = .text:0x80289F90; // type:function size:0x1C scope:global
|
||||
Reset__10CMazeStateFi = .text:0x80289FAC; // type:function size:0x968 scope:global
|
||||
__ct__10CMazeStateFiiii = .text:0x8028A914; // type:function size:0x80 scope:global
|
||||
SolveMaze__15CSinglePathMazeFv = .text:0x80289878; // type:function size:0x1CC scope:global
|
||||
AddGimmicks__15CSinglePathMazeFv = .text:0x80289A44; // type:function size:0x530 scope:global
|
||||
MazePoint__15CSinglePathMazeFUiUi = .text:0x80289F74; // type:function size:0x1C scope:global
|
||||
GetMazePoint__15CSinglePathMazeCFUiUi = .text:0x80289F90; // type:function size:0x1C scope:global
|
||||
CreateMaze__15CSinglePathMazeFi = .text:0x80289FAC; // type:function size:0x968 scope:global
|
||||
__ct__15CSinglePathMazeFiiii = .text:0x8028A914; // type:function size:0x80 scope:global
|
||||
__ct__9SMazeCellFv = .text:0x8028A994; // type:function size:0xB4 scope:weak
|
||||
get_current_suit__12NWeaponTypesFRC13CStateManager = .text:0x8028AA48; // type:function size:0x58 scope:global
|
||||
GetShotDamageInfo__10CGunWeaponCFRC10SShotParamR13CStateManager = .text:0x8028AAA0; // type:function size:0xD4 scope:global
|
||||
|
@ -23736,7 +23736,7 @@ lbl_805AB3DC = .sdata2:0x805AB5BC; // type:object size:0x4 scope:global data:flo
|
|||
lbl_805AB3E0 = .sdata2:0x805AB5C0; // type:object size:0x4 scope:global data:float
|
||||
lbl_805AB3E4 = .sdata2:0x805AB5C4; // type:object size:0x4 scope:global data:float
|
||||
lbl_805AB3E8 = .sdata2:0x805AB5C8; // type:object size:0x8 scope:global data:float
|
||||
lbl_805AB3F0 = .sdata2:0x805AB5D0; // type:object size:0x4 scope:global data:float
|
||||
kDefaultScale__7CRipple = .sdata2:0x805AB5D0; // type:object size:0x4 scope:global data:float
|
||||
lbl_805AB3F4 = .sdata2:0x805AB5D4; // type:object size:0x4 scope:global data:float
|
||||
lbl_805AB3F8 = .sdata2:0x805AB5D8; // type:object size:0x4 scope:global data:float
|
||||
lbl_805AB3FC = .sdata2:0x805AB5DC; // type:object size:0x4 scope:global data:float
|
||||
|
|
|
@ -493,12 +493,12 @@ config.libs = [
|
|||
Object(NonMatching, "MetroidPrime/Factories/CScannableObjectInfo.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/Enemies/CMetroid.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/Player/CScanDisplay.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptSteam.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptRipple.cpp"),
|
||||
Object(Matching, "MetroidPrime/ScriptObjects/CScriptSteam.cpp"),
|
||||
Object(Matching, "MetroidPrime/ScriptObjects/CScriptRipple.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/CBoneTracking.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/Player/CFaceplateDecoration.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/BodyState/CBSCover.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptBallTrigger.cpp"),
|
||||
Object(Matching, "MetroidPrime/ScriptObjects/CScriptBallTrigger.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/Weapons/CPlasmaProjectile.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/Player/CPlayerOrbit.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/CGameCollision.cpp"),
|
||||
|
@ -509,7 +509,7 @@ config.libs = [
|
|||
Object(NonMatching, "MetroidPrime/Weapons/CPhazonBeam.cpp"),
|
||||
Object(Matching, "MetroidPrime/ScriptObjects/CScriptTargetingPoint.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/BodyState/CBSWallHang.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptEMPulse.cpp"),
|
||||
Object(Matching, "MetroidPrime/ScriptObjects/CScriptEMPulse.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/HUD/CHudDecoInterface.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/Weapons/CFlameThrower.cpp"),
|
||||
Object(NonMatching, "MetroidPrime/Weapons/CBeamProjectile.cpp"),
|
||||
|
|
|
@ -12,7 +12,7 @@ template < typename T >
|
|||
T cinput_stream_helper(const TType< T >& type, CInputStream& in);
|
||||
|
||||
template < typename T >
|
||||
TType< T > TGetType() {
|
||||
inline TType< T > TGetType() {
|
||||
return TType< T >();
|
||||
}
|
||||
|
||||
|
@ -40,12 +40,9 @@ public:
|
|||
|
||||
bool ReadPackedBool() { return ReadBits(1) != 0; }
|
||||
|
||||
// TODO: this cast to uint fixes regalloc in
|
||||
// CIEKeyframeEmitter / rstl::vector(CInputStream&)
|
||||
// why?
|
||||
int ReadInt32() { return static_cast< uint >(Get(TType< int >())); }
|
||||
ushort ReadUint16() { return Get<ushort>(); }
|
||||
short ReadInt16() { return Get<short>(); }
|
||||
int ReadInt32() { return Get< int >(); }
|
||||
ushort ReadUint16() { return Get< ushort >(); }
|
||||
short ReadInt16() { return Get< short >(); }
|
||||
|
||||
uint GetBlockOffset() const { return x4_blockOffset; }
|
||||
|
||||
|
@ -121,10 +118,10 @@ inline rstl::pair< L, R > cinput_stream_helper(const TType< rstl::pair< L, R > >
|
|||
template < typename T, typename Alloc >
|
||||
inline rstl::vector< T, Alloc >::vector(CInputStream& in, const Alloc& allocator)
|
||||
: x4_count(0), x8_capacity(0), xc_items(nullptr) {
|
||||
int count = in.ReadInt32();
|
||||
int count = in.Get< int >();
|
||||
reserve(count);
|
||||
for (int i = 0; i < count; i++) {
|
||||
push_back(in.Get(TType< T >()));
|
||||
push_back(in.Get(TGetType< T >()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,10 +23,6 @@ public:
|
|||
CEntity(TUniqueId id, const CEntityInfo& info, bool active, const rstl::string& name);
|
||||
|
||||
void SendScriptMsgs(EScriptObjectState state, CStateManager& mgr, EScriptObjectMessage msg);
|
||||
static inline void SendScriptMsg(CStateManager& mgr, CEntity* to, TUniqueId sender,
|
||||
EScriptObjectMessage msg) {
|
||||
mgr.SendScriptMsg(to, sender, msg);
|
||||
}
|
||||
TUniqueId GetUniqueId() const { return x8_uid; }
|
||||
TEditorId GetEditorId() const { return xc_editorId; }
|
||||
const rstl::string& GetDebugName() const { return x10_name; }
|
||||
|
|
|
@ -58,7 +58,8 @@ private:
|
|||
float x38_maxDensityDeltaSpeed;
|
||||
bool x3c_snowflakeTextureMipBlanked;
|
||||
TLockedToken< CTexture > x40_txtrEnvGradient;
|
||||
rstl::reserved_vector< CEnvFxManagerGrid, 64 > x50_grids;
|
||||
rstl::reserved_vector< CEnvFxManagerGrid, 64 > x4c_grids;
|
||||
int xb50_; // padding?
|
||||
float xb54_baseSplashRate;
|
||||
TLockedToken< CGenDescription > xb58_envRainSplash;
|
||||
bool xb64_;
|
||||
|
@ -71,7 +72,6 @@ private:
|
|||
rstl::reserved_vector< CVector3f, 16 > xb84_snowZDeltas;
|
||||
TLockedToken< CTexture > xc48_underwaterFlake;
|
||||
bool xc54_;
|
||||
int xc58_;
|
||||
};
|
||||
CHECK_SIZEOF(CEnvFxManager, 0xc58);
|
||||
|
||||
|
|
|
@ -30,6 +30,8 @@ public:
|
|||
void SetTime(float t) { x4_time = t; }
|
||||
|
||||
float GetTimeFalloff() const { return x14_timeFalloff; }
|
||||
|
||||
static float kDefaultScale;
|
||||
};
|
||||
|
||||
#endif // _CRIPPLE
|
||||
|
|
|
@ -6,12 +6,13 @@
|
|||
#include "Kyoto/CObjectReference.hpp"
|
||||
#include "Kyoto/CRandom16.hpp"
|
||||
#include "Kyoto/Input/CFinalInput.hpp"
|
||||
#include "Kyoto/Math/CFrustumPlanes.hpp"
|
||||
#include "Kyoto/Math/CVector2f.hpp"
|
||||
#include "Kyoto/Math/CVector2i.hpp"
|
||||
#include "Kyoto/Math/CFrustumPlanes.hpp"
|
||||
#include "Kyoto/TOneStatic.hpp"
|
||||
#include "Kyoto/TToken.hpp"
|
||||
|
||||
|
||||
#include "MetroidPrime/CEntityInfo.hpp"
|
||||
#include "MetroidPrime/CObjectList.hpp"
|
||||
#include "MetroidPrime/Cameras/CCameraBlurPass.hpp"
|
||||
|
@ -23,15 +24,16 @@
|
|||
|
||||
#include "rstl/auto_ptr.hpp"
|
||||
#include "rstl/list.hpp"
|
||||
#include "rstl/set.hpp"
|
||||
#include "rstl/map.hpp"
|
||||
#include "rstl/multimap.hpp"
|
||||
#include "rstl/pair.hpp"
|
||||
#include "rstl/rc_ptr.hpp"
|
||||
#include "rstl/reserved_vector.hpp"
|
||||
#include "rstl/set.hpp"
|
||||
#include "rstl/single_ptr.hpp"
|
||||
#include "rstl/string.hpp"
|
||||
|
||||
|
||||
class CAABox;
|
||||
class CActor;
|
||||
class CActorModelParticles;
|
||||
|
@ -50,7 +52,7 @@ class CWeaponMgr;
|
|||
class CWorld;
|
||||
class CWorldTransManager;
|
||||
class CEntity;
|
||||
class CMazeState;
|
||||
class CSinglePathMaze;
|
||||
class CRayCastResult;
|
||||
class CMaterialFilter;
|
||||
class CWorldLayerState;
|
||||
|
@ -125,11 +127,11 @@ public:
|
|||
void ResetEscapeSequenceTimer(float);
|
||||
void SendScriptMsg(TUniqueId uid, TEditorId target, EScriptObjectMessage msg,
|
||||
EScriptObjectState state);
|
||||
void SendScriptMsg(CEntity* ent, TUniqueId target, EScriptObjectMessage msg);
|
||||
void DeliverScriptMsg(CEntity* ent, TUniqueId target, EScriptObjectMessage msg);
|
||||
void SendScriptMsgAlways(TUniqueId uid, TUniqueId src, EScriptObjectMessage msg);
|
||||
bool AddDrawableActor(const CActor& actor, const CVector3f& pos, const CAABox& bounds) const;
|
||||
void SetupParticleHook(const CActor& actor) const;
|
||||
void FreeScriptObject(TUniqueId uid);
|
||||
void DeleteObjectRequest(TUniqueId uid);
|
||||
rstl::pair< TEditorId, TUniqueId > GenerateObject(const TEditorId& eid);
|
||||
void AddObject(CEntity*);
|
||||
TUniqueId AllocateUniqueId();
|
||||
|
@ -164,9 +166,9 @@ public:
|
|||
|
||||
bool CanCreateProjectile(TUniqueId, EWeaponType, int) const;
|
||||
|
||||
CMazeState* CurrentMaze();
|
||||
const CMazeState* GetCurrentMaze() const;
|
||||
void SetCurrentMaze(rstl::single_ptr< CMazeState > maze);
|
||||
CSinglePathMaze* SinglePathMaze();
|
||||
const CSinglePathMaze* GetSinglePathMaze() const;
|
||||
void SetSinglePathMaze(rstl::single_ptr< CSinglePathMaze > maze);
|
||||
|
||||
CPlayer* Player() { return x84c_player; }
|
||||
const CPlayer* GetPlayer() const { return x84c_player; }
|
||||
|
@ -331,7 +333,7 @@ private:
|
|||
EGameState x904_gameState;
|
||||
rstl::reserved_vector< FScriptLoader, int(kST_MAX) > x90c_loaderFuncs;
|
||||
EInitPhase xb3c_initPhase;
|
||||
rstl::set<rstl::string> xb40_uniqueInstanceNames;
|
||||
rstl::set< rstl::string > xb40_uniqueInstanceNames;
|
||||
|
||||
CFinalInput xb54_finalInput;
|
||||
rstl::reserved_vector< CCameraFilterPass, kCFS_Max > xb84_camFilterPasses;
|
||||
|
@ -355,7 +357,7 @@ private:
|
|||
rstl::list< TUniqueId > xf3c_activeFlickerBats;
|
||||
rstl::list< TUniqueId > xf54_activeParasites;
|
||||
TUniqueId xf6c_playerActorHead;
|
||||
rstl::single_ptr< CMazeState > xf70_currentMaze;
|
||||
rstl::single_ptr< CSinglePathMaze > xf70_currentMaze;
|
||||
TUniqueId xf74_lastTrigger;
|
||||
TUniqueId xf76_lastRelay;
|
||||
float xf78_hudMessageTime;
|
||||
|
|
|
@ -82,7 +82,7 @@ public:
|
|||
const CGameArea& GetAreaAlways(TAreaId id) const { return *x18_areas[id.Value()]; }
|
||||
CGameArea* Area(TAreaId id) { return x18_areas[id.Value()].get(); }
|
||||
const CGameArea* GetArea(TAreaId id) const { return x18_areas[id.Value()].get(); }
|
||||
bool IsAreaValid(TAreaId id) const { return GetArea(id)->IsLoaded(); }
|
||||
bool IsAreaValid(TAreaId id) const { return x18_areas[id.Value()]->IsLoaded(); }
|
||||
CAssetId GetWorldAssetId() const { return x8_mlvlId; }
|
||||
TAreaId GetCurrentAreaId() const { return x68_curAreaId; }
|
||||
TAreaId GetAreaIdForSaveId(int saveId) const;
|
||||
|
|
|
@ -43,7 +43,7 @@ struct SMazeCell {
|
|||
}
|
||||
};
|
||||
|
||||
class CMazeState {
|
||||
class CSinglePathMaze {
|
||||
CRandom16 x0_rand;
|
||||
SMazeCell x4_cells[skMazeRows * skMazeCols];
|
||||
int x84_enterCol;
|
||||
|
@ -61,15 +61,15 @@ public:
|
|||
kS_Left = 3,
|
||||
};
|
||||
|
||||
CMazeState(int enterCol, int enterRow, int targetCol, int targetRow);
|
||||
void Reset(int seed);
|
||||
void Initialize();
|
||||
void GenerateObstacles();
|
||||
CSinglePathMaze(int enterCol, int enterRow, int targetCol, int targetRow);
|
||||
void CreateMaze(int seed);
|
||||
void SolveMaze();
|
||||
void AddGimmicks();
|
||||
|
||||
SMazeCell& GetCell(uint col, uint row);
|
||||
const SMazeCell& GetCell(uint col, uint row) const;
|
||||
SMazeCell& GetCellInline(uint col, uint row) { return x4_cells[col + row * skMazeCols]; } // ????
|
||||
inline SMazeCell& GetCell(uint idx) { return x4_cells[idx]; }
|
||||
SMazeCell& MazePoint(uint col, uint row);
|
||||
const SMazeCell& GetMazePoint(uint col, uint row) const;
|
||||
SMazeCell& MazePointInline(uint col, uint row) { return x4_cells[col + row * skMazeCols]; } // ????
|
||||
inline SMazeCell& MazePoint(uint idx) { return x4_cells[idx]; }
|
||||
};
|
||||
|
||||
class CScriptMazeNode : public CActor {
|
||||
|
@ -111,11 +111,17 @@ private:
|
|||
bool x13c_25_hasGate : 1;
|
||||
bool x13c_26_gateActive : 1;
|
||||
|
||||
void GenerateObjects(CStateManager& mgr);
|
||||
void Reset(CStateManager& mgr);
|
||||
void SendScriptMsgs(CStateManager& mgr, EScriptObjectMessage msg);
|
||||
void GenerateBarrier(CStateManager& mgr);
|
||||
void DeleteBarrier(CStateManager& mgr);
|
||||
void SendBarrierMsg(CStateManager& mgr, EScriptObjectMessage msg);
|
||||
|
||||
static uint sMazeSeeds[300];
|
||||
|
||||
// hack for SendBarrierMsg
|
||||
static inline void DeliverScriptMsg(CStateManager& mgr, CEntity* to, TUniqueId sender,
|
||||
EScriptObjectMessage msg) {
|
||||
mgr.DeliverScriptMsg(to, sender, msg);
|
||||
}
|
||||
};
|
||||
|
||||
#endif // _CSCRIPTMAZENODE
|
||||
|
|
|
@ -40,7 +40,7 @@ public:
|
|||
|
||||
float GetPossibility() const;
|
||||
CPlayerState::EItemType GetItem() const;
|
||||
void SetSpawned();
|
||||
void SetWasGenerated();
|
||||
};
|
||||
|
||||
#endif // _CSCRIPTPICKUP
|
||||
|
|
|
@ -13,16 +13,18 @@ public:
|
|||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender,
|
||||
CStateManager& stateMgr) override;
|
||||
|
||||
// float GetNothingPossibility() const;
|
||||
|
||||
private:
|
||||
CVector3f x34_position;
|
||||
float x40_frequency;
|
||||
float x44_delayTimer;
|
||||
void ResetDelayTimer();
|
||||
void GetGeneratorIds(CStateManager& mgr, TUniqueId sender,
|
||||
rstl::vector< TUniqueId >& idsOut) const;
|
||||
float GetPickupTemplates(CStateManager& mgr,
|
||||
rstl::vector< rstl::pair< float, TEditorId > >& idsOut) const;
|
||||
void GeneratePickup(CStateManager& mgr, TEditorId templateId, TUniqueId generatorId) const;
|
||||
|
||||
void ResetSpawnNothingCounter();
|
||||
void GetTargets(CStateManager& mgr, TUniqueId sender, rstl::vector< TUniqueId >& idsOut) const;
|
||||
float GetSpawnablePickups(CStateManager& mgr,
|
||||
rstl::vector< rstl::pair< float, TEditorId > >& idsOut) const;
|
||||
void SpawnPickup(CStateManager& mgr, TEditorId templateId, TUniqueId generatorId) const;
|
||||
};
|
||||
|
||||
#endif // _CSCRIPTPICKUPGENERATOR
|
||||
|
|
|
@ -4,14 +4,6 @@
|
|||
#include "MetroidPrime/ScriptObjects/CScriptTrigger.hpp"
|
||||
|
||||
class CScriptSteam : public CScriptTrigger {
|
||||
bool x150_;
|
||||
CAssetId x154_texture;
|
||||
float x158_;
|
||||
float x15c_alphaInDur;
|
||||
float x160_alphaOutDur;
|
||||
float x164_;
|
||||
float x168_;
|
||||
|
||||
public:
|
||||
CScriptSteam(TUniqueId, const rstl::string& name, const CEntityInfo& info, const CVector3f& pos,
|
||||
const CAABox&, const CDamageInfo& dInfo, const CVector3f& orientedForce,
|
||||
|
@ -21,6 +13,22 @@ public:
|
|||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
|
||||
void Think(float, CStateManager&);
|
||||
void Accept(IVisitor&);
|
||||
|
||||
private:
|
||||
bool x150_;
|
||||
CAssetId x154_texture;
|
||||
float x158_strength;
|
||||
float x15c_alphaInDur;
|
||||
float x160_alphaOutDur;
|
||||
float x164_maxDist;
|
||||
float x168_ooMaxDist;
|
||||
|
||||
float GetMaxDist() const { return x164_maxDist; }
|
||||
float GetStrength() const { return x158_strength; }
|
||||
float GetOOMaxDist() const { return x168_ooMaxDist; }
|
||||
CAssetId GetTextureId() const { return x154_texture; }
|
||||
float GetFadeOutRate() const { return x160_alphaOutDur; }
|
||||
float GetFadeInRate() const { return x15c_alphaInDur; }
|
||||
};
|
||||
|
||||
#endif // _CSCRIPTSTEAM
|
||||
|
|
|
@ -79,8 +79,7 @@ public:
|
|||
if (x4_count >= x8_capacity) {
|
||||
reserve(x8_capacity != 0 ? x8_capacity * 2 : 4);
|
||||
}
|
||||
iterator out = begin() + x4_count;
|
||||
out = in;
|
||||
rstl::construct(xc_items + x4_count, in);
|
||||
++x4_count;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include "Kyoto/Streams/CInputStream.hpp"
|
||||
|
||||
/* this is such a hack... */
|
||||
#pragma inline_max_size(250)
|
||||
#pragma inline_max_size(200)
|
||||
|
||||
CSegIdList::CSegIdList(CInputStream& in)
|
||||
: x0_segList(in) {
|
||||
|
|
|
@ -70,7 +70,7 @@ void CCollisionActorManager::Update(float dt, CStateManager& mgr,
|
|||
|
||||
void CCollisionActorManager::Destroy(CStateManager& mgr) const {
|
||||
for (int i = 0; i < x0_jointDescriptions.size(); ++i) {
|
||||
mgr.FreeScriptObject(x0_jointDescriptions[i].GetCollisionActorId());
|
||||
mgr.DeleteObjectRequest(x0_jointDescriptions[i].GetCollisionActorId());
|
||||
}
|
||||
|
||||
x13_destroyed = true;
|
||||
|
|
|
@ -90,9 +90,9 @@ void CExplosion::Think(float dt, CStateManager& mgr) {
|
|||
xf8_time += dt;
|
||||
|
||||
if (xf8_time > 15.f) {
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
} else if (xe8_particleGen->IsSystemDeletable()) {
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@ void CExplosion::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CSt
|
|||
break;
|
||||
case kSM_Deleted:
|
||||
if (xec_explosionLight != kInvalidUniqueId) {
|
||||
mgr.FreeScriptObject(xec_explosionLight);
|
||||
mgr.DeleteObjectRequest(xec_explosionLight);
|
||||
xec_explosionLight = kInvalidUniqueId;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -42,7 +42,7 @@ void CGameLight::Think(float dt, CStateManager& mgr) {
|
|||
x144_lifeTime -= dt;
|
||||
|
||||
if (x144_lifeTime <= 0.f)
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@ void CParticleGenInfoGeneric::DeleteLight(CStateManager& stateMgr) {
|
|||
return;
|
||||
}
|
||||
|
||||
stateMgr.FreeScriptObject(x88_lightId);
|
||||
stateMgr.DeleteObjectRequest(x88_lightId);
|
||||
x88_lightId = kInvalidUniqueId;
|
||||
}
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ void CFlaahgraPlants::Think(float dt, CStateManager& mgr) {
|
|||
}
|
||||
|
||||
if (xe8_elementGen->IsSystemDeletable()) {
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ void CFlaahgraPlants::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
}
|
||||
case kSM_Deleted: {
|
||||
if (x16c_colAct != kInvalidUniqueId) {
|
||||
mgr.FreeScriptObject(x16c_colAct);
|
||||
mgr.DeleteObjectRequest(x16c_colAct);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -103,12 +103,12 @@ void CHUDBillboardEffect::Think(float dt, CStateManager& mgr) {
|
|||
if (!x104_27_runIndefinitely) {
|
||||
x108_timeoutTimer += dt;
|
||||
if (x108_timeoutTimer > 30.f) {
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (xe8_generator->IsSystemDeletable())
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ void CScriptActorKeyframe::UpdateEntity(TUniqueId uid, CStateManager& mgr) {
|
|||
}
|
||||
if (act) {
|
||||
if (!act->GetActive()) {
|
||||
mgr.SendScriptMsg(act, GetUniqueId(), kSM_Activate);
|
||||
mgr.DeliverScriptMsg(act, GetUniqueId(), kSM_Activate);
|
||||
}
|
||||
act->SetModelFlags(CModelFlags::Normal());
|
||||
if (act->HasAnimation()) {
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
#include "rstl/math.hpp"
|
||||
|
||||
CAABox calculate_ball_aabox() {
|
||||
static CAABox calculate_ball_aabox() {
|
||||
const float extent = 0.33f * gpTweakPlayer->GetPlayerBallHalfExtent();
|
||||
return CAABox(CVector3f(-extent, -extent, -extent), CVector3f(extent, extent, extent));
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ void CScriptBeam::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CSt
|
|||
} break;
|
||||
|
||||
case kSM_Deleted:
|
||||
mgr.FreeScriptObject(x154_projectileId);
|
||||
mgr.DeleteObjectRequest(x154_projectileId);
|
||||
break;
|
||||
|
||||
case kSM_Increment:
|
||||
|
|
|
@ -42,7 +42,7 @@ void CScriptCameraHintTrigger::Think(float dt, CStateManager& mgr) {
|
|||
x130_27_playerWasInside = true;
|
||||
SendScriptMsgs(kSS_Entered, mgr, kSM_None);
|
||||
if (x130_24_deactivateOnEnter) {
|
||||
mgr.SendScriptMsg(this, kInvalidUniqueId, kSM_Deactivate);
|
||||
mgr.DeliverScriptMsg(this, kInvalidUniqueId, kSM_Deactivate);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ void CScriptCameraHintTrigger::Think(float dt, CStateManager& mgr) {
|
|||
x130_27_playerWasInside = false;
|
||||
SendScriptMsgs(kSS_Exited, mgr, kSM_None);
|
||||
if (x130_25_deactivateOnExit) {
|
||||
mgr.SendScriptMsg(this, kInvalidUniqueId, kSM_Deactivate);
|
||||
mgr.DeliverScriptMsg(this, kInvalidUniqueId, kSM_Deactivate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -57,10 +57,14 @@ void CScriptDistanceFog::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId obj
|
|||
}
|
||||
|
||||
if (!close_enough(x54_thermalSpeed, 0.f)) {
|
||||
stateMgr.World()->Area(GetCurrentAreaId())->SetThermalSpeedAndTarget(x54_thermalSpeed, x50_thermalTarget);
|
||||
stateMgr.World()
|
||||
->Area(GetCurrentAreaId())
|
||||
->SetThermalSpeedAndTarget(x54_thermalSpeed, x50_thermalTarget);
|
||||
}
|
||||
if (!close_enough(x5c_xraySpeed, 0.f)) {
|
||||
stateMgr.World()->Area(GetCurrentAreaId())->SetXRaySpeedAndTarget(x5c_xraySpeed, x58_xrayTarget);
|
||||
stateMgr.World()
|
||||
->Area(GetCurrentAreaId())
|
||||
->SetXRaySpeedAndTarget(x5c_xraySpeed, x58_xrayTarget);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -52,10 +52,11 @@ void CScriptEMPulse::Think(float dt, CStateManager& mgr) {
|
|||
if (!GetActive()) {
|
||||
return;
|
||||
}
|
||||
xf0_currentRadius += ((xec_finalRadius - xf4_initialRadius) / xe8_duration) * dt;
|
||||
|
||||
if (xf0_currentRadius <= xec_finalRadius) {
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
float step = (xec_finalRadius - xf4_initialRadius) / xe8_duration;
|
||||
xf0_currentRadius = xf0_currentRadius + step * dt;
|
||||
if (xf0_currentRadius >= xec_finalRadius) {
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
}
|
||||
|
||||
x114_particleGen->Update(dt);
|
||||
|
@ -64,9 +65,8 @@ void CScriptEMPulse::Think(float dt, CStateManager& mgr) {
|
|||
CAABox CScriptEMPulse::CalculateBoundingBox() const {
|
||||
float radius = xf0_currentRadius;
|
||||
CVector3f position(GetTranslation());
|
||||
return CAABox(
|
||||
CVector3f(position.GetX() - radius, position.GetY() - radius, position.GetZ() - radius),
|
||||
CVector3f(position.GetX() + radius, position.GetY() + radius, position.GetZ() + radius));
|
||||
return CAABox(position - CVector3f(radius, radius, radius),
|
||||
position + CVector3f(radius, radius, radius));
|
||||
}
|
||||
|
||||
rstl::optional_object< CAABox > CScriptEMPulse::GetTouchBounds() const {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
uint CScriptMazeNode::sMazeSeeds[300];
|
||||
|
||||
CMazeState::CMazeState(int enterCol, int enterRow, int targetCol, int targetRow)
|
||||
CSinglePathMaze::CSinglePathMaze(int enterCol, int enterRow, int targetCol, int targetRow)
|
||||
: x0_rand(0)
|
||||
, x84_enterCol(enterCol)
|
||||
, x88_enterRow(enterRow)
|
||||
|
@ -16,7 +16,7 @@ CMazeState::CMazeState(int enterCol, int enterRow, int targetCol, int targetRow)
|
|||
, x90_targetRow(targetRow)
|
||||
, x94_24_initialized(false) {}
|
||||
|
||||
void CMazeState::Reset(int seed) {
|
||||
void CSinglePathMaze::CreateMaze(int seed) {
|
||||
int numCells = NUM_MAZE_CELLS - 1;
|
||||
int cellIdx = 0;
|
||||
|
||||
|
@ -29,17 +29,17 @@ void CMazeState::Reset(int seed) {
|
|||
ESide sides[4];
|
||||
while (numCells != 0) {
|
||||
int acc = 0;
|
||||
if (cellIdx - skMazeCols > 0 && GetCell(cellIdx - skMazeCols).IsClosed()) {
|
||||
if (cellIdx - skMazeCols > 0 && MazePoint(cellIdx - skMazeCols).IsClosed()) {
|
||||
sides[acc++] = kS_Top;
|
||||
}
|
||||
if (cellIdx < NUM_MAZE_CELLS - 2 && (cellIdx + 1) % skMazeCols != 0 &&
|
||||
GetCell(cellIdx + 1).IsClosed()) {
|
||||
MazePoint(cellIdx + 1).IsClosed()) {
|
||||
sides[acc++] = kS_Right;
|
||||
}
|
||||
if (cellIdx + skMazeCols <= NUM_MAZE_CELLS - 1 && GetCell(cellIdx + skMazeCols).IsClosed()) {
|
||||
if (cellIdx + skMazeCols <= NUM_MAZE_CELLS - 1 && MazePoint(cellIdx + skMazeCols).IsClosed()) {
|
||||
sides[acc++] = kS_Bottom;
|
||||
}
|
||||
if (cellIdx > 0 && cellIdx % skMazeCols != 0 && GetCell(cellIdx - 1).IsClosed()) {
|
||||
if (cellIdx > 0 && cellIdx % skMazeCols != 0 && MazePoint(cellIdx - 1).IsClosed()) {
|
||||
sides[acc++] = kS_Left;
|
||||
}
|
||||
|
||||
|
@ -49,23 +49,23 @@ void CMazeState::Reset(int seed) {
|
|||
ESide side = sides[x0_rand.Next() % static_cast< uint >(acc)];
|
||||
switch (side) {
|
||||
case kS_Top:
|
||||
GetCell(cellIdx).x0_24_openTop = true;
|
||||
GetCell(cellIdx - skMazeCols).x0_26_openBottom = true;
|
||||
MazePoint(cellIdx).x0_24_openTop = true;
|
||||
MazePoint(cellIdx - skMazeCols).x0_26_openBottom = true;
|
||||
cellIdx -= skMazeCols;
|
||||
break;
|
||||
case kS_Right:
|
||||
GetCell(cellIdx).x0_25_openRight = true;
|
||||
GetCell(cellIdx + 1).x0_27_openLeft = true;
|
||||
MazePoint(cellIdx).x0_25_openRight = true;
|
||||
MazePoint(cellIdx + 1).x0_27_openLeft = true;
|
||||
cellIdx++;
|
||||
break;
|
||||
case kS_Bottom:
|
||||
GetCell(cellIdx).x0_26_openBottom = true;
|
||||
GetCell(cellIdx + skMazeCols).x0_24_openTop = true;
|
||||
MazePoint(cellIdx).x0_26_openBottom = true;
|
||||
MazePoint(cellIdx + skMazeCols).x0_24_openTop = true;
|
||||
cellIdx += skMazeCols;
|
||||
break;
|
||||
case kS_Left:
|
||||
GetCell(cellIdx).x0_27_openLeft = true;
|
||||
GetCell(cellIdx - 1).x0_25_openRight = true;
|
||||
MazePoint(cellIdx).x0_27_openLeft = true;
|
||||
MazePoint(cellIdx - 1).x0_25_openRight = true;
|
||||
cellIdx--;
|
||||
break;
|
||||
}
|
||||
|
@ -77,24 +77,26 @@ void CMazeState::Reset(int seed) {
|
|||
if (cellIdx > NUM_MAZE_CELLS - 1) {
|
||||
cellIdx = 0;
|
||||
}
|
||||
} while (GetCell(cellIdx).IsClosed());
|
||||
} while (MazePoint(cellIdx).IsClosed());
|
||||
}
|
||||
}
|
||||
|
||||
const SMazeCell& CMazeState::GetCell(uint col, uint row) const {
|
||||
const SMazeCell& CSinglePathMaze::GetMazePoint(uint col, uint row) const {
|
||||
return x4_cells[col + row * skMazeCols];
|
||||
}
|
||||
|
||||
SMazeCell& CMazeState::GetCell(uint col, uint row) { return x4_cells[col + row * skMazeCols]; }
|
||||
SMazeCell& CSinglePathMaze::MazePoint(uint col, uint row) {
|
||||
return x4_cells[col + row * skMazeCols];
|
||||
}
|
||||
|
||||
static inline int GetRandom(CRandom16& rand, int offset) {
|
||||
int tmp = rand.Next();
|
||||
return tmp - ((tmp / 5) * 5) + offset;
|
||||
}
|
||||
|
||||
void CMazeState::GenerateObstacles() {
|
||||
void CSinglePathMaze::AddGimmicks() {
|
||||
if (!x94_24_initialized) {
|
||||
Initialize();
|
||||
SolveMaze();
|
||||
}
|
||||
|
||||
int gate1Idx = GetRandom(x0_rand, 9);
|
||||
|
@ -114,47 +116,49 @@ void CMazeState::GenerateObstacles() {
|
|||
if (idx == gate1Idx || idx == gate2Idx || idx == gate3Idx) {
|
||||
switch (side) {
|
||||
case kS_Top:
|
||||
GetCellInline(col, row).x0_30_gateBottom = true;
|
||||
GetCellInline(prevCol, prevRow).x0_28_gateTop = true;
|
||||
MazePointInline(col, row).x0_30_gateBottom = true;
|
||||
MazePointInline(prevCol, prevRow).x0_28_gateTop = true;
|
||||
break;
|
||||
case kS_Right:
|
||||
GetCellInline(col, row).x0_31_gateLeft = true;
|
||||
GetCellInline(prevCol, prevRow).x0_29_gateRight = true;
|
||||
MazePointInline(col, row).x0_31_gateLeft = true;
|
||||
MazePointInline(prevCol, prevRow).x0_29_gateRight = true;
|
||||
break;
|
||||
case kS_Bottom:
|
||||
GetCellInline(col, row).x0_28_gateTop = true;
|
||||
GetCellInline(prevCol, prevRow).x0_30_gateBottom = true;
|
||||
MazePointInline(col, row).x0_28_gateTop = true;
|
||||
MazePointInline(prevCol, prevRow).x0_30_gateBottom = true;
|
||||
break;
|
||||
case kS_Left:
|
||||
GetCellInline(col, row).x0_29_gateRight = true;
|
||||
GetCellInline(prevCol, prevRow).x0_31_gateLeft = true;
|
||||
MazePointInline(col, row).x0_29_gateRight = true;
|
||||
MazePointInline(prevCol, prevRow).x0_31_gateLeft = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int curCol = col;
|
||||
int curRow = row;
|
||||
if (row > 0 && side != kS_Bottom && GetCellInline(col, row).x0_24_openTop &&
|
||||
GetCellInline(col, row - 1).x1_25_onPath) {
|
||||
if (row > 0 && side != kS_Bottom && MazePointInline(col, row).x0_24_openTop &&
|
||||
MazePointInline(col, row - 1).x1_25_onPath) {
|
||||
side = kS_Top;
|
||||
row--;
|
||||
} else if (row < skMazeRows - 1 && side != kS_Top && GetCellInline(col, row).x0_26_openBottom &&
|
||||
GetCellInline(col, row + 1).x1_25_onPath) {
|
||||
} else if (row < skMazeRows - 1 && side != kS_Top &&
|
||||
MazePointInline(col, row).x0_26_openBottom &&
|
||||
MazePointInline(col, row + 1).x1_25_onPath) {
|
||||
side = kS_Bottom;
|
||||
row++;
|
||||
} else if (col > 0 && side != kS_Right && GetCellInline(col, row).x0_27_openLeft &&
|
||||
GetCellInline(col - 1, row).x1_25_onPath) {
|
||||
} else if (col > 0 && side != kS_Right && MazePointInline(col, row).x0_27_openLeft &&
|
||||
MazePointInline(col - 1, row).x1_25_onPath) {
|
||||
side = kS_Left;
|
||||
col--;
|
||||
} else if (col < skMazeCols - 1 && side != kS_Left && GetCellInline(col, row).x0_25_openRight &&
|
||||
GetCellInline(col + 1, row).x1_25_onPath) {
|
||||
} else if (col < skMazeCols - 1 && side != kS_Left &&
|
||||
MazePointInline(col, row).x0_25_openRight &&
|
||||
MazePointInline(col + 1, row).x1_25_onPath) {
|
||||
side = kS_Right;
|
||||
col++;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
#define GetCellInline(c, r) x4_cells[c + r * skMazeCols]
|
||||
#define MazePointInline(c, r) x4_cells[c + r * skMazeCols]
|
||||
if (idx == puddle1Idx || idx == puddle2Idx) {
|
||||
if (curCol == 0 || curRow == 0 || curCol == skMazeCols - 1 || curRow == skMazeRows - 1) {
|
||||
if (idx == puddle1Idx) {
|
||||
|
@ -163,28 +167,28 @@ void CMazeState::GenerateObstacles() {
|
|||
puddle2Idx++;
|
||||
}
|
||||
} else {
|
||||
GetCellInline(curCol, curRow).x1_24_puddle = true;
|
||||
MazePointInline(curCol, curRow).x1_24_puddle = true;
|
||||
switch (side) {
|
||||
case kS_Top:
|
||||
GetCellInline(col, row).x0_26_openBottom = false;
|
||||
GetCellInline(curCol, curRow).x0_24_openTop = false;
|
||||
MazePointInline(col, row).x0_26_openBottom = false;
|
||||
MazePointInline(curCol, curRow).x0_24_openTop = false;
|
||||
break;
|
||||
case kS_Right:
|
||||
GetCellInline(col, row).x0_27_openLeft = false;
|
||||
GetCellInline(curCol, curRow).x0_25_openRight = false;
|
||||
MazePointInline(col, row).x0_27_openLeft = false;
|
||||
MazePointInline(curCol, curRow).x0_25_openRight = false;
|
||||
break;
|
||||
case kS_Bottom:
|
||||
GetCellInline(col, row).x0_24_openTop = false;
|
||||
GetCellInline(curCol, curRow).x0_26_openBottom = false;
|
||||
MazePointInline(col, row).x0_24_openTop = false;
|
||||
MazePointInline(curCol, curRow).x0_26_openBottom = false;
|
||||
break;
|
||||
case kS_Left:
|
||||
GetCellInline(col, row).x0_25_openRight = false;
|
||||
GetCellInline(curCol, curRow).x0_27_openLeft = false;
|
||||
MazePointInline(col, row).x0_25_openRight = false;
|
||||
MazePointInline(curCol, curRow).x0_27_openLeft = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#undef GetCellInline
|
||||
#undef MazePointInline
|
||||
|
||||
idx++;
|
||||
prevCol = curCol;
|
||||
|
@ -192,7 +196,7 @@ void CMazeState::GenerateObstacles() {
|
|||
}
|
||||
}
|
||||
|
||||
void CMazeState::Initialize() {
|
||||
void CSinglePathMaze::SolveMaze() {
|
||||
int path[NUM_MAZE_CELLS];
|
||||
int pathIdx = 0;
|
||||
int targetRow = x90_targetRow;
|
||||
|
@ -256,7 +260,7 @@ CScriptMazeNode::CScriptMazeNode(TUniqueId uid, const rstl::string& name, const
|
|||
|
||||
void CScriptMazeNode::Accept(IVisitor& visitor) { visitor.Visit(*this); }
|
||||
|
||||
void CScriptMazeNode::GenerateObjects(CStateManager& mgr) {
|
||||
void CScriptMazeNode::GenerateBarrier(CStateManager& mgr) {
|
||||
rstl::vector< SConnection >::iterator conn = ConnectionList().begin();
|
||||
for (; conn != ConnectionList().end(); ++conn) {
|
||||
if (conn->x0_state != kSS_MaxReached || conn->x4_msg != kSM_Activate) {
|
||||
|
@ -280,7 +284,7 @@ void CScriptMazeNode::GenerateObjects(CStateManager& mgr) {
|
|||
mgr.SetIsGeneratingObject(wasGeneratingObject);
|
||||
|
||||
if (CActor* actor = static_cast< CActor* >(mgr.ObjectById(objUid))) {
|
||||
mgr.SendScriptMsg(actor, GetUniqueId(), kSM_Activate);
|
||||
mgr.DeliverScriptMsg(actor, GetUniqueId(), kSM_Activate);
|
||||
if (scriptEffect) {
|
||||
actor->SetTranslation(GetTranslation() + x120_effectPos);
|
||||
x11c_effectId = objUid;
|
||||
|
@ -297,45 +301,45 @@ void CScriptMazeNode::GenerateObjects(CStateManager& mgr) {
|
|||
}
|
||||
}
|
||||
|
||||
void CScriptMazeNode::Reset(CStateManager& mgr) {
|
||||
mgr.FreeScriptObject(x11c_effectId);
|
||||
mgr.FreeScriptObject(xfc_actorId);
|
||||
mgr.FreeScriptObject(x10c_triggerId);
|
||||
mgr.FreeScriptObject(xf4_gateEffectId);
|
||||
void CScriptMazeNode::DeleteBarrier(CStateManager& mgr) {
|
||||
mgr.DeleteObjectRequest(x11c_effectId);
|
||||
mgr.DeleteObjectRequest(xfc_actorId);
|
||||
mgr.DeleteObjectRequest(x10c_triggerId);
|
||||
mgr.DeleteObjectRequest(xf4_gateEffectId);
|
||||
x11c_effectId = xfc_actorId = x10c_triggerId = xf4_gateEffectId = kInvalidUniqueId;
|
||||
}
|
||||
|
||||
void CScriptMazeNode::SendScriptMsgs(CStateManager& mgr, EScriptObjectMessage msg) {
|
||||
SendScriptMsg(mgr, mgr.ObjectById(x11c_effectId), GetUniqueId(), msg);
|
||||
SendScriptMsg(mgr, mgr.ObjectById(xfc_actorId), GetUniqueId(), msg);
|
||||
SendScriptMsg(mgr, mgr.ObjectById(x10c_triggerId), GetUniqueId(), msg);
|
||||
SendScriptMsg(mgr, mgr.ObjectById(xf4_gateEffectId), GetUniqueId(), msg);
|
||||
void CScriptMazeNode::SendBarrierMsg(CStateManager& mgr, EScriptObjectMessage msg) {
|
||||
DeliverScriptMsg(mgr, mgr.ObjectById(x11c_effectId), GetUniqueId(), msg);
|
||||
DeliverScriptMsg(mgr, mgr.ObjectById(xfc_actorId), GetUniqueId(), msg);
|
||||
DeliverScriptMsg(mgr, mgr.ObjectById(x10c_triggerId), GetUniqueId(), msg);
|
||||
DeliverScriptMsg(mgr, mgr.ObjectById(xf4_gateEffectId), GetUniqueId(), msg);
|
||||
}
|
||||
|
||||
void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) {
|
||||
if (GetActive()) {
|
||||
switch (msg) {
|
||||
case kSM_InitializedInArea: {
|
||||
if (mgr.CurrentMaze() == nullptr) {
|
||||
rstl::single_ptr< CMazeState > maze =
|
||||
rs_new CMazeState(skEnterCol, skEnterRow, skTargetCol, skTargetRow);
|
||||
maze->Reset(sMazeSeeds[mgr.Random()->Next() % 300]);
|
||||
maze->Initialize();
|
||||
maze->GenerateObstacles();
|
||||
mgr.SetCurrentMaze(maze);
|
||||
if (mgr.SinglePathMaze() == nullptr) {
|
||||
rstl::single_ptr< CSinglePathMaze > maze =
|
||||
rs_new CSinglePathMaze(skEnterCol, skEnterRow, skTargetCol, skTargetRow);
|
||||
maze->CreateMaze(sMazeSeeds[mgr.Random()->Next() % 300]);
|
||||
maze->SolveMaze();
|
||||
maze->AddGimmicks();
|
||||
mgr.SetSinglePathMaze(maze);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case kSM_Action: {
|
||||
bool shouldGenObjs = false;
|
||||
if (const CMazeState* maze = mgr.CurrentMaze()) {
|
||||
const SMazeCell& cell = maze->GetCell(xe8_col, xec_row);
|
||||
if (xf0_side == CMazeState::kS_Top && cell.x0_24_openTop) {
|
||||
if (const CSinglePathMaze* maze = mgr.SinglePathMaze()) {
|
||||
const SMazeCell& cell = maze->GetMazePoint(xe8_col, xec_row);
|
||||
if (xf0_side == CSinglePathMaze::kS_Top && cell.x0_24_openTop) {
|
||||
if (cell.x0_28_gateTop) {
|
||||
shouldGenObjs = true;
|
||||
x13c_25_hasGate = true;
|
||||
}
|
||||
} else if (xf0_side == CMazeState::kS_Right && cell.x0_25_openRight) {
|
||||
} else if (xf0_side == CSinglePathMaze::kS_Right && cell.x0_25_openRight) {
|
||||
if (cell.x0_29_gateRight) {
|
||||
shouldGenObjs = true;
|
||||
x13c_25_hasGate = true;
|
||||
|
@ -344,9 +348,9 @@ void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
shouldGenObjs = true;
|
||||
}
|
||||
if (shouldGenObjs) {
|
||||
GenerateObjects(mgr);
|
||||
GenerateBarrier(mgr);
|
||||
}
|
||||
if (xf0_side == CMazeState::kS_Right && cell.x1_24_puddle) {
|
||||
if (xf0_side == CSinglePathMaze::kS_Right && cell.x1_24_puddle) {
|
||||
x13c_24_hasPuddle = true;
|
||||
}
|
||||
if (x13c_25_hasGate) {
|
||||
|
@ -368,7 +372,7 @@ void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
xf4_gateEffectId = genObj;
|
||||
if (CActor* actor = TCastToPtr< CActor >(mgr.ObjectById(genObj))) {
|
||||
actor->SetTranslation(GetTranslation() + x120_effectPos);
|
||||
mgr.SendScriptMsg(actor, GetUniqueId(), kSM_Activate);
|
||||
mgr.DeliverScriptMsg(actor, GetUniqueId(), kSM_Activate);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -387,7 +391,6 @@ void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
for (; conn != GetConnectionList().end(); ++conn) {
|
||||
if ((conn->x0_state == kSS_Closed || conn->x0_state == kSS_DeactivateState) &&
|
||||
conn->x4_msg == kSM_Activate) {
|
||||
// TUniqueId genObj = GenerateObject(mgr, conn->x8_objId);
|
||||
bool wasGeneratingObject = mgr.IsGeneratingObject();
|
||||
mgr.SetIsGeneratingObject(true);
|
||||
TUniqueId genObj = mgr.GenerateObject(conn->x8_objId).second;
|
||||
|
@ -397,7 +400,7 @@ void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
if (CActor* actor = TCastToPtr< CActor >(mgr.ObjectById(genObj))) {
|
||||
actor->SetTransform(GetTransform());
|
||||
if (conn->x0_state == kSS_Closed) {
|
||||
mgr.SendScriptMsg(actor, GetUniqueId(), kSM_Activate);
|
||||
mgr.DeliverScriptMsg(actor, GetUniqueId(), kSM_Activate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -407,7 +410,7 @@ void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
break;
|
||||
}
|
||||
case kSM_SetToZero: {
|
||||
CMazeState* maze = mgr.CurrentMaze();
|
||||
CSinglePathMaze* maze = mgr.SinglePathMaze();
|
||||
if (x13c_24_hasPuddle && maze != nullptr) {
|
||||
if (rstl::find(x12c_puddleObjectIds.begin(), x12c_puddleObjectIds.end(), uid) !=
|
||||
x12c_puddleObjectIds.end()) {
|
||||
|
@ -415,9 +418,9 @@ void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
for (; it != x12c_puddleObjectIds.end(); ++it) {
|
||||
if (CEntity* ent = mgr.ObjectById(*it)) {
|
||||
if (!ent->GetActive()) {
|
||||
mgr.SendScriptMsg(ent, GetUniqueId(), kSM_Activate);
|
||||
mgr.DeliverScriptMsg(ent, GetUniqueId(), kSM_Activate);
|
||||
} else {
|
||||
mgr.FreeScriptObject(ent->GetUniqueId());
|
||||
mgr.DeleteObjectRequest(ent->GetUniqueId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -426,38 +429,38 @@ void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
objIdx = list.GetNextObjectIndex(objIdx)) {
|
||||
if (CScriptMazeNode* node = TCastToPtr< CScriptMazeNode >(list[objIdx])) {
|
||||
if (node->xe8_col == xe8_col - 1 && node->xec_row == xec_row &&
|
||||
node->xf0_side == CMazeState::kS_Right) {
|
||||
SMazeCell& cell = maze->GetCell(xe8_col - 1, xec_row);
|
||||
node->xf0_side == CSinglePathMaze::kS_Right) {
|
||||
SMazeCell& cell = maze->MazePoint(xe8_col - 1, xec_row);
|
||||
if (!cell.x0_25_openRight) {
|
||||
cell.x0_25_openRight = true;
|
||||
node->Reset(mgr);
|
||||
node->DeleteBarrier(mgr);
|
||||
node->x13c_25_hasGate = false;
|
||||
}
|
||||
}
|
||||
if (node->xe8_col == xe8_col && node->xec_row == xec_row &&
|
||||
node->xf0_side == CMazeState::kS_Right) {
|
||||
SMazeCell& cell = maze->GetCell(xe8_col, xec_row);
|
||||
node->xf0_side == CSinglePathMaze::kS_Right) {
|
||||
SMazeCell& cell = maze->MazePoint(xe8_col, xec_row);
|
||||
if (!cell.x0_25_openRight) {
|
||||
cell.x0_25_openRight = true;
|
||||
node->Reset(mgr);
|
||||
node->DeleteBarrier(mgr);
|
||||
node->x13c_25_hasGate = false;
|
||||
}
|
||||
}
|
||||
if (node->xe8_col == xe8_col && node->xec_row == xec_row &&
|
||||
node->xf0_side == CMazeState::kS_Top) {
|
||||
SMazeCell& cell = maze->GetCell(xe8_col, xec_row);
|
||||
node->xf0_side == CSinglePathMaze::kS_Top) {
|
||||
SMazeCell& cell = maze->MazePoint(xe8_col, xec_row);
|
||||
if (!cell.x0_24_openTop) {
|
||||
cell.x0_24_openTop = true;
|
||||
node->Reset(mgr);
|
||||
node->DeleteBarrier(mgr);
|
||||
node->x13c_25_hasGate = false;
|
||||
}
|
||||
}
|
||||
if (node->xe8_col == xe8_col && node->xec_row == xec_row + 1 &&
|
||||
node->xf0_side == CMazeState::kS_Top) {
|
||||
SMazeCell& cell = maze->GetCell(xe8_col, xec_row + 1);
|
||||
node->xf0_side == CSinglePathMaze::kS_Top) {
|
||||
SMazeCell& cell = maze->MazePoint(xe8_col, xec_row + 1);
|
||||
if (!cell.x0_24_openTop) {
|
||||
cell.x0_24_openTop = true;
|
||||
node->Reset(mgr);
|
||||
node->DeleteBarrier(mgr);
|
||||
node->x13c_25_hasGate = false;
|
||||
}
|
||||
}
|
||||
|
@ -468,14 +471,14 @@ void CScriptMazeNode::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C
|
|||
break;
|
||||
}
|
||||
case kSM_Deleted: {
|
||||
if (mgr.GetCurrentMaze()) {
|
||||
mgr.SetCurrentMaze(nullptr);
|
||||
if (mgr.GetSinglePathMaze()) {
|
||||
mgr.SetSinglePathMaze(nullptr);
|
||||
}
|
||||
Reset(mgr);
|
||||
DeleteBarrier(mgr);
|
||||
break;
|
||||
}
|
||||
case kSM_Deactivate: {
|
||||
Reset(mgr);
|
||||
DeleteBarrier(mgr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -490,10 +493,10 @@ void CScriptMazeNode::Think(float dt, CStateManager& mgr) {
|
|||
xf8_msgTimer = 1.f;
|
||||
if (x13c_26_gateActive) {
|
||||
x13c_26_gateActive = false;
|
||||
SendScriptMsgs(mgr, kSM_Deactivate);
|
||||
SendBarrierMsg(mgr, kSM_Deactivate);
|
||||
} else {
|
||||
x13c_26_gateActive = true;
|
||||
SendScriptMsgs(mgr, kSM_Activate);
|
||||
SendBarrierMsg(mgr, kSM_Activate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ void CScriptPickup::Think(float dt, CStateManager& mgr) {
|
|||
}
|
||||
|
||||
if (x26c_lifeTime && x270_curTime > x26c_lifeTime) {
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -163,7 +163,7 @@ void CScriptPickup::Touch(CActor& act, CStateManager& mgr) {
|
|||
|
||||
mgr.PlayerState()->InitializePowerUp(itemType, x260_capacity);
|
||||
mgr.PlayerState()->IncrPickUp(itemType, x25c_amount);
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
SendScriptMsgs(kSS_Arrived, mgr, kSM_None);
|
||||
|
||||
if (x260_capacity > 0) {
|
||||
|
@ -209,4 +209,4 @@ CPlayerState::EItemType CScriptPickup::GetItem() const { return x258_itemType; }
|
|||
|
||||
float CScriptPickup::GetPossibility() const { return x264_possibility; }
|
||||
|
||||
void CScriptPickup::SetSpawned() { x28c_24_generated = true; }
|
||||
void CScriptPickup::SetWasGenerated() { x28c_24_generated = true; }
|
||||
|
|
|
@ -14,13 +14,13 @@ CScriptPickupGenerator::CScriptPickupGenerator(TUniqueId uid, const rstl::string
|
|||
, x34_position(pos)
|
||||
, x40_frequency(frequency)
|
||||
, x44_delayTimer(0.0f) {
|
||||
ResetDelayTimer();
|
||||
ResetSpawnNothingCounter();
|
||||
}
|
||||
|
||||
CScriptPickupGenerator::~CScriptPickupGenerator() {}
|
||||
|
||||
void CScriptPickupGenerator::GetGeneratorIds(CStateManager& mgr, TUniqueId sender,
|
||||
rstl::vector< TUniqueId >& idsOut) const {
|
||||
void CScriptPickupGenerator::GetTargets(CStateManager& mgr, TUniqueId sender,
|
||||
rstl::vector< TUniqueId >& idsOut) const {
|
||||
idsOut.reserve(rstl::max_val(1, GetConnectionList().size()));
|
||||
rstl::vector< SConnection >::const_iterator iter = GetConnectionList().begin();
|
||||
for (; iter != GetConnectionList().end(); ++iter) {
|
||||
|
@ -40,7 +40,7 @@ void CScriptPickupGenerator::GetGeneratorIds(CStateManager& mgr, TUniqueId sende
|
|||
}
|
||||
}
|
||||
|
||||
float CScriptPickupGenerator::GetPickupTemplates(
|
||||
float CScriptPickupGenerator::GetSpawnablePickups(
|
||||
CStateManager& mgr, rstl::vector< rstl::pair< float, TEditorId > >& idsOut) const {
|
||||
float totalPossibility = 0.f;
|
||||
CPlayerState& pState = *mgr.PlayerState();
|
||||
|
@ -105,16 +105,16 @@ float CScriptPickupGenerator::GetPickupTemplates(
|
|||
return totalPossibility;
|
||||
}
|
||||
|
||||
void CScriptPickupGenerator::GeneratePickup(CStateManager& mgr, TEditorId templateId,
|
||||
TUniqueId generatorId) const {
|
||||
void CScriptPickupGenerator::SpawnPickup(CStateManager& mgr, TEditorId templateId,
|
||||
TUniqueId generatorId) const {
|
||||
TUniqueId templateUnideId = mgr.GetIdForScript(templateId);
|
||||
CEntity* pickupTempl = mgr.ObjectById(templateUnideId);
|
||||
CEntity* generator = mgr.ObjectById(generatorId);
|
||||
|
||||
if (pickupTempl && generator) {
|
||||
const bool oldGeneratingObject = mgr.IsGeneratingObject();
|
||||
bool oldGeneratingObject = mgr.IsGeneratingObject();
|
||||
mgr.SetIsGeneratingObject(true);
|
||||
const TUniqueId p = mgr.GenerateObject(templateId).second;
|
||||
TUniqueId p = mgr.GenerateObject(templateId).second;
|
||||
mgr.SetIsGeneratingObject(oldGeneratingObject);
|
||||
|
||||
if (p == kInvalidUniqueId) {
|
||||
|
@ -134,14 +134,14 @@ void CScriptPickupGenerator::GeneratePickup(CStateManager& mgr, TEditorId templa
|
|||
}
|
||||
|
||||
if (newPickup) {
|
||||
newPickup->SetSpawned();
|
||||
newPickup->SetWasGenerated();
|
||||
}
|
||||
|
||||
mgr.SendScriptMsg(newObj, GetUniqueId(), kSM_Activate);
|
||||
mgr.DeliverScriptMsg(newObj, GetUniqueId(), kSM_Activate);
|
||||
}
|
||||
}
|
||||
|
||||
void CScriptPickupGenerator::ResetDelayTimer() {
|
||||
void CScriptPickupGenerator::ResetSpawnNothingCounter() {
|
||||
if (x40_frequency > 0.f) {
|
||||
x44_delayTimer += 100.f / x40_frequency;
|
||||
} else {
|
||||
|
@ -156,12 +156,12 @@ void CScriptPickupGenerator::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
|||
if (GetActive() && x40_frequency != 100.f) {
|
||||
x44_delayTimer -= 1.f;
|
||||
if (x44_delayTimer < 0.000009f) {
|
||||
ResetDelayTimer();
|
||||
ResetSpawnNothingCounter();
|
||||
} else {
|
||||
rstl::vector< TUniqueId > generatorIds;
|
||||
GetGeneratorIds(stateMgr, sender, generatorIds);
|
||||
GetTargets(stateMgr, sender, generatorIds);
|
||||
rstl::vector< rstl::pair< float, TEditorId > > pickupTemplates;
|
||||
const float totalProb = GetPickupTemplates(stateMgr, pickupTemplates);
|
||||
const float totalProb = GetSpawnablePickups(stateMgr, pickupTemplates);
|
||||
if (pickupTemplates.empty()) {
|
||||
break;
|
||||
} else {
|
||||
|
@ -180,8 +180,8 @@ void CScriptPickupGenerator::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
|||
break;
|
||||
} else {
|
||||
const TEditorId templateId = pickupTemplates[count].second;
|
||||
GeneratePickup(stateMgr, templateId,
|
||||
generatorIds[stateMgr.Random()->Float() * generatorIds.size() * 0.99f]);
|
||||
SpawnPickup(stateMgr, templateId,
|
||||
generatorIds[stateMgr.Random()->Float() * generatorIds.size() * 0.99f]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ void CScriptShadowProjector::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
|||
}
|
||||
}
|
||||
if (x104_target == kInvalidUniqueId) {
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
#include "MetroidPrime/ScriptObjects/CScriptRipple.hpp"
|
||||
|
||||
#include "MetroidPrime/CFluidPlaneCPU.hpp"
|
||||
#include "MetroidPrime/CRipple.hpp"
|
||||
#include "MetroidPrime/CStateManager.hpp"
|
||||
#include "MetroidPrime/ScriptObjects/CScriptWater.hpp"
|
||||
|
||||
CScriptRipple::CScriptRipple(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
||||
const CVector3f& vec, bool active, float f1)
|
||||
: CEntity(uid, info, active, name), x34_magnitude(f1 >= 0.f ? f1 : 0.5f), x38_center(vec) {}
|
||||
: CEntity(uid, info, active, name)
|
||||
, x34_magnitude(f1 >= 0.f ? f1 : CRipple::kDefaultScale)
|
||||
, x38_center(vec) {}
|
||||
|
||||
CScriptRipple::~CScriptRipple() {}
|
||||
|
||||
|
@ -23,7 +26,7 @@ void CScriptRipple::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CSt
|
|||
continue;
|
||||
}
|
||||
|
||||
const CStateManager::TIdListResult& search = mgr.GetIdListForScript(conn->x8_objId);
|
||||
CStateManager::TIdListResult search = mgr.GetIdListForScript(conn->x8_objId);
|
||||
if (search.first != search.second) {
|
||||
if (CScriptWater* water =
|
||||
TCastToPtr< CScriptWater >(mgr.ObjectById(search.first->second))) {
|
||||
|
|
|
@ -7,26 +7,24 @@
|
|||
|
||||
#include "Kyoto/Math/CloseEnough.hpp"
|
||||
|
||||
#include "rstl/math.hpp"
|
||||
|
||||
CScriptSteam::CScriptSteam(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
||||
const CVector3f& pos, const CAABox& aabb, const CDamageInfo& dInfo,
|
||||
const CVector3f& orientedForce, unsigned int flags, bool active,
|
||||
CAssetId texture, float f1, float f2, float f3, float f4, bool b1)
|
||||
CAssetId texture, float f1, float f2, float f3, const float f4, bool b1)
|
||||
: CScriptTrigger(uid, name, info, pos, aabb, dInfo, orientedForce, flags, active, false, false)
|
||||
, x150_(b1)
|
||||
, x154_texture(texture)
|
||||
, x158_(f1)
|
||||
, x158_strength(f1)
|
||||
, x15c_alphaInDur(f2 / f1)
|
||||
, x160_alphaOutDur(f3 / f1) {
|
||||
float r3 = (aabb.GetMaxPoint().GetZ() < aabb.GetMaxPoint().GetY() ? aabb.GetMaxPoint().GetZ()
|
||||
: aabb.GetMaxPoint().GetY());
|
||||
r3 = (r3 < aabb.GetMaxPoint().GetX() ? r3 : aabb.GetMaxPoint().GetX());
|
||||
|
||||
if (close_enough(f4, 0.f)) {
|
||||
r3 = (r3 < f2 ? r3 : f4);
|
||||
}
|
||||
|
||||
x164_ = r3;
|
||||
x168_ = 1.f / x164_;
|
||||
, x160_alphaOutDur(f3 / f1)
|
||||
, x164_maxDist(0.f)
|
||||
, x168_ooMaxDist(0.f) {
|
||||
float r3 = rstl::min_val(aabb.GetMaxPoint().GetX(),
|
||||
rstl::min_val(aabb.GetMaxPoint().GetY(), aabb.GetMaxPoint().GetZ()));
|
||||
x164_maxDist = close_enough(f4, 0.f) ? r3 : rstl::min_val(f4, r3);
|
||||
x168_ooMaxDist = 1.f / x164_maxDist;
|
||||
}
|
||||
|
||||
CScriptSteam::~CScriptSteam() {}
|
||||
|
@ -34,7 +32,7 @@ CScriptSteam::~CScriptSteam() {}
|
|||
void CScriptSteam::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) {
|
||||
switch (msg) {
|
||||
case kSM_Deactivate:
|
||||
mgr.Player()->SetVisorSteam(0.f, x15c_alphaInDur, x160_alphaOutDur, kInvalidAssetId, x150_);
|
||||
mgr.Player()->SetVisorSteam(0.f, x15c_alphaInDur, x160_alphaOutDur, kInvalidAssetId, !x150_);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -49,20 +47,25 @@ void CScriptSteam::Think(float dt, CStateManager& mgr) {
|
|||
CScriptTrigger::Think(dt, mgr);
|
||||
|
||||
if (x148_28_playerTriggerProc && mgr.GetCameraManager()->GetFluidCounter() == 0) {
|
||||
const CVector3f& eyePos = mgr.GetPlayer()->GetEyePosition();
|
||||
const CVector3f& posDiff = (GetTranslation() - eyePos);
|
||||
const float mag = posDiff.Magnitude();
|
||||
|
||||
const float distance =
|
||||
(mag >= x164_ ? 0.f : x158_ * CMath::FastCosR((1.5707964f * mag) * x168_));
|
||||
mgr.Player()->SetVisorSteam(distance, x15c_alphaInDur, x160_alphaOutDur, x154_texture,
|
||||
x150_ == true);
|
||||
CVector3f eyePos = mgr.GetPlayer()->GetEyePosition();
|
||||
const float mag = (GetTranslation() - eyePos).Magnitude();
|
||||
// const float distance =
|
||||
// (mag >= GetMaxDist()
|
||||
// ? 0.f
|
||||
// : CMath::FastCosR((mag * 1.5707964f /* 90 deg */) * GetOOMaxDist()) * GetStrength());
|
||||
float distance;
|
||||
if (mag >= GetMaxDist()) {
|
||||
distance = 0.f;
|
||||
} else {
|
||||
distance = CMath::FastCosR((mag * 1.5707964f /* 90 deg */) * GetOOMaxDist()) * GetStrength();
|
||||
}
|
||||
mgr.Player()->SetVisorSteam(distance, GetFadeInRate(), GetFadeOutRate(), GetTextureId(),
|
||||
!x150_);
|
||||
if (x150_) {
|
||||
mgr.EnvFxManager()->SetSplashRate(2.f * distance);
|
||||
}
|
||||
} else {
|
||||
mgr.Player()->SetVisorSteam(0.f, x15c_alphaInDur, x160_alphaOutDur, kInvalidAssetId,
|
||||
x150_ == true);
|
||||
mgr.Player()->SetVisorSteam(0.f, GetFadeInRate(), GetFadeOutRate(), kInvalidAssetId, !x150_);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ void CScriptVisorGoo::Think(float, CStateManager& mgr) {
|
|||
}
|
||||
}
|
||||
}
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,11 +74,11 @@ void CPowerBomb::Think(float dt, CStateManager& mgr) {
|
|||
|
||||
if (x15c_curTime > 7.f) {
|
||||
if (x168_particle->IsSystemDeletable())
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
}
|
||||
|
||||
if (x15c_curTime > 30.f) {
|
||||
mgr.FreeScriptObject(GetUniqueId());
|
||||
mgr.DeleteObjectRequest(GetUniqueId());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue