123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #include <sstream>
- #include "client/Game.h"
- Game::Game() : lengthAngle(0.0f), widthAngle(0.0f), texture("resources/textures.png")
- {
- for(int x = -6; x <= 6; x++)
- {
- for(int y = -6; y <= 6; y++)
- {
- for(int z = -6; z <= 6; z++)
- {
- if(x * x + y * y + z * z < 16)
- {
- addCube(x - 3, y - 5, z - 10);
- }
- }
- }
- }
- m.build();
- }
- void Game::addCube(float x, float y, float z)
- {
-
- m.add({x, y, z, 0.125f, 0.0f, 1, 0, 0});
- m.add({x + 1, y, z, 0.1875f, 0.0f, 1, 0, 0});
- m.add({x, y, z + 1, 0.125f, 0.0625f, 1, 0, 0});
-
- m.add({x + 1, y, z, 0.1875f, 0.0f, 1, 0, 0});
- m.add({x + 1, y, z + 1, 0.1875f, 0.0625f, 1, 0, 0});
- m.add({x, y, z + 1, 0.125f, 0.0625f, 1, 0, 0});
-
-
- m.add({x, y + 1, z, 0.25f, 0.0f, 1, 0, 0});
- m.add({x, y + 1, z + 1, 0.25f, 0.0625f, 1, 0, 0});
- m.add({x + 1, y + 1, z, 0.3125f, 0.0f, 1, 0, 0});
-
- m.add({x + 1, y + 1, z, 0.3125f, 0.0f, 1, 0, 0});
- m.add({x, y + 1, z + 1, 0.25f, 0.0625f, 1, 0, 0});
- m.add({x + 1, y + 1, z + 1, 0.3125f, 0.0625f, 1, 0, 0});
-
-
- m.add({x, y, z, 0.1875f, 0.0625f, 1, 0, 0});
- m.add({x, y, z + 1, 0.25f, 0.0625f, 1, 0, 0});
- m.add({x, y + 1, z, 0.1875f, 0.0f, 1, 0, 0});
-
- m.add({x, y, z + 1, 0.25f, 0.0625f, 1, 0, 0});
- m.add({x, y + 1, z + 1, 0.25f, 0.0f, 1, 0, 0});
- m.add({x, y + 1, z, 0.1875f, 0.0f, 1, 0, 0});
-
-
- m.add({x + 1, y, z, 0.25f, 0.0625f, 1, 0, 0});
- m.add({x + 1, y + 1, z, 0.25f, 0.0f, 1, 0, 0});
- m.add({x + 1, y, z + 1, 0.1875f, 0.0625f, 1, 0, 0});
-
- m.add({x + 1, y, z + 1, 0.1875f, 0.0625f, 1, 0, 0});
- m.add({x + 1, y + 1, z, 0.25f, 0.0f, 1, 0, 0});
- m.add({x + 1, y + 1, z + 1, 0.1875f, 0.0f, 1, 0, 0});
-
-
- m.add({x, y, z + 1, 0.1875f, 0.0625f, 1, 0, 0});
- m.add({x + 1, y, z + 1, 0.25f, 0.0625f, 1, 0, 0});
- m.add({x, y + 1, z + 1, 0.1875f, 0.0f, 1, 0, 0});
-
- m.add({x + 1, y + 1, z + 1, 0.25f, 0.0f, 1, 0, 0});
- m.add({x, y + 1, z + 1, 0.1875f, 0.0f, 1, 0, 0});
- m.add({x + 1, y, z + 1, 0.25f, 0.0625f, 1, 0, 0});
-
-
- m.add({x, y, z, 0.25f, 0.0625f, 1, 0, 0});
- m.add({x, y + 1, z, 0.25f, 0.0f, 1, 0, 0});
- m.add({x + 1, y, z, 0.1875f, 0.0625f, 1, 0, 0});
-
- m.add({x + 1, y + 1, z, 0.1875f, 0.0f, 1, 0, 0});
- m.add({x + 1, y, z, 0.1875f, 0.0625f, 1, 0, 0});
- m.add({x, y + 1, z, 0.25f, 0.0f, 1, 0, 0});
- }
- void Game::tick(const Keys& keys, const MouseButtons& mButtons, Camera& cam)
- {
- (void) mButtons;
-
- const float speed = 0.5f;
- if(keys.down.isDown())
- {
- pos.addMul(cam.getFlatBack(), speed);
- }
- if(keys.up.isDown())
- {
- pos.addMul(cam.getFlatFront(), speed);
- }
- if(keys.left.isDown())
- {
- pos.addMul(cam.getFlatLeft(), speed);
- }
- if(keys.right.isDown())
- {
- pos.addMul(cam.getFlatRight(), speed);
- }
- if(keys.jump.isDown())
- {
- pos.addMul(cam.getFlatUp(), speed);
- }
- if(keys.sneak.isDown())
- {
- pos.addMul(cam.getFlatDown(), speed);
- }
-
- const float rotation = 5.0f;
- if(keys.camLeft.isDown())
- {
- lengthAngle += rotation;
- }
- if(keys.camRight.isDown())
- {
- lengthAngle -= rotation;
- }
- if(keys.camUp.isDown() && widthAngle - rotation > -90.0f)
- {
- widthAngle -= rotation;
- }
- if(keys.camDown.isDown() && widthAngle + rotation < 90.0f)
- {
- widthAngle += rotation;
- }
- cam.storePosition();
- cam.setPosition(pos, lengthAngle, widthAngle);
- }
- void Game::renderWorld(float lag, MatrixStack& stack, Shader& sh)
- {
- (void) lag;
- (void) stack;
- (void) sh;
- texture.bind(0);
- m.draw();
- }
- void Game::renderTextOverlay(float lag, MatrixStack& stack, Shader& sh, FontRenderer& fr)
- {
- (void) lag;
- stack.get().scale(2.0f, 2.0f, 2.0f);
- sh.setMatrix("model", stack.get().getValues());
- fr.drawString(0, 0, "Das ist ein Test");
- }
|