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.
211 lines
5.5 KiB
C++
211 lines
5.5 KiB
C++
//===========================================================================//
|
|
// File: apptask.cpp //
|
|
// Project: MUNGA Brick: Application //
|
|
// Contents: Interface specification for Application //
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 08/24/94 ECH Initial coding. //
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
|
// All Rights reserved worldwide //
|
|
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
|
//===========================================================================//
|
|
|
|
#include "AdeptHeaders.hpp"
|
|
|
|
#include "ApplicationTask.hpp"
|
|
#include "EntityManager.hpp"
|
|
#include <gameOS\toolOS.hpp>
|
|
|
|
#if 1
|
|
#define TASK_LOGIC(string) LOGIC("Background Tasks::" string)
|
|
#else
|
|
#define TASK_LOGIC(string)
|
|
#endif
|
|
|
|
//#############################################################################
|
|
//########################### ApplicationTask ###########################
|
|
//#############################################################################
|
|
|
|
ApplicationTask::ClassData*
|
|
ApplicationTask::DefaultData = NULL;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
ApplicationTask::InitializeClass()
|
|
{
|
|
Verify(!DefaultData);
|
|
DefaultData =
|
|
new ClassData(
|
|
ApplicationTaskClassID,
|
|
"Adept::ApplicationTask",
|
|
BackgroundTasks::DefaultData
|
|
);
|
|
Check_Object(DefaultData);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
ApplicationTask::TerminateClass()
|
|
{
|
|
Check_Object(DefaultData);
|
|
delete DefaultData;
|
|
DefaultData = NULL;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
ApplicationTask::ApplicationTask(ClassData *class_data):
|
|
Plug(class_data)
|
|
{
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
ApplicationTask::~ApplicationTask()
|
|
{
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
ApplicationTask::Execute()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
ApplicationTask::TestInstance()
|
|
{
|
|
Verify(IsDerivedFrom(DefaultData));
|
|
}
|
|
|
|
//#############################################################################
|
|
//########################### BackgroundTasks ###########################
|
|
//#############################################################################
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
BackgroundTasks::BackgroundTasks():
|
|
Plug(DefaultData),
|
|
taskSocket(NULL)
|
|
{
|
|
taskIterator = new SafeChainIteratorOf<ApplicationTask*>(&taskSocket);
|
|
Check_Object(taskIterator);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
BackgroundTasks::~BackgroundTasks()
|
|
{
|
|
Check_Object(taskIterator);
|
|
taskIterator->DeletePlugs();
|
|
Check_Object(taskIterator);
|
|
delete taskIterator;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
BackgroundTasks::AddTask(ApplicationTask *task)
|
|
{
|
|
Check_Object(this);
|
|
Check_Object(task);
|
|
taskSocket.Add(task);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
bool
|
|
BackgroundTasks::Execute()
|
|
{
|
|
Check_Object(this);
|
|
|
|
ApplicationTask *task;
|
|
|
|
Check_Object(taskIterator);
|
|
taskIterator->First();
|
|
while ((task = taskIterator->ReadAndNext()) != NULL)
|
|
{
|
|
Check_Object(task);
|
|
task->Execute();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ProcessEventTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
int
|
|
ProcessEventTask::ProcessEventCalls = 0;
|
|
|
|
bool
|
|
ProcessEventTask::Execute()
|
|
{
|
|
TASK_LOGIC("Process Event");
|
|
Check_Object(this);
|
|
bool result=false;
|
|
double stop = gos_GetHiResTime() + 800.0e-6;
|
|
Check_Object(EventQueue::Instance);
|
|
do {
|
|
result = EventQueue::Instance->ProcessOneEvent();
|
|
} while (result && gos_GetHiResTime() < stop);
|
|
return result;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FryDeathRowTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
bool
|
|
FryDeathRowTask::Execute()
|
|
{
|
|
TASK_LOGIC("Fry Death Row");
|
|
Check_Object(this);
|
|
Check_Object(EntityManager::GetInstance());
|
|
bool ret = EntityManager::GetInstance()->FryDeathRow();
|
|
|
|
return ret;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RoutePacketsTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
bool
|
|
RoutePacketsTask::Execute()
|
|
{
|
|
Check_Object(this);
|
|
TASK_LOGIC("Route Packets");
|
|
|
|
if (Network::GetInstance() != NULL)
|
|
{
|
|
Check_Object(Network::GetInstance());
|
|
while( Network::GetInstance()->RoutePacket() ){}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RoutePacketsTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
bool
|
|
RouteLocalPacketsTask::Execute()
|
|
{
|
|
Check_Object(this);
|
|
TASK_LOGIC("Route Local Packets");
|
|
|
|
if (Network::GetInstance() != NULL)
|
|
{
|
|
#ifdef GROUP_ADEPT_NETWORK
|
|
LOG_BLOCK("Game Logic::Network::Route Packet");
|
|
#endif
|
|
|
|
Check_Object(Network::GetInstance());
|
|
Network::GetInstance()->RouteLocalPacket();
|
|
|
|
}
|
|
|
|
return false;
|
|
} |