From a097230cdef53db91303fa1d4f62031e2b6ab82f Mon Sep 17 00:00:00 2001 From: Noah Date: Fri, 7 Apr 2023 20:16:51 -0400 Subject: [PATCH] latest game --- Cargo.toml | 2 +- index.html | 2 +- src/abilities/mod.rs | 90 ++++++++++++- src/actions/game_control.rs | 4 +- src/actions/mod.rs | 86 +++++++++++- src/audio.rs | 7 +- src/buildings/mod.rs | 1 + src/game/draw.rs | 82 ++++++++++-- src/game/end_game.rs | 60 +++++++++ src/game/mod.rs | 255 +++++++++++++++++------------------- src/lib.rs | 21 +-- src/loading.rs | 12 +- src/main.rs | 3 +- src/menu.rs | 212 +++++++++++++++++++----------- src/player.rs | 4 +- 15 files changed, 595 insertions(+), 246 deletions(-) create mode 100644 src/game/end_game.rs diff --git a/Cargo.toml b/Cargo.toml index 123266b..24a3c46 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "clrs" version = "0.1.0" publish = false -authors = ["Noah Shomette "] +authors = ["Noah Shomette ", "Kolbe Shomette"] edition = "2021" exclude = ["dist", "build", "assets", "credits"] diff --git a/index.html b/index.html index c4a6ced..e13a13d 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - Tiles of Color + CLRS diff --git a/src/abilities/mod.rs b/src/abilities/mod.rs index 2aa9b35..7a679d6 100644 --- a/src/abilities/mod.rs +++ b/src/abilities/mod.rs @@ -1,11 +1,95 @@ mod nuke; -use bevy::prelude::{FromReflect, Reflect}; +use crate::buildings::Activate; +use bevy::prelude::{ + Commands, Component, Entity, FromReflect, Query, Reflect, Res, ResMut, Time, Timer, TimerMode, + With, Without, +}; +use bevy_ecs_tilemap::prelude::TileStorage; +use bevy_ggf::game_core::state::{Changed, DespawnedObjects}; +use bevy_ggf::mapping::tiles::Tile; +use bevy_ggf::mapping::MapId; +use bevy_ggf::object::{Object, ObjectGridPosition, ObjectId}; +use bevy_ggf::player::PlayerMarker; + +pub fn destroy_buildings( + abilities: Query< + ( + Entity, + &PlayerMarker, + &ObjectId, + &ObjectGridPosition, + &AbilityMarker, + ), + (With, With), + >, + mut tiles: Query<(Entity, &PlayerMarker), (Without, With)>, + mut tile_storage_query: Query<(&MapId, &TileStorage)>, + mut commands: Commands, + mut despawn_objects: ResMut, +) { + for (building_entity, player_marker, object_id, object_grid_pos, ability) in abilities.iter() { + let Some((_, tile_storage)) = tile_storage_query + .iter_mut() + .find(|(id, _)| id == &&MapId{ id: 1 })else { + continue; + }; + + let tile_entity = tile_storage.get(&object_grid_pos.tile_position).unwrap(); + + let Ok((entity, tile_marker)) = tiles.get_mut(tile_entity) else { + continue; + }; + + if player_marker != tile_marker && ability.requires_player_territory { + println!("killing abilities"); + despawn_objects + .despawned_objects + .insert(*object_id, Changed::default()); + commands.entity(building_entity).despawn(); + } + } +} + +pub fn update_ability_timers( + mut timers: Query<(Entity, &mut AbilityCooldown), Without>, + mut commands: Commands, + time: Res