You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lunarium_OLD/src/run_modes/game/world/world.cpp

101 lines
2.4 KiB
C++

/******************************************************************************
* File - world.cpp
* Author - Joey Pollack
* Date - 2022/01/12 (y/m/d)
* Mod Date - 2022/01/20 (y/m/d)
* Description - Manages a game "world". A world is made up of regions which
* are subdivisions of the world. Each region contains: a set
* of images for the maps layers, a list of objects that spawn
* in this region and static collision data.
******************************************************************************/
#include "world.h"
#include <object/object.h>
#include <assets/types/script.h>
#include <assets/types/image.h>
#include <graphics/igraphics.h>
#include <graphics/camera.h>
namespace lunarium
{
World::World(Camera* pCam, Sizei region_size)
: mpCamera(pCam), mRegionSize(region_size), mpWorldScript(nullptr), mRegions(region_size)
{
mActiveRegion = { 0, 0 };
mRegions.SetAll(nullptr);
}
void World::OnLoad()
{
// TODO: Call OnLoad in the world script and on each region script
}
void World::OnUnload()
{
// TODO: Call OnUnLoad in the world script and on each region script
}
void World::Update(float dt)
{
// TODO: Call Update in the world script and on each region script
}
void World::Render(Graphics* pGraphics) const
{
// TODO: Call Render in the world script and on each region
}
void World::RenderToTexture(Graphics* pGraphics, Image* pTexture) const
{
}
// void World::AddGameObject(GameObject* pObj)
// {
// }
// bool World::RemoveGameObject(GameObject* pObj)
// {
// }
OpRes World::SetRegion(Region* region, Point2Di at)
{
if (*mRegions[at] != nullptr)
{
return OpRes::Fail("World::SetRegion failed because a region already exists at (%n, %n)", at.X, at.Y);
}
*mRegions[at] = region;
return OpRes::OK();
}
World::Region* World::GetRegion(Point2Di at)
{
return *mRegions[at];
}
bool World::RemoveRegion(Point2Di at)
{
if (*mRegions[at] == nullptr)
{
return false;
}
*mRegions[at] = nullptr;
return true;
}
void World::SetWorldScript(Script* pScript)
{
mpWorldScript = pScript;
}
Script* World::GetWorldScript()
{
return mpWorldScript;
}
}