Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
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.
2026-06-24 21:28:16 -05:00

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);
}
}