mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-20 06:01:16 +00:00
Add rumble event for hit actor
This commit is contained in:
parent
c9930d10f9
commit
b16414059c
@ -791,6 +791,11 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event)
|
|||||||
SDL_Log("Game started");
|
SDL_Log("Game started");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (event->user.type == g_legoSdlEvents.m_hitActor) {
|
||||||
|
if (InputManager()) {
|
||||||
|
InputManager()->HandleRumbleEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return SDL_APP_CONTINUE;
|
return SDL_APP_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -153,6 +153,7 @@ class LegoInputManager : public MxPresenter {
|
|||||||
MxResult GetNavigationKeyStates(MxU32& p_keyFlags);
|
MxResult GetNavigationKeyStates(MxU32& p_keyFlags);
|
||||||
MxResult GetNavigationTouchStates(MxU32& p_keyFlags);
|
MxResult GetNavigationTouchStates(MxU32& p_keyFlags);
|
||||||
LEGO1_EXPORT MxBool HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touchScheme);
|
LEGO1_EXPORT MxBool HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touchScheme);
|
||||||
|
LEGO1_EXPORT void HandleRumbleEvent();
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1005b8d0
|
// SYNTHETIC: LEGO1 0x1005b8d0
|
||||||
// LegoInputManager::`scalar deleting destructor'
|
// LegoInputManager::`scalar deleting destructor'
|
||||||
|
|||||||
@ -71,6 +71,7 @@ LegoNamedTexture* ReadNamedTexture(LegoStorage* p_storage);
|
|||||||
void WriteDefaultTexture(LegoStorage* p_storage, const char* p_name);
|
void WriteDefaultTexture(LegoStorage* p_storage, const char* p_name);
|
||||||
void WriteNamedTexture(LegoStorage* p_storage, LegoNamedTexture* p_namedTexture);
|
void WriteNamedTexture(LegoStorage* p_storage, LegoNamedTexture* p_namedTexture);
|
||||||
void LoadFromNamedTexture(LegoNamedTexture* p_namedTexture);
|
void LoadFromNamedTexture(LegoNamedTexture* p_namedTexture);
|
||||||
|
void HitActorEvent();
|
||||||
|
|
||||||
// FUNCTION: BETA10 0x100260a0
|
// FUNCTION: BETA10 0x100260a0
|
||||||
inline void StartIsleAction(IsleScript::Script p_objectId)
|
inline void StartIsleAction(IsleScript::Script p_objectId)
|
||||||
|
|||||||
@ -782,3 +782,10 @@ void LoadFromNamedTexture(LegoNamedTexture* p_namedTexture)
|
|||||||
textureInfo->LoadBits(p_namedTexture->GetTexture()->GetImage()->GetBits());
|
textureInfo->LoadBits(p_namedTexture->GetTexture()->GetImage()->GetBits());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HitActorEvent()
|
||||||
|
{
|
||||||
|
SDL_Event event;
|
||||||
|
event.user.type = g_legoSdlEvents.m_hitActor;
|
||||||
|
SDL_PushEvent(&event);
|
||||||
|
}
|
||||||
|
|||||||
@ -626,3 +626,14 @@ MxBool LegoInputManager::HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touc
|
|||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LegoInputManager::HandleRumbleEvent()
|
||||||
|
{
|
||||||
|
if (m_joystick != NULL && SDL_GamepadConnected(m_joystick) == TRUE) {
|
||||||
|
const Uint16 frequency = 65535 / 3;
|
||||||
|
const Uint32 durationMs = 1000;
|
||||||
|
SDL_RumbleGamepad(m_joystick, frequency, frequency, durationMs);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add support for SDL Haptic API
|
||||||
|
}
|
||||||
|
|||||||
@ -235,6 +235,7 @@ MxResult LegoExtraActor::HitActor(LegoPathActor* p_actor, MxBool p_bool)
|
|||||||
assert(m_roi);
|
assert(m_roi);
|
||||||
assert(SoundManager()->GetCacheSoundManager());
|
assert(SoundManager()->GetCacheSoundManager());
|
||||||
SoundManager()->GetCacheSoundManager()->Play("crash5", m_roi->GetName(), FALSE);
|
SoundManager()->GetCacheSoundManager()->Play("crash5", m_roi->GetName(), FALSE);
|
||||||
|
HitActorEvent();
|
||||||
m_scheduledTime = Timer()->GetTime() + m_disAnim->GetDuration();
|
m_scheduledTime = Timer()->GetTime() + m_disAnim->GetDuration();
|
||||||
m_prevWorldSpeed = GetWorldSpeed();
|
m_prevWorldSpeed = GetWorldSpeed();
|
||||||
VTable0xc4();
|
VTable0xc4();
|
||||||
@ -248,6 +249,7 @@ MxResult LegoExtraActor::HitActor(LegoPathActor* p_actor, MxBool p_bool)
|
|||||||
LegoROI* roi = GetROI();
|
LegoROI* roi = GetROI();
|
||||||
assert(roi);
|
assert(roi);
|
||||||
SoundManager()->GetCacheSoundManager()->Play("crash5", m_roi->GetName(), FALSE);
|
SoundManager()->GetCacheSoundManager()->Play("crash5", m_roi->GetName(), FALSE);
|
||||||
|
HitActorEvent();
|
||||||
VTable0xc4();
|
VTable0xc4();
|
||||||
SetActorState(c_two | c_noCollide);
|
SetActorState(c_two | c_noCollide);
|
||||||
Mx3DPointFloat dir = p_actor->GetWorldDirection();
|
Mx3DPointFloat dir = p_actor->GetWorldDirection();
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
struct LegoSdlEvents {
|
struct LegoSdlEvents {
|
||||||
Uint32 m_windowsMessage;
|
Uint32 m_windowsMessage;
|
||||||
Uint32 m_presenterProgress;
|
Uint32 m_presenterProgress;
|
||||||
|
Uint32 m_hitActor;
|
||||||
};
|
};
|
||||||
|
|
||||||
LEGO1_EXPORT extern LegoSdlEvents g_legoSdlEvents;
|
LEGO1_EXPORT extern LegoSdlEvents g_legoSdlEvents;
|
||||||
|
|||||||
@ -163,9 +163,10 @@ MxResult MxOmni::Create(MxOmniCreateParam& p_param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
Uint32 event = SDL_RegisterEvents(2);
|
Uint32 event = SDL_RegisterEvents(3);
|
||||||
g_legoSdlEvents.m_windowsMessage = event + 0;
|
g_legoSdlEvents.m_windowsMessage = event + 0;
|
||||||
g_legoSdlEvents.m_presenterProgress = event + 1;
|
g_legoSdlEvents.m_presenterProgress = event + 1;
|
||||||
|
g_legoSdlEvents.m_hitActor = event + 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = SUCCESS;
|
result = SUCCESS;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user