Skip to content

Commit

Permalink
item command
Browse files Browse the repository at this point in the history
  • Loading branch information
aratama committed Dec 23, 2024
1 parent 7d7a53b commit ea78656
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 90 deletions.
Binary file modified assets/entity/rabbit_black.aseprite
Binary file not shown.
Binary file modified assets/image/atlas.aseprite
Binary file not shown.
Binary file modified assets/image/level.aseprite
Binary file not shown.
99 changes: 96 additions & 3 deletions src/debug.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@ use crate::{
constant::LAST_BOSS_LEVEL,
controller::player::Player,
entity::{actor::Actor, life::Life},
equipment::EquipmentType,
hud::overlay::OverlayEvent,
inventory_item::InventoryItemType,
level::{CurrentLevel, GameLevel},
physics::GamePhysics,
player_state::PlayerState,
spell::SpellType,
states::GameState,
wand::{Wand, WandSpell, WandType},
};
use bevy::{
input::{
Expand All @@ -25,7 +29,7 @@ fn process_debug_command(
config: Res<GameConfig>,
mut writer: EventWriter<OverlayEvent>,
mut physics: ResMut<GamePhysics>,
player_query: Query<(&Player, &Actor, &Life)>,
mut player_query: Query<(&Player, &mut Actor, &Life)>,
) {
for ev in evr_kbd.read() {
if ev.state == ButtonState::Released {
Expand All @@ -39,7 +43,94 @@ fn process_debug_command(
}
}

if local.ends_with("next") {
if local.ends_with("item") {
if let Ok((_, mut actor, _)) = player_query.get_single_mut() {
let ref mut inventory = actor.inventory;

inventory.insert_free(InventoryItemType::Spell(SpellType::MagicBolt));
inventory.insert_free(InventoryItemType::Spell(SpellType::MagicBolt));
inventory.insert_free(InventoryItemType::Spell(SpellType::SlimeCharge));
inventory.insert_free(InventoryItemType::Spell(SpellType::Heal));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedUp));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedUp));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedUp));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedDoown));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedDoown));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedDoown));
inventory.insert_free(InventoryItemType::Spell(SpellType::PurpleBolt));
inventory.insert_free(InventoryItemType::Spell(SpellType::DualCast));
inventory.insert_free(InventoryItemType::Spell(SpellType::TripleCast));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Lantern));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::SpikeBoots));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::SpikeBoots));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::SpikeBoots));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Telescope));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Telescope));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Magnifier));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Magnifier));
inventory.insert_free(InventoryItemType::Spell(SpellType::Homing));
inventory.insert_free(InventoryItemType::Spell(SpellType::Homing));
inventory.insert_free(InventoryItemType::Spell(SpellType::Homing));
inventory.insert_free(InventoryItemType::Spell(SpellType::Homing));
inventory.insert_free(InventoryItemType::Wand(WandType::KeyWand));
inventory.insert_free(InventoryItemType::Spell(SpellType::HeavyShot));
inventory.insert_free(InventoryItemType::Spell(SpellType::HeavyShot));
inventory.insert_free(InventoryItemType::Spell(SpellType::HeavyShot));
inventory.insert_free(InventoryItemType::Spell(SpellType::SummonFriendSlime));
inventory.insert_free(InventoryItemType::Spell(SpellType::SummonEnemySlime));
inventory.insert_free(InventoryItemType::Spell(SpellType::SummonFriendEyeball));
inventory.insert_free(InventoryItemType::Spell(SpellType::SummonEnemyEyeball));
inventory.insert_free(InventoryItemType::Spell(SpellType::Dash));
inventory.sort();

actor.wands[1] = Some(Wand::with_slots(
WandType::CypressWand,
[
Some(WandSpell {
spell_type: SpellType::SummonFriendSlime,
price: 0,
}),
None,
None,
None,
None,
None,
None,
None,
],
));
actor.wands[2] = Some(Wand::with_slots(
WandType::KeyWand,
[
Some(WandSpell::new(SpellType::HeavyShot)),
Some(WandSpell::new(SpellType::HeavyShot)),
Some(WandSpell::new(SpellType::TripleCast)),
Some(WandSpell::new(SpellType::MagicBolt)),
Some(WandSpell::new(SpellType::MagicBolt)),
Some(WandSpell::new(SpellType::MagicBolt)),
None,
None,
],
));

