|
|
|
@ -5,7 +5,10 @@ |
|
|
|
|
#include <functional> |
|
|
|
|
#include "constants.hpp" |
|
|
|
|
#include "stats.hpp" |
|
|
|
|
#include "worldbuilder.hpp" |
|
|
|
|
#include "levelmanager.hpp" |
|
|
|
|
#include "components.hpp" |
|
|
|
|
|
|
|
|
|
using namespace components; |
|
|
|
|
|
|
|
|
|
void draw_gui(sf::RenderWindow &window, sf::Text &text, Stats &stats) { |
|
|
|
|
sf::RectangleShape rect({SCREEN_WIDTH - RAY_VIEW_WIDTH, SCREEN_HEIGHT}); |
|
|
|
@ -20,36 +23,13 @@ void draw_gui(sf::RenderWindow &window, sf::Text &text, Stats &stats) { |
|
|
|
|
window.draw(text); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Matrix generate_map(Map& map, Point &player) { |
|
|
|
|
// generate the world and make the map
|
|
|
|
|
WorldBuilder builder(map); |
|
|
|
|
builder.generate_map(); |
|
|
|
|
|
|
|
|
|
bool can_place = map.place_entity(1, player); |
|
|
|
|
dbc::check(can_place, "couldn't place the player"); |
|
|
|
|
|
|
|
|
|
auto &tiles = map.tiles(); |
|
|
|
|
tiles.dump(player.x, player.y); |
|
|
|
|
|
|
|
|
|
auto bad_map = matrix::make(tiles.width(), tiles.height()); |
|
|
|
|
|
|
|
|
|
for(matrix::each_cell it(tiles.$tile_ids); it.next();) { |
|
|
|
|
switch(tiles.$tile_ids[it.y][it.x]) { |
|
|
|
|
case 0x289e: |
|
|
|
|
bad_map[it.y][it.x] = 0; break; |
|
|
|
|
case 0xa5b8: |
|
|
|
|
bad_map[it.y][it.x] = 1; break; |
|
|
|
|
case 0x19f0: |
|
|
|
|
bad_map[it.y][it.x] = 2; break; |
|
|
|
|
case 0x16de: |
|
|
|
|
bad_map[it.y][it.x] = 3; break; |
|
|
|
|
default: |
|
|
|
|
bad_map[it.y][it.x] = 0; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
Matrix generate_map(TexturePack &textures, GameLevel &level, Point &player_out) { |
|
|
|
|
auto &tiles = level.map->tiles(); |
|
|
|
|
auto &player = level.world->get_the<Player>(); |
|
|
|
|
auto &player_position = level.world->get<Position>(player.entity); |
|
|
|
|
player_out = player_position.location; |
|
|
|
|
|
|
|
|
|
matrix::dump("CONVERTED MAP", bad_map); |
|
|
|
|
return bad_map; |
|
|
|
|
return textures.convert_char_to_texture(tiles.$tile_ids); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void draw_weapon(sf::RenderWindow &window, sf::Sprite &weapon, float rotation) { |
|
|
|
@ -66,11 +46,18 @@ int main() { |
|
|
|
|
text.setFillColor({255,255,255}); |
|
|
|
|
text.setPosition({10,10}); |
|
|
|
|
|
|
|
|
|
Map map(30, 30); |
|
|
|
|
Point player{0, 0}; |
|
|
|
|
auto MAP = generate_map(map, player); |
|
|
|
|
LevelManager levels; |
|
|
|
|
GameLevel &cur_level = levels.current(); |
|
|
|
|
|
|
|
|
|
TexturePack textures; |
|
|
|
|
textures.load_tiles(); |
|
|
|
|
textures.load_sprites(); |
|
|
|
|
textures.position_sprite(4.0, 3.55, "evil_eye"); |
|
|
|
|
|
|
|
|
|
auto map = generate_map(textures, cur_level, player); |
|
|
|
|
|
|
|
|
|
Raycaster rayview(window, MAP, RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT); |
|
|
|
|
Raycaster rayview(window, textures, map, RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT); |
|
|
|
|
rayview.set_position(RAY_VIEW_X, RAY_VIEW_Y); |
|
|
|
|
rayview.position_camera(player.x, player.y); |
|
|
|
|
rayview.init_shaders(); |
|
|
|
@ -126,7 +113,7 @@ int main() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(sf::Mouse::isButtonPressed(sf::Mouse::Button::Left)) { |
|
|
|
|
rayview.$anim.play(); |
|
|
|
|
rayview.$anim.play(false); |
|
|
|
|
rotation = -30.0f; |
|
|
|
|
} else { |
|
|
|
|
rotation = -10.0f; |
|
|
|
|