/****************************************************************************** * 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 #include #include #include #include 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; } }