actor.wands[3] = Some(Wand::with_slots(
WandType::CypressWand,
[
Some(WandSpell {
spell_type: SpellType::Dash,
price: 0,
}),
None,
None,
None,
None,
None,
None,
None,
],
));
}
} else if local.ends_with("next") {
local.clear();
match level.next_level {
GameLevel::Level(n) => {
Expand Down Expand Up @@ -85,7 +176,9 @@ impl Plugin for DebugCommandPlugin {
fn build(&self, app: &mut App) {
app.add_systems(
FixedUpdate,
process_debug_command.before(PhysicsSet::SyncBackend),
process_debug_command
.before(PhysicsSet::SyncBackend)
.run_if(in_state(GameState::InGame)),
);
}
}
88 changes: 4 additions & 84 deletions src/player_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,42 +48,7 @@ impl PlayerState {
}

pub fn from_config(config: &GameConfig) -> Self {
let mut inventory = Inventory::new();
inventory.insert_free(InventoryItemType::Spell(SpellType::MagicBolt));
inventory.insert_free(InventoryItemType::Spell(SpellType::MagicBolt));
inventory.insert_free(InventoryItemType::Spell(SpellType::SlimeCharge));
inventory.insert_free(InventoryItemType::Spell(SpellType::Heal));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedUp));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedUp));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedUp));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedDoown));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedDoown));
inventory.insert_free(InventoryItemType::Spell(SpellType::BulletSpeedDoown));
inventory.insert_free(InventoryItemType::Spell(SpellType::PurpleBolt));
inventory.insert_free(InventoryItemType::Spell(SpellType::DualCast));
inventory.insert_free(InventoryItemType::Spell(SpellType::TripleCast));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Lantern));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::SpikeBoots));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::SpikeBoots));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::SpikeBoots));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Telescope));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Telescope));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Magnifier));
inventory.insert_free(InventoryItemType::Equipment(EquipmentType::Magnifier));
inventory.insert_free(InventoryItemType::Spell(SpellType::Homing));
inventory.insert_free(InventoryItemType::Spell(SpellType::Homing));
inventory.insert_free(InventoryItemType::Spell(SpellType::Homing));
inventory.insert_free(InventoryItemType::Spell(SpellType::Homing));
inventory.insert_free(InventoryItemType::Wand(WandType::KeyWand));
inventory.insert_free(InventoryItemType::Spell(SpellType::HeavyShot));
inventory.insert_free(InventoryItemType::Spell(SpellType::HeavyShot));
inventory.insert_free(InventoryItemType::Spell(SpellType::HeavyShot));
inventory.insert_free(InventoryItemType::Spell(SpellType::SummonFriendSlime));
inventory.insert_free(InventoryItemType::Spell(SpellType::SummonEnemySlime));
inventory.insert_free(InventoryItemType::Spell(SpellType::SummonFriendEyeball));
inventory.insert_free(InventoryItemType::Spell(SpellType::SummonEnemyEyeball));
inventory.insert_free(InventoryItemType::Spell(SpellType::Dash));
inventory.sort();
let inventory = Inventory::new();

let mut equipments = [None; MAX_ITEMS_IN_EQUIPMENT];
equipments[0] = Some(Equipment {
Expand All @@ -108,54 +73,9 @@ impl PlayerState {
None,
],
)),
Some(Wand::with_slots(
WandType::CypressWand,
[
Some(WandSpell {
spell_type: SpellType::SummonFriendSlime,
price: 0,
}),
None,
None,
None,
None,
None,
None,
None,
],
)),
Some(Wand::with_slots(
WandType::KeyWand,
[
Some(WandSpell {
spell_type: SpellType::SummonEnemySlime,
price: 0,
}),
None,
None,
None,
None,
None,
None,
None,
],
)),
Some(Wand::with_slots(
WandType::CypressWand,
[
Some(WandSpell {
spell_type: SpellType::Dash,
price: 0,
}),
None,
None,
None,
None,
None,
None,
None,
],
)),
None,
None,
None,
];

PlayerState {
Expand Down
3 changes: 0 additions & 3 deletions src/ui/popup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,13 +175,10 @@ fn update_item_description(
text.0 = first.item_type.to_props().description.get(config.language);

if let InventoryItemType::Spell(spell) = first.item_type {
info!("spell:{}", spell.to_props().name.get(config.language));
let props = spell.to_props();
let cast: crate::spell::SpellCast = props.cast;
let appendix = get_spell_appendix(cast, config.language);
text.0 += format!("\n{}", appendix).as_str();
} else {
info!("not spell");
}

if 0 < first.price {
Expand Down
9 changes: 9 additions & 0 deletions src/wand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@ pub struct WandSpell {
pub price: u32,
}

impl WandSpell {
pub fn new(spell_type: SpellType) -> Self {
Self {
spell_type,
price: 0,
}
}
}

#[derive(Reflect, Clone, Debug)]
pub struct Wand {
pub wand_type: WandType,
Expand Down

0 comments on commit ea78656

Please sign in to comment.