#include "FrameCounter.hpp"
#include "State.hpp"
#include "StateControl.hpp"
-#include "TextureIndex.hpp"
#include "init.hpp"
#include "../audio/Sound.hpp"
#include "../model/ModelRegistry.hpp"
#include "../model/Shape.hpp"
#include "../model/ShapeRegistry.hpp"
+#include "../shared/ResourceIndex.hpp"
#include "../world/BlockType.hpp"
#include "../world/BlockTypeRegistry.hpp"
#include "../world/Entity.hpp"
void Application::Handle(const SDL_WindowEvent &event) {
switch (event.event) {
case SDL_WINDOWEVENT_FOCUS_GAINED:
- env.window.GrabMouse();
+ GetState().OnFocus();
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
- env.window.ReleaseMouse();
+ GetState().OnBlur();
break;
case SDL_WINDOWEVENT_RESIZED:
env.viewport.Resize(event.data1, event.data2);
+ GetState().OnResize(env.viewport);
break;
default:
break;
void AssetLoader::LoadBlockTypes(
const string &set_name,
BlockTypeRegistry ®,
- TextureIndex &tex_index,
+ ResourceIndex &snd_index,
+ ResourceIndex &tex_index,
const ShapeRegistry &shapes
) const {
string full = data + set_name + ".types";
in.ReadVec(type.outline_color);
} else if (name == "label") {
in.ReadString(type.label);
+ } else if (name == "place_sound") {
+ in.ReadString(tex_name);
+ type.place_sound = snd_index.GetID(tex_name);
+ } else if (name == "remove_sound") {
+ in.ReadString(tex_name);
+ type.remove_sound = snd_index.GetID(tex_name);
} else if (name == "luminosity") {
type.luminosity = in.GetInt();
} else if (name == "block_light") {
void AssetLoader::LoadModels(
const string &set_name,
ModelRegistry &models,
- TextureIndex &tex_index,
+ ResourceIndex &tex_index,
const ShapeRegistry &shapes
) const {
string full = data + set_name + ".models";
in.Skip(Token::EQUALS);
if (prop_name == "root") {
model.RootPart().Read(in, tex_index, shapes);
+ } else if (prop_name == "body") {
+ model.SetBody(in.GetULong());
+ } else if (prop_name == "eyes") {
+ model.SetEyes(in.GetULong());
} else {
while (in.HasMore() && in.Peek().type != Token::SEMICOLON) {
in.Next();
SDL_FreeSurface(srf);
}
-void AssetLoader::LoadTextures(const TextureIndex &index, ArrayTexture &tex) const {
+void AssetLoader::LoadTextures(const ResourceIndex &index, ArrayTexture &tex) const {
// TODO: where the hell should that size come from?
tex.Reserve(16, 16, index.Size(), Format());
for (const auto &entry : index.Entries()) {
}
-TextureIndex::TextureIndex()
-: id_map() {
-
-}
-
-int TextureIndex::GetID(const string &name) {
- auto entry = id_map.find(name);
- if (entry == id_map.end()) {
- auto result = id_map.emplace(name, Size());
- return result.first->second;
- } else {
- return entry->second;
- }
-}
-
-
void FrameCounter::EnterFrame() noexcept {
last_enter = SDL_GetTicks();
last_tick = last_enter;