ResourceManager
This commit is contained in:
34
Src/IAESandbox/imp/cpp/Game.cpp
Normal file
34
Src/IAESandbox/imp/cpp/Game.cpp
Normal file
@ -0,0 +1,34 @@
|
||||
#include <Game.hpp>
|
||||
#include <Player.hpp>
|
||||
#include <Map.hpp>
|
||||
|
||||
namespace ia::iae::game
|
||||
{
|
||||
RefPtr<iae::Scene> scene;
|
||||
|
||||
VOID Game::Initialize()
|
||||
{
|
||||
const auto player = MakeRefPtr<Player>(m_engine);
|
||||
player->SetLocalPosition({200, 150, 0});
|
||||
|
||||
const auto map = MakeRefPtr<TiledMap>(m_engine);
|
||||
|
||||
scene = m_engine->CreateScene();
|
||||
scene->AddNode(map);
|
||||
scene->AddNode(player);
|
||||
|
||||
m_engine->ChangeScene(scene);
|
||||
|
||||
|
||||
}
|
||||
|
||||
VOID Game::Terminate()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
VOID Game::Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,118 +1,20 @@
|
||||
#include <IAEngine/Components/SoundEmitter.hpp>
|
||||
#include <IAEngine/Components/SpriteRenderer.hpp>
|
||||
#include <IAEngine/IAEngine.hpp>
|
||||
#include <Game.hpp>
|
||||
|
||||
#include <IAEngine/Audio.hpp>
|
||||
|
||||
#include <iacore/file.hpp>
|
||||
|
||||
namespace ia
|
||||
{
|
||||
SIZE_T Find(IN CONST Vector<UINT8> &vec, IN SIZE_T start)
|
||||
{
|
||||
UINT8 Sig[5] = {0x89, 0x50, 0x4E, 0x47, 0x0D};
|
||||
for (SIZE_T i = start; i < vec.size(); i++)
|
||||
{
|
||||
if (!memcmp(&vec[i], Sig, sizeof(Sig)))
|
||||
return i;
|
||||
}
|
||||
return SIZE_MAX;
|
||||
}
|
||||
|
||||
iae::Engine g_engine;
|
||||
|
||||
RefPtr<iae::Scene> scene;
|
||||
RefPtr<iae::Node> sprite;
|
||||
|
||||
VOID InitializeGame()
|
||||
{
|
||||
auto s = iae::Audio::CreateSound(File::ReadToVector("Res/Audio/SFX/gunshot.wav"));
|
||||
s.LoopTimes() = 0;
|
||||
|
||||
sprite = MakeRefPtr<iae::Node>();
|
||||
const auto spriteRenderer = sprite->AddComponent<iae::SpriteRendererComponent>();
|
||||
|
||||
{
|
||||
const auto data = File::ReadToVector("Res/Graphics/iae/010_1.iae");
|
||||
IA_RELEASE_ASSERT(!memcmp(&data[0], "iae.", 4));
|
||||
const auto frameCount = *reinterpret_cast<CONST UINT32 *>(&data[6]);
|
||||
INT32 off = 10;
|
||||
for (INT32 i = 0; i < frameCount; i++)
|
||||
{
|
||||
const auto t = g_engine.CreateTexture(&data[off], data.size() - off);
|
||||
spriteRenderer->AddTexture(t);
|
||||
off = Find(data, off + 1);
|
||||
if (off == SIZE_MAX)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
iae::SpriteRendererComponent::Animation anim;
|
||||
anim.ShouldLoop = false;
|
||||
|
||||
anim.Keys.pushBack(
|
||||
iae::SpriteRendererComponent::AnimationKeyFrame{.Duration = 500,
|
||||
.ColorOverlay = iam::Vec4f{0.25f, 0.0f, 0.0f, 1.0f},
|
||||
.ShouldInterpolate = true,
|
||||
.TextureHandle = 0});
|
||||
anim.Keys.pushBack(
|
||||
iae::SpriteRendererComponent::AnimationKeyFrame{.Duration = 500,
|
||||
.ColorOverlay = iam::Vec4f{0.5f, 0.0f, 0.0f, 1.0f},
|
||||
.ShouldInterpolate = true,
|
||||
.TextureHandle = 1});
|
||||
anim.Keys.pushBack(
|
||||
iae::SpriteRendererComponent::AnimationKeyFrame{.Duration = 500,
|
||||
.ColorOverlay = iam::Vec4f{0.75f, 0.0f, 0.0f, 1.0f},
|
||||
.ShouldInterpolate = true,
|
||||
.TextureHandle = 2});
|
||||
anim.Keys.pushBack(
|
||||
iae::SpriteRendererComponent::AnimationKeyFrame{.Duration = 500,
|
||||
.ColorOverlay = iam::Vec4f{1.0f, 0.0f, 0.0f, 1.0f},
|
||||
.ShouldInterpolate = true,
|
||||
.TextureHandle = 3});
|
||||
|
||||
spriteRenderer->AddAnimation(anim);
|
||||
|
||||
spriteRenderer->BakeAnimations();
|
||||
|
||||
// const auto soundEmitter = sprite->AddComponent<iae::SoundEmitterComponent>();
|
||||
// soundEmitter->SetSound(s);
|
||||
|
||||
sprite->SetLocalPosition({100, 100, 0});
|
||||
|
||||
scene = g_engine.CreateScene();
|
||||
scene->AddNode(sprite);
|
||||
|
||||
g_engine.ChangeScene(scene);
|
||||
}
|
||||
|
||||
VOID UpdateGame()
|
||||
{
|
||||
}
|
||||
|
||||
VOID TerminateGame()
|
||||
{
|
||||
}
|
||||
} // namespace ia
|
||||
ia::iae::Engine g_engine;
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
ia::g_engine.Initialize({.GameName = "IAE Sandbox", .WindowWidth = 800, .WindowHeight = 600});
|
||||
|
||||
ia::InitializeGame();
|
||||
|
||||
while (!ia::g_engine.ShouldClose())
|
||||
g_engine.Initialize({.GameName = "IAE Sandbox", .WindowWidth = 800, .WindowHeight = 600});
|
||||
const auto game = new ia::iae::game::Game(&g_engine);
|
||||
game->Initialize();
|
||||
while (!g_engine.ShouldClose())
|
||||
{
|
||||
ia::g_engine.BeginFrame();
|
||||
|
||||
ia::UpdateGame();
|
||||
|
||||
ia::g_engine.EndFrame();
|
||||
g_engine.BeginFrame();
|
||||
game->Update();
|
||||
g_engine.EndFrame();
|
||||
}
|
||||
|
||||
ia::TerminateGame();
|
||||
|
||||
ia::g_engine.Terminate();
|
||||
|
||||
game->Terminate();
|
||||
delete game;
|
||||
g_engine.Terminate();
|
||||
return 0;
|
||||
}
|
||||
30
Src/IAESandbox/imp/cpp/Map.cpp
Normal file
30
Src/IAESandbox/imp/cpp/Map.cpp
Normal file
@ -0,0 +1,30 @@
|
||||
#include <Map.hpp>
|
||||
|
||||
namespace ia::iae::game
|
||||
{
|
||||
TiledMap::TiledMap(IN Engine *engine) : m_engine(engine)
|
||||
{
|
||||
m_musicEmitter = AddComponent<SoundEmitterComponent>();
|
||||
m_atlasRenderer = AddComponent<AtlasRendererComponent>();
|
||||
}
|
||||
|
||||
VOID TiledMap::OnAdded(IN Scene *scene)
|
||||
{
|
||||
Node::OnAdded(scene);
|
||||
}
|
||||
|
||||
VOID TiledMap::OnRemoved()
|
||||
{
|
||||
Node::OnRemoved();
|
||||
}
|
||||
|
||||
VOID TiledMap::Draw()
|
||||
{
|
||||
Node::Draw();
|
||||
}
|
||||
|
||||
VOID TiledMap::Update()
|
||||
{
|
||||
Node::Update();
|
||||
}
|
||||
} // namespace ia::iae::game
|
||||
34
Src/IAESandbox/imp/cpp/Player.cpp
Normal file
34
Src/IAESandbox/imp/cpp/Player.cpp
Normal file
@ -0,0 +1,34 @@
|
||||
#include <Player.hpp>
|
||||
|
||||
#include <IAEngine/Input.hpp>
|
||||
|
||||
#include <IACore/File.hpp>
|
||||
|
||||
namespace ia::iae::game
|
||||
{
|
||||
Player::Player(IN Engine *engine) : m_engine(engine)
|
||||
{
|
||||
m_spriteRenderer = AddComponent<SpriteRendererComponent>();
|
||||
}
|
||||
|
||||
VOID Player::OnAdded(IN Scene *scene)
|
||||
{
|
||||
Node::OnAdded(scene);
|
||||
}
|
||||
|
||||
VOID Player::OnRemoved()
|
||||
{
|
||||
|
||||
Node::OnRemoved();
|
||||
}
|
||||
|
||||
VOID Player::Draw()
|
||||
{
|
||||
Node::Draw();
|
||||
}
|
||||
|
||||
VOID Player::Update()
|
||||
{
|
||||
Node::Update();
|
||||
}
|
||||
} // namespace ia::iae::game
|
||||
19
Src/IAESandbox/imp/hpp/Game.hpp
Normal file
19
Src/IAESandbox/imp/hpp/Game.hpp
Normal file
@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include <IAEngine/IAEngine.hpp>
|
||||
|
||||
namespace ia::iae::game
|
||||
{
|
||||
class Game
|
||||
{
|
||||
public:
|
||||
Game(IN Engine* engine): m_engine(engine) {}
|
||||
|
||||
VOID Initialize();
|
||||
VOID Terminate();
|
||||
VOID Update();
|
||||
|
||||
private:
|
||||
Engine* CONST m_engine;
|
||||
};
|
||||
}
|
||||
24
Src/IAESandbox/imp/hpp/Map.hpp
Normal file
24
Src/IAESandbox/imp/hpp/Map.hpp
Normal file
@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include <IAEngine/Components/SoundEmitter.hpp>
|
||||
#include <IAEngine/Components/AtlasRenderer.hpp>
|
||||
#include <IAEngine/IAEngine.hpp>
|
||||
|
||||
namespace ia::iae::game
|
||||
{
|
||||
class TiledMap : public Node
|
||||
{
|
||||
public:
|
||||
TiledMap(IN Engine* engine);
|
||||
|
||||
VIRTUAL VOID OnAdded(IN Scene *scene) OVERRIDE;
|
||||
VIRTUAL VOID OnRemoved() OVERRIDE;
|
||||
VIRTUAL VOID Draw() OVERRIDE;
|
||||
VIRTUAL VOID Update() OVERRIDE;
|
||||
|
||||
private:
|
||||
Engine* CONST m_engine;
|
||||
RefPtr<SoundEmitterComponent> m_musicEmitter;
|
||||
RefPtr<AtlasRendererComponent> m_atlasRenderer;
|
||||
};
|
||||
}
|
||||
27
Src/IAESandbox/imp/hpp/Player.hpp
Normal file
27
Src/IAESandbox/imp/hpp/Player.hpp
Normal file
@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include <IAEngine/Components/SoundEmitter.hpp>
|
||||
#include <IAEngine/Components/SpriteRenderer.hpp>
|
||||
#include <IAEngine/IAEngine.hpp>
|
||||
|
||||
namespace ia::iae::game
|
||||
{
|
||||
class Player : public Node
|
||||
{
|
||||
public:
|
||||
Player(IN Engine *engine);
|
||||
|
||||
VIRTUAL VOID OnAdded(IN Scene *scene) OVERRIDE;
|
||||
VIRTUAL VOID OnRemoved() OVERRIDE;
|
||||
VIRTUAL VOID Draw() OVERRIDE;
|
||||
VIRTUAL VOID Update() OVERRIDE;
|
||||
|
||||
private:
|
||||
INT32 m_speed{};
|
||||
UINT8 m_direction{};
|
||||
|
||||
private:
|
||||
Engine *CONST m_engine;
|
||||
RefPtr<SpriteRendererComponent> m_spriteRenderer;
|
||||
};
|
||||
} // namespace ia::iae::game
|
||||
Reference in New Issue
Block a user