Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
186 lines
4.6 KiB
C++
186 lines
4.6 KiB
C++
#include "AdeptHeaders.hpp"
|
|
|
|
#include "GUIManager.hpp"
|
|
#include "GUIObject.hpp"
|
|
#include "GUITextObject.hpp"
|
|
|
|
|
|
//#############################################################################
|
|
//########################### GUIGroup ###################################
|
|
//#############################################################################
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
GUIGroup::GUIGroup(const char *group_name) :
|
|
Plug(Plug::DefaultData),
|
|
guiObjects(NULL, true),
|
|
guiTextObjects(NULL)
|
|
{
|
|
groupName = group_name;
|
|
}
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
GUIGroup::~GUIGroup()
|
|
{
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
GUIGroup::AddTextObject(GUITextObject *gui_text_object)
|
|
{
|
|
Check_Object(this);
|
|
Check_Object(gui_text_object);
|
|
guiTextObjects.Add(gui_text_object);
|
|
}
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
GUIGroup::AddGUIObject(GUIObject *gui_object)
|
|
{
|
|
Check_Object(this);
|
|
Check_Object(gui_object);
|
|
guiObjects.AddValue(gui_object, gui_object->guiObjectName);
|
|
}
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
GUIObject*
|
|
GUIGroup::FindGUIObject(const char *object_name)
|
|
{
|
|
Check_Object(this);
|
|
return guiObjects.Find(object_name);
|
|
}
|
|
|
|
//#######################################################################
|
|
//########################### GUIManager ###########################
|
|
//#######################################################################
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
GUIManager::GUIManager() :
|
|
Plug(Plug::DefaultData),
|
|
guiObjects(NULL, true),
|
|
guiGroups(NULL, true)
|
|
{
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
GUIManager::~GUIManager()
|
|
{
|
|
guiObjects.DeletePlugs();
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
GUIManager::ClearGUIChain()
|
|
{
|
|
Check_Object(this);
|
|
|
|
guiObjects.DeletePlugs();
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
GUIManager::ReadObjectsFromNotation(Stuff::NotationFile *gui_contents)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(gui_contents);
|
|
|
|
NotationFile::PageIterator *pages = gui_contents->MakePageIterator();
|
|
Check_Object(pages);
|
|
Page *page;
|
|
while ((page = pages->ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(page);
|
|
GUIObject *gui_object;
|
|
gui_object = new GUIObject(GUIObject::DefaultData, page);
|
|
Check_Object(gui_object);
|
|
guiObjects.AddValue(gui_object, gui_object->guiObjectName);
|
|
}
|
|
Check_Object(pages);
|
|
delete pages;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
GUIManager::Execute()
|
|
{
|
|
Check_Object(this);
|
|
SortedChainIteratorOf<GUIObject *, MString> iterator(&guiObjects);
|
|
GUIObject *gui_object;
|
|
while((gui_object = iterator.ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(gui_object);
|
|
gui_object->Draw();
|
|
}
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
GUIManager::WriteObjectsFromFileToStream(
|
|
NotationFile *gui_contents,
|
|
MemoryStream *stream
|
|
)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(stream);
|
|
NotationFile::PageIterator *pages = gui_contents->MakePageIterator();
|
|
Check_Object(pages);
|
|
Page *page;
|
|
while ((page = pages->ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(page);
|
|
GUIObject *gui_object;
|
|
gui_object = new GUIObject(GUIObject::DefaultData, page);
|
|
Check_Object(gui_object);
|
|
gui_object->Save(stream);
|
|
|
|
Check_Object(gui_object);
|
|
delete gui_object;
|
|
}
|
|
Check_Object(pages);
|
|
delete pages;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
GUIManager::SaveObjectsToStream(Stuff::MemoryStream *stream)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(stream);
|
|
|
|
SortedChainIteratorOf<GUIObject *, MString> iterator(&guiObjects);
|
|
GUIObject *gui_object;
|
|
while((gui_object = iterator.ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(gui_object);
|
|
gui_object->Save(stream);
|
|
}
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
GUIManager::ReadObjectsFromStream(Stuff::MemoryStream *stream)
|
|
{
|
|
Check_Object(this);
|
|
Check_Pointer(stream);
|
|
|
|
while(stream->GetBytesRemaining() > 0)
|
|
{
|
|
GUIObject *gui_object;
|
|
gui_object = new GUIObject(
|
|
GUIObject::DefaultData,
|
|
stream
|
|
);
|
|
Check_Object(gui_object);
|
|
guiObjects.AddValue(gui_object, gui_object->guiObjectName);
|
|
}
|
|
} |