From f4edacaebae8f59916c1de039fc80cc682ac1bc7 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 7 Jan 2025 07:37:53 +0100 Subject: [PATCH] Client (#104) * settler button to found city * always show some resources * fmt --- client/assets/castle-manor-14-svgrepo-com.png | Bin 5667 -> 0 bytes client/src/assets.rs | 2 -- client/src/collect_ui.rs | 2 +- client/src/happiness_ui.rs | 4 ++-- client/src/influence_ui.rs | 4 ++-- client/src/local_client/bin/main.rs | 2 +- client/src/map_ui.rs | 6 +++--- client/src/resource_ui.rs | 9 +++++++-- 8 files changed, 16 insertions(+), 13 deletions(-) delete mode 100644 client/assets/castle-manor-14-svgrepo-com.png diff --git a/client/assets/castle-manor-14-svgrepo-com.png b/client/assets/castle-manor-14-svgrepo-com.png deleted file mode 100644 index 76ff896d06e92231b5426ac00c3a990306fd0f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5667 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 diff --git a/client/src/assets.rs b/client/src/assets.rs index e6520912..3ca81af4 100644 --- a/client/src/assets.rs +++ b/client/src/assets.rs @@ -21,7 +21,6 @@ pub struct Assets { pub log: Texture2D, pub end_turn: Texture2D, pub advances: Texture2D, - pub settle: Texture2D, // UI pub redo: Texture2D, @@ -64,7 +63,6 @@ impl Assets { end_turn: load_png(include_bytes!("../assets/hour-glass-svgrepo-com.png")), log: load_png(include_bytes!("../assets/scroll-svgrepo-com.png")), move_units: load_png(include_bytes!("../assets/route-start-svgrepo-com.png")), - settle: load_png(include_bytes!("../assets/castle-manor-14-svgrepo-com.png")), // UI redo: load_png(include_bytes!("../assets/redo-svgrepo-com.png")), diff --git a/client/src/collect_ui.rs b/client/src/collect_ui.rs index 3ebfc951..87ef6c36 100644 --- a/client/src/collect_ui.rs +++ b/client/src/collect_ui.rs @@ -76,7 +76,7 @@ pub fn collect_resources_dialog( state: &State, player: &ShownPlayer, ) -> StateUpdate { - show_resource_pile(state, player, &collect.collected()); + show_resource_pile(state, player, &collect.collected(), &[]); let city = game.get_city(collect.player_index, collect.city_position); diff --git a/client/src/happiness_ui.rs b/client/src/happiness_ui.rs index 4923d52e..a0a45700 100644 --- a/client/src/happiness_ui.rs +++ b/client/src/happiness_ui.rs @@ -8,7 +8,7 @@ use server::resource_pile::ResourcePile; use crate::client_state::{ActiveDialog, ShownPlayer, State, StateUpdate}; use crate::dialog_ui::{cancel_button, ok_button, OkTooltip}; -use crate::resource_ui::show_resource_pile; +use crate::resource_ui::{show_resource_pile, ResourceType}; #[derive(Clone)] pub struct IncreaseHappiness { @@ -106,7 +106,7 @@ pub fn increase_happiness_menu( state: &State, game: &Game, ) -> StateUpdate { - show_resource_pile(state, player, &h.cost); + show_resource_pile(state, player, &h.cost, &[ResourceType::MoodTokens]); let tooltip = if player.get(game).resources.can_afford(&h.cost) { OkTooltip::Valid("Increase happiness".to_string()) diff --git a/client/src/influence_ui.rs b/client/src/influence_ui.rs index c790e403..0a61ee52 100644 --- a/client/src/influence_ui.rs +++ b/client/src/influence_ui.rs @@ -3,7 +3,7 @@ use crate::client_state::{ShownPlayer, State, StateUpdate}; use crate::dialog_ui::{cancel_button_with_tooltip, ok_button, OkTooltip}; use crate::hex_ui; use crate::layout_ui::is_in_circle; -use crate::resource_ui::show_resource_pile; +use crate::resource_ui::{show_resource_pile, ResourceType}; use crate::tooltip::show_tooltip_for_circle; use macroquad::input::{is_mouse_button_pressed, MouseButton}; use macroquad::math::Vec2; @@ -32,7 +32,7 @@ pub fn cultural_influence_resolution_dialog( ) -> StateUpdate { let name = building_name(r.city_piece); let pile = ResourcePile::culture_tokens(r.roll_boost_cost); - show_resource_pile(state, player, &pile); + show_resource_pile(state, player, &pile, &[ResourceType::CultureTokens]); if ok_button( state, OkTooltip::Valid(format!("Influence {name} for {pile}")), diff --git a/client/src/local_client/bin/main.rs b/client/src/local_client/bin/main.rs index ec924fc9..e94e03de 100644 --- a/client/src/local_client/bin/main.rs +++ b/client/src/local_client/bin/main.rs @@ -112,7 +112,7 @@ pub fn setup_local_game() -> Game { add_unit(&mut game, "C2", player_index1, UnitType::Settler); add_unit(&mut game, "C2", player_index1, UnitType::Settler); add_unit(&mut game, "C2", player_index1, UnitType::Settler); - add_unit(&mut game, "C2", player_index1, UnitType::Settler); + add_unit(&mut game, "B3", player_index1, UnitType::Settler); // game.players[player_index1].active_leader = // Some(Leader::builder("Alexander", "", "", "", "").build()); diff --git a/client/src/map_ui.rs b/client/src/map_ui.rs index 243edb5f..e2ad21c6 100644 --- a/client/src/map_ui.rs +++ b/client/src/map_ui.rs @@ -8,7 +8,7 @@ use server::game::{Game, GameState}; use server::map::Terrain; use server::playing_actions::PlayingAction; use server::position::Position; -use server::unit::{MovementRestriction, Unit}; +use server::unit::{MovementRestriction, Unit, UnitType}; use crate::city_ui::{draw_city, show_city_menu, CityMenu, IconAction, IconActionVec}; use crate::client_state::{ActiveDialog, ShownPlayer, State, StateUpdate}; @@ -177,8 +177,8 @@ fn found_city_button(state: &State, settlers: Vec) -> Option &'static str { } } -pub fn show_resource_pile(state: &State, player: &ShownPlayer, p: &ResourcePile) { +pub fn show_resource_pile( + state: &State, + player: &ShownPlayer, + p: &ResourcePile, + must_show: &[ResourceType], +) { let resource_map = new_resource_map(p); let show: Vec = resource_types() .into_iter() - .filter(|r| resource_map[r] > 0) + .filter(|r| resource_map[r] > 0 || must_show.contains(r)) .collect(); for (i, r) in show.iter().rev().enumerate() { let x = (show.len() - i) as i8 - 3;