mirror of
https://github.com/Motschen/Adventura.git
synced 2025-12-17 12:15:10 +01:00
Support multiple and custom levels
This commit is contained in:
@@ -2,19 +2,20 @@
|
||||
#include "world.hpp"
|
||||
#include "blockRegistry.hpp"
|
||||
|
||||
bool tryWalk(World& world, Player& player, bool left);
|
||||
bool tryGoDown(World& world, Player& player);
|
||||
bool tryGoUp(World& world, Player& player);
|
||||
|
||||
bool onInput(char lastChar, World& world, Player& player) {
|
||||
switch (lastChar) {
|
||||
case ' ':
|
||||
case 'w':
|
||||
case 'W':
|
||||
return tryGoUp(world, player);
|
||||
|
||||
case 'a':
|
||||
case 'A':
|
||||
player.move(-1, 0);
|
||||
return true;
|
||||
return tryWalk(world, player, true);
|
||||
|
||||
case 's':
|
||||
case 'S':
|
||||
@@ -22,12 +23,18 @@ bool onInput(char lastChar, World& world, Player& player) {
|
||||
|
||||
case 'd':
|
||||
case 'D':
|
||||
player.move(1, 0);
|
||||
return true;
|
||||
return tryWalk(world, player, false);
|
||||
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
bool tryWalk(World& world, Player& player, bool left) {
|
||||
if (!world.getBlockAt(player.getPos()+(left ? BlockPos(-1, 1) : BlockPos(1, 1))).getSettings().hasCollision()) {
|
||||
player.move(left ? BlockPos(-1, 0) : BlockPos(1,0));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool tryGoDown(World& world, Player& player) {
|
||||
if (world.getBlockAt(player.getPos()+BlockPos(0, 2)).getSettings().isClimbableFromTop() || world.getBlockAt(player.getPos()+BlockPos(0, 3)).getSettings().isClimbableFromTop()) {
|
||||
player.move(0, 1);
|
||||
@@ -40,5 +47,13 @@ bool tryGoUp(World& world, Player& player) {
|
||||
player.move(0, -1);
|
||||
return true;
|
||||
}
|
||||
else if (world.getBlockAt(player.getPos()+BlockPos(1, 1)).getSettings().hasCollision() && !world.getBlockAt(player.getPos()+BlockPos(1, 0)).getSettings().isSolid()) {
|
||||
player.move(1, -1);
|
||||
return true;
|
||||
}
|
||||
else if (world.getBlockAt(player.getPos()+BlockPos(-1, 1)).getSettings().hasCollision() && !world.getBlockAt(player.getPos()+BlockPos(-1, 0)).getSettings().isSolid()) {
|
||||
player.move(-1, -1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user