#include "geometry.hpp"
#include "world.hpp"
+#include <iostream>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
+#include <glm/gtx/io.hpp>
namespace blank {
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;
}
}
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);
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();
}