diff --git a/src/files/binary_io.cpp b/src/files/binary_io.cpp index f12b97ed..c16083a3 100644 --- a/src/files/binary_io.cpp +++ b/src/files/binary_io.cpp @@ -4,8 +4,6 @@ #include #include -using std::string; - void BinaryWriter::put(ubyte b) { buffer.push_back(b); } @@ -18,7 +16,7 @@ void BinaryWriter::putCStr(const char* str) { } } -void BinaryWriter::put(const string& s) { +void BinaryWriter::put(const std::string& s) { size_t len = s.length(); if (len > INT16_MAX) { throw std::domain_error("length > INT16_MAX"); @@ -27,7 +25,7 @@ void BinaryWriter::put(const string& s) { put((const ubyte*)s.data(), len); } -void BinaryWriter::putShortStr(const string& s) { +void BinaryWriter::putShortStr(const std::string& s) { size_t len = s.length(); if (len > 255) { throw std::domain_error("length > 255"); @@ -144,22 +142,22 @@ float BinaryReader::getFloat32() { return value.valfloat; } -string BinaryReader::getString() { +std::string BinaryReader::getString() { uint16_t length = (uint16_t)getInt16(); if (pos+length > size) { throw std::underflow_error("unexpected end"); } pos += length; - return string((const char*)(data+pos-length), length); + return std::string((const char*)(data+pos-length), length); } -string BinaryReader::getShortString() { +std::string BinaryReader::getShortString() { ubyte length = get(); if (pos+length > size) { throw std::underflow_error("unexpected end"); } pos += length; - return string((const char*)(data+pos-length), length); + return std::string((const char*)(data+pos-length), length); } bool BinaryReader::hasNext() const { diff --git a/src/files/settings_io.cpp b/src/files/settings_io.cpp index 0d56e9e5..ed19b80f 100644 --- a/src/files/settings_io.cpp +++ b/src/files/settings_io.cpp @@ -9,8 +9,6 @@ #include "../coders/toml.h" #include "../coders/json.h" -using std::string; - toml::Wrapper* create_wrapper(EngineSettings& settings) { std::unique_ptr wrapper (new toml::Wrapper()); toml::Section& display = wrapper->add("display"); @@ -47,7 +45,7 @@ toml::Wrapper* create_wrapper(EngineSettings& settings) { return wrapper.release(); } -string write_controls() { +std::string write_controls() { json::JObject* obj = new json::JObject(); for (auto& entry : Events::bindings) { const auto& binding = entry.second; @@ -64,7 +62,7 @@ string write_controls() { return json::stringify(obj, true, " "); } -void load_controls(string filename, string source) { +void load_controls(std::string filename, std::string source) { json::JObject* obj = json::parse(filename, source); for (auto& entry : Events::bindings) { auto& binding = entry.second; @@ -73,7 +71,7 @@ void load_controls(string filename, string source) { if (jentry == nullptr) continue; inputtype type; - string typestr; + std::string typestr; jentry->str("type", typestr); if (typestr == "keyboard") { @@ -87,4 +85,4 @@ void load_controls(string filename, string source) { binding.type = type; jentry->num("code", binding.code); } -} \ No newline at end of file +} diff --git a/src/frontend/BlocksPreview.cpp b/src/frontend/BlocksPreview.cpp index fc478d00..9b81ccbf 100644 --- a/src/frontend/BlocksPreview.cpp +++ b/src/frontend/BlocksPreview.cpp @@ -11,9 +11,6 @@ #include "../voxels/Block.h" #include "ContentGfxCache.h" -using glm::vec4; -using glm::vec3; - BlocksPreview::BlocksPreview(Shader* shader, Atlas* atlas, const ContentGfxCache* cache) @@ -31,19 +28,21 @@ void BlocksPreview::begin(const Viewport* viewport) { glm::ortho(0.0f, float(viewport->getWidth()), 0.0f, float(viewport->getHeight()), -1000.0f, 1000.0f) * - glm::lookAt(vec3(2, 2, 2), vec3(0.0f), vec3(0, 1, 0))); + glm::lookAt(glm::vec3(2, 2, 2), glm::vec3(0.0f), glm::vec3(0, 1, 0))); atlas->getTexture()->bind(); } /* Draw one block preview at given screen position */ -void BlocksPreview::draw(const Block* def, int x, int y, int size, vec4 tint) { +void BlocksPreview::draw(const Block* def, int x, int y, int size, glm::vec4 tint) { uint width = viewport->getWidth(); uint height = viewport->getHeight(); y = height - y - 1; x += 2; y -= 35; - shader->uniformMatrix("u_apply", glm::translate(glm::mat4(1.0f), vec3(x/float(width) * 2, y/float(height) * 2, 0.0f))); + + glm::vec3 offset (x/float(width) * 2, y/float(height) * 2, 0.0f); + shader->uniformMatrix("u_apply", glm::translate(glm::mat4(1.0f), offset)); blockid_t id = def->rt.id; const UVRegion texfaces[6]{ cache->getRegion(id, 0), cache->getRegion(id, 1), cache->getRegion(id, 2), cache->getRegion(id, 3), @@ -54,15 +53,20 @@ void BlocksPreview::draw(const Block* def, int x, int y, int size, vec4 tint) { // something went wrong... break; case BlockModel::block: - batch->blockCube(vec3(size * 0.63f), texfaces, tint, !def->rt.emissive); + batch->blockCube(glm::vec3(size * 0.63f), texfaces, tint, !def->rt.emissive); break; case BlockModel::aabb: - batch->blockCube(def->hitbox.size() * vec3(size * 0.63f), texfaces, tint, !def->rt.emissive); + batch->blockCube(def->hitbox.size() * glm::vec3(size * 0.63f), + texfaces, tint, !def->rt.emissive); break; case BlockModel::xsprite: { - //batch->xSprite(size, size, texfaces[0], tint, !def->rt.emissive); - vec3 right = glm::normalize(vec3(1.f, 0.f, -1.f)); - batch->sprite(right*float(size)*0.43f+vec3(0, size*0.4f, 0), vec3(0.f, 1.f, 0.f), right, size*0.5f, size*0.6f, texfaces[0], tint); + glm::vec3 right = glm::normalize(glm::vec3(1.f, 0.f, -1.f)); + batch->sprite(right*float(size)*0.43f+glm::vec3(0, size*0.4f, 0), + glm::vec3(0.f, 1.f, 0.f), + right, + size*0.5f, size*0.6f, + texfaces[0], + tint); break; } } diff --git a/src/frontend/ContentGfxCache.cpp b/src/frontend/ContentGfxCache.cpp index 72e039fb..ff935f9c 100644 --- a/src/frontend/ContentGfxCache.cpp +++ b/src/frontend/ContentGfxCache.cpp @@ -7,8 +7,6 @@ #include "../graphics/Atlas.h" #include "../voxels/Block.h" -using std::string; - ContentGfxCache::ContentGfxCache(const Content* content, Assets* assets) { const ContentIndices* contentIds = content->indices; sideregions = new UVRegion[contentIds->countBlockDefs() * 6]; @@ -17,7 +15,7 @@ ContentGfxCache::ContentGfxCache(const Content* content, Assets* assets) { for (uint i = 0; i < contentIds->countBlockDefs(); i++) { Block* def = contentIds->getBlockDef(i); for (uint side = 0; side < 6; side++) { - string tex = def->textureFaces[side]; + std::string tex = def->textureFaces[side]; if (atlas->has(tex)) { sideregions[i * 6 + side] = atlas->get(tex); } else { @@ -28,7 +26,6 @@ ContentGfxCache::ContentGfxCache(const Content* content, Assets* assets) { } } -ContentGfxCache::~ContentGfxCache() -{ +ContentGfxCache::~ContentGfxCache() { delete[] sideregions; } diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index c6bf5d99..8b822802 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -239,6 +239,11 @@ void HudRenderer::drawContentAccess(const GfxContext& ctx, Player* player) { batch->render(); // blocks & items + if (Events::scroll) { + inventoryScroll -= Events::scroll * (icon_size+interval); + } + inventoryScroll = std::min(inventoryScroll, int(inv_h-viewport.getHeight())); + inventoryScroll = std::max(inventoryScroll, 0); blocksPreview->begin(&ctx.getViewport()); { Window::clearDepth(); @@ -253,7 +258,7 @@ void HudRenderer::drawContentAccess(const GfxContext& ctx, Player* player) { if (cblock->hidden) continue; int x = xs + (icon_size+interval) * (index % inv_cols); - int y = ys + (icon_size+interval) * (index / inv_cols); + int y = ys + (icon_size+interval) * (index / inv_cols) - inventoryScroll; if (mx > x && mx < x + (int)icon_size && my > y && my < y + (int)icon_size) { tint.r *= 1.2f; tint.g *= 1.2f; diff --git a/src/frontend/hud.h b/src/frontend/hud.h index b7df1267..e893d3b3 100644 --- a/src/frontend/hud.h +++ b/src/frontend/hud.h @@ -37,6 +37,7 @@ class HudRenderer { int fpsMax = 60; std::wstring fpsString; bool inventoryOpen = false; + int inventoryScroll = 0; bool pause = false; std::shared_ptr debugPanel;