Refactor some references to CRobotMain from CEngine
parent
640c0297ef
commit
6585ee9ae8
|
@ -822,7 +822,7 @@ bool CApplication::ChangeVideoConfig(const Gfx::DeviceConfig &newConfig)
|
|||
|
||||
m_device->ConfigChanged(m_deviceConfig);
|
||||
|
||||
m_engine->ResetAfterVideoConfigChanged();
|
||||
m_eventQueue->AddEvent(Event(EVENT_RESOLUTION_CHANGED));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -68,6 +68,8 @@ void InitializeEventTypeTexts()
|
|||
|
||||
|
||||
EVENT_TYPE_TEXT[EVENT_UPDINTERFACE] = "EVENT_UPDINTERFACE";
|
||||
EVENT_TYPE_TEXT[EVENT_RESOLUTION_CHANGED]= "EVENT_RESOLUTION_CHANGED";
|
||||
EVENT_TYPE_TEXT[EVENT_RELOAD_TEXTURES] = "EVENT_RELOAD_TEXTURES";
|
||||
EVENT_TYPE_TEXT[EVENT_WIN] = "EVENT_WIN";
|
||||
EVENT_TYPE_TEXT[EVENT_LOST] = "EVENT_LOST";
|
||||
|
||||
|
|
|
@ -95,6 +95,10 @@ enum EventType
|
|||
//! Event sent on user quit request
|
||||
EVENT_QUIT = 20,
|
||||
EVENT_UPDINTERFACE = 21,
|
||||
//! Event sent on resolution change
|
||||
EVENT_RESOLUTION_CHANGED = 22,
|
||||
//! Event sent when textures have to be reloaded
|
||||
EVENT_RELOAD_TEXTURES = 23,
|
||||
EVENT_WIN = 30,
|
||||
EVENT_LOST = 31,
|
||||
|
||||
|
|
|
@ -359,8 +359,6 @@ void CEngine::ResetAfterVideoConfigChanged()
|
|||
m_size = m_app->GetVideoConfig().size;
|
||||
m_mouseSize = Math::Point(0.04f, 0.04f * (static_cast<float>(m_size.x) / static_cast<float>(m_size.y)));
|
||||
|
||||
CRobotMain::GetInstancePointer()->ResetAfterVideoConfigChanged(); //TODO: Remove cross-reference to CRobotMain
|
||||
|
||||
// Update the camera projection matrix for new aspect ratio
|
||||
SetFocus(m_focus);
|
||||
|
||||
|
@ -373,13 +371,18 @@ void CEngine::ReloadAllTextures()
|
|||
FlushTextureCache();
|
||||
m_text->FlushCache();
|
||||
|
||||
CRobotMain::GetInstancePointer()->ReloadAllTextures(); //TODO: Remove cross-reference to CRobotMain
|
||||
m_app->GetEventQueue()->AddEvent(Event(EVENT_RELOAD_TEXTURES));
|
||||
UpdateGroundSpotTextures();
|
||||
LoadAllTextures();
|
||||
}
|
||||
|
||||
bool CEngine::ProcessEvent(const Event &event)
|
||||
{
|
||||
if (event.type == EVENT_RESOLUTION_CHANGED)
|
||||
{
|
||||
ResetAfterVideoConfigChanged();
|
||||
}
|
||||
|
||||
if (event.type == EVENT_KEY_DOWN)
|
||||
{
|
||||
auto data = event.GetData<KeyEventData>();
|
||||
|
|
|
@ -655,9 +655,6 @@ public:
|
|||
//! Frees all resources before exit
|
||||
void Destroy();
|
||||
|
||||
//! Resets some states and flushes textures after device was changed (e.g. resoulution changed)
|
||||
void ResetAfterVideoConfigChanged();
|
||||
|
||||
|
||||
//! Called once per frame, the call is the entry point for rendering
|
||||
void Render();
|
||||
|
@ -1188,6 +1185,10 @@ public:
|
|||
void AddDisplayCrashSpheres(const std::vector<Math::Sphere>& crashSpheres);
|
||||
|
||||
protected:
|
||||
//! Resets some states and flushes textures after device was changed (e.g. resoulution changed)
|
||||
/** Instead of calling this directly, send EVENT_RESOLUTION_CHANGED event **/
|
||||
void ResetAfterVideoConfigChanged();
|
||||
|
||||
//! Prepares the interface for 3D scene
|
||||
void Draw3DScene();
|
||||
//! Renders shadow map
|
||||
|
@ -1281,6 +1282,7 @@ protected:
|
|||
static void WriteScreenShotThread(std::unique_ptr<WriteScreenShotData> data);
|
||||
|
||||
//! Reloads all textures
|
||||
/** This additionally sends EVENT_RELOAD_TEXTURES to reload all textures not maintained by CEngine **/
|
||||
void ReloadAllTextures();
|
||||
|
||||
protected:
|
||||
|
|
|
@ -303,30 +303,6 @@ CPauseManager* CRobotMain::GetPauseManager()
|
|||
return m_pause.get();
|
||||
}
|
||||
|
||||
void CRobotMain::ResetAfterVideoConfigChanged()
|
||||
{
|
||||
// Recreate the interface (needed if the aspect ratio changes)
|
||||
// TODO: This can sometimes cause unwanted side effects, like hidden windows reappearing. To be fixed during CEGUI refactoring.
|
||||
m_eventQueue->AddEvent(Event(EVENT_UPDINTERFACE));
|
||||
CreateShortcuts();
|
||||
}
|
||||
|
||||
void CRobotMain::ReloadAllTextures()
|
||||
{
|
||||
if (m_phase == PHASE_SETUPds ||
|
||||
m_phase == PHASE_SETUPgs ||
|
||||
m_phase == PHASE_SETUPps ||
|
||||
m_phase == PHASE_SETUPcs ||
|
||||
m_phase == PHASE_SETUPss ||
|
||||
m_phase == PHASE_SIMUL ||
|
||||
m_phase == PHASE_WIN ||
|
||||
m_phase == PHASE_LOST)
|
||||
{
|
||||
ChangeColor();
|
||||
UpdateMap();
|
||||
}
|
||||
}
|
||||
|
||||
std::string PhaseToString(Phase phase)
|
||||
{
|
||||
if (phase == PHASE_WELCOME1) return "PHASE_WELCOME1";
|
||||
|
@ -693,6 +669,23 @@ bool CRobotMain::ProcessEvent(Event &event)
|
|||
return EventFrame(event);
|
||||
}
|
||||
|
||||
if (event.type == EVENT_RELOAD_TEXTURES)
|
||||
{
|
||||
if (IsPhaseWithWorld(m_phase))
|
||||
{
|
||||
ChangeColor();
|
||||
UpdateMap();
|
||||
}
|
||||
}
|
||||
|
||||
if (event.type == EVENT_RESOLUTION_CHANGED)
|
||||
{
|
||||
// Recreate the interface (needed if the aspect ratio changes)
|
||||
// TODO: This can sometimes cause unwanted side effects, like hidden windows reappearing. To be fixed during CEGUI refactoring.
|
||||
m_eventQueue->AddEvent(Event(EVENT_UPDINTERFACE));
|
||||
CreateShortcuts();
|
||||
}
|
||||
|
||||
if (event.type == EVENT_FOCUS_LOST)
|
||||
{
|
||||
GetLogger()->Trace("Window unfocused\n");
|
||||
|
|
|
@ -161,9 +161,6 @@ public:
|
|||
Ui::CDisplayText* GetDisplayText();
|
||||
CPauseManager* GetPauseManager();
|
||||
|
||||
void ResetAfterVideoConfigChanged();
|
||||
void ReloadAllTextures();
|
||||
|
||||
void ChangePhase(Phase phase);
|
||||
bool ProcessEvent(Event &event);
|
||||
Phase GetPhase();
|
||||
|
|
Loading…
Reference in New Issue