Quick hack to test finding a better light. If you find the gold you get a better light.
This commit is contained in:
parent
a9217e8423
commit
62f986719d
3 changed files with 9 additions and 2 deletions
|
@ -48,4 +48,8 @@ namespace components {
|
||||||
struct EnemyConfig {
|
struct EnemyConfig {
|
||||||
int HEARING_DISTANCE;
|
int HEARING_DISTANCE;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct LightSource {
|
||||||
|
int strength = 100;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
1
main.cpp
1
main.cpp
|
@ -33,6 +33,7 @@ void configure_world(DinkyECS::World &world, Map &game_map) {
|
||||||
world.set<Combat>(player.entity, {100, 10});
|
world.set<Combat>(player.entity, {100, 10});
|
||||||
world.set<Tile>(player.entity, {config.PLAYER_TILE});
|
world.set<Tile>(player.entity, {config.PLAYER_TILE});
|
||||||
world.set<Inventory>(player.entity, {5});
|
world.set<Inventory>(player.entity, {5});
|
||||||
|
world.set<LightSource>(player.entity, {200});
|
||||||
|
|
||||||
auto enemy = world.entity();
|
auto enemy = world.entity();
|
||||||
world.set<Position>(enemy, {game_map.place_entity(1)});
|
world.set<Position>(enemy, {game_map.place_entity(1)});
|
||||||
|
|
|
@ -117,9 +117,11 @@ void System::collision(DinkyECS::World &world, Player &player) {
|
||||||
auto loot = world.get<Loot>(entity);
|
auto loot = world.get<Loot>(entity);
|
||||||
auto &loot_pos = world.get<Position>(entity);
|
auto &loot_pos = world.get<Position>(entity);
|
||||||
auto &inventory = world.get<Inventory>(player.entity);
|
auto &inventory = world.get<Inventory>(player.entity);
|
||||||
|
auto &light = world.get<LightSource>(player.entity);
|
||||||
|
|
||||||
world.send<Events::GUI>(Events::GUI::LOOT, entity, loot);
|
world.send<Events::GUI>(Events::GUI::LOOT, entity, loot);
|
||||||
inventory.gold += loot.amount;
|
inventory.gold += loot.amount;
|
||||||
|
light.strength = 100;
|
||||||
collider.remove(loot_pos.location);
|
collider.remove(loot_pos.location);
|
||||||
} else {
|
} else {
|
||||||
println("UNKNOWN COLLISION TYPE {}", entity);
|
println("UNKNOWN COLLISION TYPE {}", entity);
|
||||||
|
@ -145,6 +147,7 @@ void System::draw_map(DinkyECS::World &world, Map &game_map, ftxui::Canvas &canv
|
||||||
const auto& config = world.get_the<MapConfig>();
|
const auto& config = world.get_the<MapConfig>();
|
||||||
const auto& player = world.get_the<Player>();
|
const auto& player = world.get_the<Player>();
|
||||||
const auto& player_position = world.get<Position>(player.entity);
|
const auto& player_position = world.get<Position>(player.entity);
|
||||||
|
const auto& player_light = world.get<LightSource>(player.entity);
|
||||||
Point start = game_map.center_camera(player_position.location, view_x, view_y);
|
Point start = game_map.center_camera(player_position.location, view_x, view_y);
|
||||||
auto &walls = game_map.walls();
|
auto &walls = game_map.walls();
|
||||||
auto &paths = game_map.paths();
|
auto &paths = game_map.paths();
|
||||||
|
@ -161,11 +164,10 @@ void System::draw_map(DinkyECS::World &world, Map &game_map, ftxui::Canvas &canv
|
||||||
// it gets brighter.
|
// it gets brighter.
|
||||||
const int LIGHT_MIN = 10;
|
const int LIGHT_MIN = 10;
|
||||||
const int LIGHT_MAX = 110;
|
const int LIGHT_MAX = 110;
|
||||||
int light_strength = 100; // lower is stronger
|
|
||||||
|
|
||||||
Point light_at{start.x+x, start.y+y};
|
Point light_at{start.x+x, start.y+y};
|
||||||
int dnum = paths[light_at.y][light_at.x];
|
int dnum = paths[light_at.y][light_at.x];
|
||||||
int light_value = std::clamp(255 - (dnum * light_strength), LIGHT_MIN, LIGHT_MAX);
|
int light_value = std::clamp(255 - (dnum * player_light.strength), LIGHT_MIN, LIGHT_MAX);
|
||||||
|
|
||||||
// "WALL_TILE": "\u2591",
|
// "WALL_TILE": "\u2591",
|
||||||
// "WALL_TILE": "\ua5b8",
|
// "WALL_TILE": "\ua5b8",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue