summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/assets.cpp12
-rw-r--r--src/game/game.cpp32
-rw-r--r--src/game/game.hpp15
-rw-r--r--src/game/interface.cpp9
4 files changed, 48 insertions, 20 deletions
diff --git a/src/game/assets.cpp b/src/game/assets.cpp
index e2b9664..f2deedf 100644
--- a/src/game/assets.cpp
+++ b/src/game/assets.cpp
@@ -160,9 +160,19 @@ void load(void)
ambients[AMBIENT_WATER].volume = 0.1f;
ui.crystals.load("assets/ui/crystals_", 1);
+
+ ui.icon_builder.load("assets/ui/icon_builder_", 1);
+ ui.icon_fire.load("assets/ui/icon_fire_", 1);
+ ui.icon_grenades.load("assets/ui/icon_grenades_", 1);
ui.icon_health.load("assets/ui/icon_health_", 1);
+ ui.icon_move.load("assets/ui/icon_move_", 1);
+ ui.icon_repair.load("assets/ui/icon_repair_", 1);
+ ui.icon_replicator.load("assets/ui/icon_replicator_", 1);
+ ui.icon_scientist.load("assets/ui/icon_scientist_", 1);
ui.icon_shells.load("assets/ui/icon_shells_", 1);
- ui.icon_grenades.load("assets/ui/icon_grenades_", 1);
+ ui.icon_soldier.load("assets/ui/icon_soldier_", 1);
+ ui.icon_stop.load("assets/ui/icon_stop_", 1);
+ ui.icon_teleporter.load("assets/ui/icon_teleporter_", 1);
ui.crystal_tick.load("assets/ui/crystal_tick.ogg");
ui.crystal_tick.volume = 0.1f;
diff --git a/src/game/game.cpp b/src/game/game.cpp
index 246a222..162a274 100644
--- a/src/game/game.cpp
+++ b/src/game/game.cpp
@@ -207,7 +207,7 @@ bool state_t::populate_pie_menu(std::vector<interface::pie_item_t> &items)
items.clear();
if (!first_teleporter_placed) {
- items.push_back((interface::pie_item_t){"Place the teleporter", COMMAND_FIRST_TELEPORTER});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_teleporter, "Place the teleporter", COMMAND_FIRST_TELEPORTER});
return true;
}
@@ -250,38 +250,38 @@ bool state_t::populate_pie_menu(std::vector<interface::pie_item_t> &items)
}
if (soldiers || scientists || builders) {
- items.push_back((interface::pie_item_t){"Move", COMMAND_MOVE});
- items.push_back((interface::pie_item_t){"Stop", COMMAND_STOP});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_move, "Move", COMMAND_MOVE});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_stop, "Stop", COMMAND_STOP});
}
if (soldiers) {
- items.push_back((interface::pie_item_t){"Fire", COMMAND_FIRE});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_fire, "Fire", COMMAND_FIRE});
if (grenades)
- items.push_back((interface::pie_item_t){"Throw a grenade", COMMAND_THROW_GRENADE});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_grenades, "Throw a grenade", COMMAND_THROW_GRENADE});
if (restock_shells)
- items.push_back((interface::pie_item_t){"Restock shells", COMMAND_RESTOCK_SHELLS});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_shells, "Restock shells", COMMAND_RESTOCK_SHELLS});
if (restock_grenades)
- items.push_back((interface::pie_item_t){"Restock grenades", COMMAND_RESTOCK_GRENADES});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_grenades, "Restock grenades", COMMAND_RESTOCK_GRENADES});
}
if (scientists)
- items.push_back((interface::pie_item_t){"Gather", COMMAND_GATHER});
+ items.push_back((interface::pie_item_t){&assets::ui.crystals, "Gather", COMMAND_GATHER});
if (builders) {
- items.push_back((interface::pie_item_t){"Repair", COMMAND_REPAIR});
- items.push_back((interface::pie_item_t){"Build a teleporter", COMMAND_BUILD_TELEPORTER});
- items.push_back((interface::pie_item_t){"Build a replicator", COMMAND_BUILD_REPLICATOR});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_repair, "Repair", COMMAND_REPAIR});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_teleporter, "Build a teleporter", COMMAND_BUILD_TELEPORTER});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_replicator, "Build a replicator", COMMAND_BUILD_REPLICATOR});
}
if (teleporters) {
- items.push_back((interface::pie_item_t){"Hire a soldier", COMMAND_HIRE_SOLDIER});
- items.push_back((interface::pie_item_t){"Hire a scientist", COMMAND_HIRE_SCIENTIST});
- items.push_back((interface::pie_item_t){"Hire a builder", COMMAND_HIRE_BUILDER});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_soldier, "Hire a soldier", COMMAND_HIRE_SOLDIER});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_scientist, "Hire a scientist", COMMAND_HIRE_SCIENTIST});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_builder, "Hire a builder", COMMAND_HIRE_BUILDER});
}
if (replicators) {
- items.push_back((interface::pie_item_t){"Replicate shells", COMMAND_REPLICATE_SHELLS});
- items.push_back((interface::pie_item_t){"Replicate grenades", COMMAND_REPLICATE_GRENADES});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_shells, "Replicate shells", COMMAND_REPLICATE_SHELLS});
+ items.push_back((interface::pie_item_t){&assets::ui.icon_grenades, "Replicate grenades", COMMAND_REPLICATE_GRENADES});
}
return true;
diff --git a/src/game/game.hpp b/src/game/game.hpp
index b6cb597..1fd986f 100644
--- a/src/game/game.hpp
+++ b/src/game/game.hpp
@@ -28,6 +28,7 @@ namespace interface {
class state_t;
typedef struct {
+ render::animated_texture_t *icon;
std::string label;
int action;
@@ -268,8 +269,18 @@ namespace game {
typedef struct {
render::animated_texture_t crystals;
audio::sound_t crystal_tick;
-
- render::animated_texture_t icon_health, icon_grenades, icon_shells;
+ render::animated_texture_t icon_builder,
+ icon_fire,
+ icon_grenades,
+ icon_health,
+ icon_move,
+ icon_repair,
+ icon_replicator,
+ icon_scientist,
+ icon_shells,
+ icon_soldier,
+ icon_stop,
+ icon_teleporter;
} ui_assets_t;
extern soldier_assets_t soldier;
diff --git a/src/game/interface.cpp b/src/game/interface.cpp
index 10ab751..ab11f85 100644
--- a/src/game/interface.cpp
+++ b/src/game/interface.cpp
@@ -297,6 +297,8 @@ void state_t::print(std::string str)
void pie_menu_t::render_to(render::state_t *render)
{
+ float r_max = 0.0f;
+
if (!is_open)
return;
@@ -320,8 +322,13 @@ void pie_menu_t::render_to(render::state_t *render)
v2f_t::rad((i.t1 + i.t0) / 2);
}
- render->render_text(center, 15, i.label, render::text_align_t::ALIGN_CENTER_BOTTOM, color);
+ render->render(0.0, i.icon, rectf_t::around(center, 15.0f));
+
+ r_max = i.r1;
}
+
+ if (selected)
+ render->render_text(x + v2f_t(0, r_max + 20.0f), 15, selected->label, render::text_align_t::ALIGN_CENTER_BOTTOM, sf::Color::White);
}
static sf::Color health_to_color(float frac,int alpha)