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.
98 lines
2.6 KiB
C++
98 lines
2.6 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 <utils/logger.h>
|
|
#include <assets/types/script.h>
|
|
#include <assets/types/image.h>
|
|
#include <graphics/graphics.h>
|
|
#include <graphics/camera.h>
|
|
#include "entity.h"
|
|
|
|
namespace lunarium
|
|
{
|
|
// World::World(Camera* pCam, Sizei region_size, Sizei world_size)
|
|
// : mpCamera(pCam), mRegionSize(region_size), mpWorldScript(nullptr), mWorldSize(world_size)
|
|
// {
|
|
// mActiveRegion = { 0, 0 };
|
|
// }
|
|
|
|
World::World()
|
|
{
|
|
|
|
}
|
|
|
|
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::SetWorldScript(Script* pScript)
|
|
{
|
|
mpWorldScript = pScript;
|
|
}
|
|
|
|
Script* World::GetWorldScript()
|
|
{
|
|
return mpWorldScript;
|
|
}
|
|
|
|
entt::registry* World::GetEntityRegistry()
|
|
{
|
|
return &mECSRegistry;
|
|
}
|
|
|
|
LUUID World::CreateEntity()
|
|
{
|
|
//Logger::Error(LogCategory::GAME_SYSTEM, "World::CreateEntity not implemented!");
|
|
Entity* new_ent = new Entity(*this);
|
|
|
|
if (mEntities.find(new_ent->GetUUID()) != mEntities.end())
|
|
{
|
|
Logger::Warn(LogCategory::GAME_SYSTEM, "UUID collision when creating new entity! UUID: %d", new_ent->GetUUID());
|
|
}
|
|
|
|
mEntities[new_ent->GetUUID()] = new_ent;
|
|
return new_ent->GetUUID();
|
|
}
|
|
|
|
|
|
Entity* World::GetEntity(LUUID id)
|
|
{
|
|
if (mEntities.find(id) == mEntities.end())
|
|
{
|
|
Logger::Warn(LogCategory::GAME_SYSTEM, "Entity with id: %d not found.", id);
|
|
}
|
|
return mEntities[id];
|
|
}
|
|
|
|
} |