X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Finterface.cpp;h=f4b13b015d6d69fcbf6adbfc6e0a92d6c3d6454e;hb=b368ecb2c0f34e27b1d3b97cceb218b554dee324;hp=1f66b73e06ffc56afd1da35b1b502cafbdb0d193;hpb=f924498d348c33d0c27f129c599a7466312253b2;p=blank.git diff --git a/src/interface.cpp b/src/interface.cpp index 1f66b73..f4b13b0 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -3,8 +3,10 @@ #include "geometry.hpp" #include "world.hpp" +#include #include #include +#include namespace blank { @@ -65,6 +67,22 @@ void Interface::Handle(const SDL_KeyboardEvent &event) { TurnBlock(); } break; + + case SDLK_b: + if (event.state == SDL_PRESSED) { + PrintBlockInfo(); + } + break; + case SDLK_l: + if (event.state == SDL_PRESSED) { + PrintLightInfo(); + } + break; + case SDLK_p: + if (event.state == SDL_PRESSED) { + PrintSelectionInfo(); + } + break; } } @@ -78,6 +96,38 @@ void Interface::TurnBlock() { hud.Display(selection); } +void Interface::PrintBlockInfo() { + std::cout << std::endl; + if (!aim_chunk) { + std::cout << "not looking at any block" << std::endl; + return; + } + std::cout << "looking at block " << aim_block + << " " << Chunk::ToCoords(aim_block) + << " of chunk " << aim_chunk->Position() + << std::endl; + Print(aim_chunk->BlockAt(aim_block)); +} + +void Interface::PrintLightInfo() { + std::cout + << "light level " << world.PlayerChunk().GetLight(world.Player().Position()) + << " at position " << world.Player().Position() + << std::endl; +} + +void Interface::PrintSelectionInfo() { + std::cout << std::endl; + Print(selection); +} + +void Interface::Print(const Block &block) { + std::cout << "type: " << block.type + << ", face: " << block.GetFace() + << ", turn: " << block.GetTurn() + << std::endl; +} + void Interface::Handle(const SDL_MouseMotionEvent &event) { ctrl.RotateYaw(event.xrel * yaw_sensitivity); @@ -110,13 +160,13 @@ void Interface::PlaceBlock() { mod_chunk = &world.Next(*aim_chunk, aim_normal); next_pos -= aim_normal * glm::vec3(Chunk::Extent()); } - mod_chunk->BlockAt(next_pos) = selection; + mod_chunk->SetBlock(next_pos, selection); mod_chunk->Invalidate(); } void Interface::RemoveBlock() { if (!aim_chunk) return; - aim_chunk->BlockAt(aim_block) = remove; + aim_chunk->SetBlock(aim_block, remove); aim_chunk->Invalidate(); }