Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/// A module for generating pseudo-random numbers using block data for entropy.
pub mod PseudoRandom {
use super::*;
use core::pedersen::PedersenTrait;
use core::hash::HashStateTrait;
use core::starknet::{get_block_timestamp, get_block_number};
use core::num::traits::{WrappingAdd, WrappingMul};
use core::pedersen::PedersenTrait;
use core::starknet::{get_block_number, get_block_timestamp};
use super::*;

/// Generates a pseudo-random `u8` value within a specified range `[min, max]`.
///
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// Core imports
use core::traits::TryInto;

// Constants imports
use combat_game::constants;
use core::traits::TryInto;

#[generate_trait]
pub impl Timestamp of TimestampTrait {
Expand Down
2 changes: 1 addition & 1 deletion backend/dojo_examples/combat_game/src/lib.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ mod types {
}

mod helpers {
pub mod experience_utils;
pub mod pseudo_random;
pub mod timestamp;
pub mod experience_utils;
}

pub mod utils {
Expand Down
6 changes: 3 additions & 3 deletions backend/dojo_examples/combat_game/src/models/bag.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ impl BagActions of BagActionsTrait {

#[cfg(test)]
mod tests {
use super::{Bag, BagActions};
use crate::types::potion::Potion;
use starknet::contract_address_const;
use core::result::ResultTrait;
use starknet::contract_address_const;
use crate::types::potion::Potion;
use super::{Bag, BagActions};

#[test]
#[available_gas(300000)]
Expand Down
12 changes: 5 additions & 7 deletions backend/dojo_examples/combat_game/src/models/battle.cairo
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
use starknet::{ContractAddress, get_block_timestamp};
use combat_game::helpers::pseudo_random::PseudoRandom::generate_random_u8;
use combat_game::types::battle_status::BattleStatus;
use core::num::traits::zero::Zero;
use combat_game::{
helpers::{pseudo_random::PseudoRandom::generate_random_u8},
types::{battle_status::BattleStatus},
};
use starknet::{ContractAddress, get_block_timestamp};

#[derive(Copy, Drop, Serde, Debug, Introspect, PartialEq)]
#[dojo::model]
Expand Down Expand Up @@ -77,10 +75,10 @@ pub impl BattleImpl of BattleTrait {

#[cfg(test)]
mod tests {
use combat_game::types::battle_status::BattleStatus;
use core::num::traits::zero::Zero;
use starknet::{contract_address_const};
use starknet::contract_address_const;
use super::{Battle, BattleTrait};
use combat_game::types::battle_status::BattleStatus;

#[test]
fn test_end() {
Expand Down
2 changes: 1 addition & 1 deletion backend/dojo_examples/combat_game/src/models/beast.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use crate::constants::{
NOT_VERY_EFFECTIVE, SUPER_EFFECTIVE,
};
use crate::models::skill::SkillTrait;
use crate::types::skill::SkillType;
use crate::types::beast_type::BeastType;
use crate::types::skill::SkillType;

#[derive(Copy, Drop, Serde, Debug, PartialEq)]
#[dojo::model]
Expand Down
12 changes: 6 additions & 6 deletions backend/dojo_examples/combat_game/src/models/beast_stats.cairo
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use crate::{
types::{status_condition::StatusCondition, beast_type::BeastType},
helpers::pseudo_random::PseudoRandom,
};
use core::{poseidon::poseidon_hash_span, num::traits::Bounded};
use core::num::traits::Bounded;
use core::poseidon::poseidon_hash_span;
use crate::helpers::pseudo_random::PseudoRandom;
use crate::types::beast_type::BeastType;
use crate::types::status_condition::StatusCondition;

#[derive(Introspect, Copy, Drop, Serde, Debug, PartialEq)]
#[dojo::model]
Expand Down Expand Up @@ -174,7 +174,7 @@ pub impl BeastStatsActions of BeastStatsActionTrait {

#[cfg(test)]
mod tests {
use super::{BeastStats, BeastStatsActionTrait, StatusCondition, BeastType};
use super::{BeastStats, BeastStatsActionTrait, BeastType, StatusCondition};

// take_damage() tests
#[test]
Expand Down
4 changes: 2 additions & 2 deletions backend/dojo_examples/combat_game/src/models/potion.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ pub impl PotionImpl of PotionTrait {

#[cfg(test)]
mod tests {
use super::{Potion, PotionTrait};
use crate::types::rarity::Rarity;
use core::num::traits::Bounded;
use crate::types::rarity::Rarity;
use super::{Potion, PotionTrait};

#[test]
#[available_gas(300000)]
Expand Down
12 changes: 6 additions & 6 deletions backend/dojo_examples/combat_game/src/models/skill.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,12 @@ pub impl SkillImpl of SkillTrait {
#[cfg(test)]
mod tests {
use super::{
SkillImpl, SkillType, SLASH_SKILL_ID, BEAM_SKILL_ID, WAVE_SKILL_ID, PUNCH_SKILL_ID,
KICK_SKILL_ID, BLAST_SKILL_ID, CRUSH_SKILL_ID, PIERCE_SKILL_ID, SMASH_SKILL_ID,
BURN_SKILL_ID, FREEZE_SKILL_ID, SHOCK_SKILL_ID, DEFAULT_SKILL_ID, SLASH_SKILL_DAMAGE,
BEAM_SKILL_DAMAGE, WAVE_SKILL_DAMAGE, PUNCH_SKILL_DAMAGE, KICK_SKILL_DAMAGE,
BLAST_SKILL_DAMAGE, CRUSH_SKILL_DAMAGE, PIERCE_SKILL_DAMAGE, SMASH_SKILL_DAMAGE,
BURN_SKILL_DAMAGE, FREEZE_SKILL_DAMAGE, SHOCK_SKILL_DAMAGE, DEFAULT_SKILL_DAMAGE,
BEAM_SKILL_DAMAGE, BEAM_SKILL_ID, BLAST_SKILL_DAMAGE, BLAST_SKILL_ID, BURN_SKILL_DAMAGE,
BURN_SKILL_ID, CRUSH_SKILL_DAMAGE, CRUSH_SKILL_ID, DEFAULT_SKILL_DAMAGE, DEFAULT_SKILL_ID,
FREEZE_SKILL_DAMAGE, FREEZE_SKILL_ID, KICK_SKILL_DAMAGE, KICK_SKILL_ID, PIERCE_SKILL_DAMAGE,
PIERCE_SKILL_ID, PUNCH_SKILL_DAMAGE, PUNCH_SKILL_ID, SHOCK_SKILL_DAMAGE, SHOCK_SKILL_ID,
SLASH_SKILL_DAMAGE, SLASH_SKILL_ID, SMASH_SKILL_DAMAGE, SMASH_SKILL_ID, SkillImpl,
SkillType, WAVE_SKILL_DAMAGE, WAVE_SKILL_ID,
};

#[test]
Expand Down
38 changes: 20 additions & 18 deletions backend/dojo_examples/combat_game/src/store.cairo
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
use dojo::{model::ModelStorage, world::WorldStorage};
use combat_game::constants::{BASE_BATTLE_EXPERIENCE, SECONDS_PER_DAY};
use combat_game::helpers::experience_utils::ExperienceCalculatorImpl;
use combat_game::models::battle::{Battle, BattleTrait};
use combat_game::models::beast::{Beast, BeastTrait};
use combat_game::models::beast_skill::BeastSkill;
use combat_game::models::beast_stats::{BeastStats, BeastStatsActionTrait};
use combat_game::models::player::Player;
use combat_game::models::skill;
use combat_game::models::skill::{Skill, SkillTrait};
use combat_game::types::battle_status::BattleStatus;
use combat_game::types::beast_type::BeastType;
use combat_game::types::skill::SkillType;
use combat_game::types::status_condition::StatusCondition;
use core::num::traits::zero::Zero;
use combat_game::{
constants::{BASE_BATTLE_EXPERIENCE, SECONDS_PER_DAY},
models::{
player::Player, beast::{Beast, BeastTrait}, skill, skill::{Skill, SkillTrait},
beast_skill::BeastSkill, beast_stats::{BeastStats, BeastStatsActionTrait},
battle::{Battle, BattleTrait},
},
types::{
beast_type::BeastType, skill::SkillType, status_condition::StatusCondition,
battle_status::BattleStatus,
},
helpers::experience_utils::ExperienceCalculatorImpl,
};

use dojo::model::ModelStorage;
use dojo::world::WorldStorage;
use starknet::ContractAddress;

#[derive(Drop, Copy)]
Expand Down Expand Up @@ -320,9 +320,11 @@ pub impl StoreImpl of StoreTrait {

if level_up_occurred {
// Calculate remaining exp
beast.experience = ExperienceCalculatorImpl::remaining_exp_after_level_up(
beast.level, beast.experience,
);
beast
.experience =
ExperienceCalculatorImpl::remaining_exp_after_level_up(
beast.level, beast.experience,
);
beast.level += 1;

// Update beast stats
Expand Down
20 changes: 9 additions & 11 deletions backend/dojo_examples/combat_game/src/systems/battle.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,19 @@ pub trait IBattle<T> {

#[dojo::contract]
pub mod battle_system {
use super::IBattle;
use combat_game::store::{StoreTrait};
use combat_game::models::{battle::{BattleTrait}, player::{AssertTrait}};
use combat_game::types::battle_status::BattleStatus;
use achievement::components::achievable::AchievableComponent;
use achievement::store::{Store as AchievementStore, StoreTrait as AchievementStoreTrait};
use combat_game::achievements::achievement::{Achievement, AchievementTrait};

use starknet::{get_caller_address, get_block_timestamp, ContractAddress};
use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
use combat_game::models::battle::BattleTrait;
use combat_game::models::player::AssertTrait;
use combat_game::store::StoreTrait;
use combat_game::types::battle_status::BattleStatus;
use core::num::traits::zero::Zero;

use achievement::components::achievable::AchievableComponent;
use achievement::store::{StoreTrait as AchievementStoreTrait, Store as AchievementStore};
use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
use starknet::{ContractAddress, get_block_timestamp, get_caller_address};
use super::IBattle;
component!(path: AchievableComponent, storage: achievable, event: AchievableEvent);
impl AchievableInternalImpl = AchievableComponent::InternalImpl<ContractState>;

use dojo::event::EventStorage;

#[storage]
Expand Down
8 changes: 4 additions & 4 deletions backend/dojo_examples/combat_game/src/systems/beast.cairo
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use combat_game::types::beast_type::BeastType;
use combat_game::models::beast_stats::BeastStats;
use combat_game::types::beast_type::BeastType;

#[starknet::interface]
pub trait IBeast<T> {
Expand All @@ -10,11 +10,11 @@ pub trait IBeast<T> {

#[dojo::contract]
pub mod beast_system {
use super::{IBeast, BeastType, BeastStats};
use combat_game::models::beast_stats::BeastStatsActionTrait;
use combat_game::store::StoreTrait;
use starknet::get_block_timestamp;
use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
use combat_game::store::{StoreTrait};
use combat_game::models::beast_stats::BeastStatsActionTrait;
use super::{BeastStats, BeastType, IBeast};

#[storage]
struct Storage {
Expand Down
10 changes: 4 additions & 6 deletions backend/dojo_examples/combat_game/src/systems/player.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@ pub trait IPlayer<T> {

#[dojo::contract]
pub mod player_system {
use super::IPlayer;

use combat_game::models::player::{Player, PlayerAssert};
use starknet::storage::{StoragePointerWriteAccess};
use combat_game::store::{StoreTrait};

use starknet::{get_caller_address, get_block_timestamp};
use combat_game::store::StoreTrait;
use starknet::storage::StoragePointerWriteAccess;
use starknet::{get_block_timestamp, get_caller_address};
use super::IPlayer;

#[storage]
struct Storage {
Expand Down
31 changes: 16 additions & 15 deletions backend/dojo_examples/combat_game/src/tests/test_battle.cairo
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
#[cfg(test)]
mod battle_system {
use combat_game::models::battle::{Battle, BattleTrait, m_Battle};
use combat_game::models::beast::m_Beast;
use combat_game::models::beast_skill::m_BeastSkill;
use combat_game::models::beast_stats::m_BeastStats;
use combat_game::models::player::{Player, m_Player};
use combat_game::models::skill;
use combat_game::models::skill::m_Skill;
use combat_game::store::StoreTrait;
use combat_game::systems::battle::{IBattleDispatcher, IBattleDispatcherTrait, battle_system};
use combat_game::types::battle_status::BattleStatus;
use combat_game::types::beast_type::BeastType;
use combat_game::types::status_condition::StatusCondition;
use core::num::traits::zero::Zero;
use dojo::model::ModelStorage;
use dojo::world::{WorldStorage, WorldStorageTrait};
use dojo_cairo_test::{
ContractDef, ContractDefTrait, NamespaceDef, TestResource, WorldStorageTestTrait,
spawn_test_world,
};
use dojo::world::{WorldStorage, WorldStorageTrait};
use dojo::model::{ModelStorage};
use combat_game::systems::battle::{battle_system, IBattleDispatcher, IBattleDispatcherTrait};
use combat_game::models::{
player::{Player, m_Player}, battle::{Battle, m_Battle, BattleTrait}, beast::{m_Beast},
beast_stats::{m_BeastStats}, beast_skill::{m_BeastSkill}, skill::{m_Skill}, skill,
};
use combat_game::types::{
battle_status::BattleStatus, beast_type::BeastType, status_condition::StatusCondition,
};
use combat_game::store::{StoreTrait};

use starknet::{contract_address_const, ContractAddress};
use starknet::{testing};
use core::num::traits::zero::Zero;
use starknet::{ContractAddress, contract_address_const, testing};

// Constants for testing
const BATTLE_TYPE: u8 = 0;
Expand Down
11 changes: 6 additions & 5 deletions backend/dojo_examples/combat_game/src/tests/test_beast.cairo
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#[cfg(test)]
mod beast_integration_tests {
use combat_game::{
models::{beast::{BeastTrait}, beast_stats::{BeastStatsActionTrait}},
types::{beast_type::BeastType, skill::SkillType, status_condition::StatusCondition},
};
use starknet::{contract_address_const, ContractAddress};
use combat_game::models::beast::BeastTrait;
use combat_game::models::beast_stats::BeastStatsActionTrait;
use combat_game::types::beast_type::BeastType;
use combat_game::types::skill::SkillType;
use combat_game::types::status_condition::StatusCondition;
use starknet::{ContractAddress, contract_address_const};

const PLAYER1_ADDRESS: felt252 = 0x1234;

Expand Down
42 changes: 19 additions & 23 deletions backend/dojo_examples/combat_game/src/tests/test_player.cairo
Original file line number Diff line number Diff line change
@@ -1,31 +1,27 @@
#[cfg(test)]
mod player_integration_tests {
use combat_game::constants::SECONDS_PER_DAY;
use combat_game::models::battle::{Battle, BattleTrait, m_Battle};
use combat_game::models::beast::{Beast, m_Beast};
use combat_game::models::beast_skill::{BeastSkill, m_BeastSkill};
use combat_game::models::beast_stats::{BeastStats, BeastStatsActionTrait, m_BeastStats};
use combat_game::models::player::{Player, PlayerAssert, m_Player};
use combat_game::models::skill::{Skill, m_Skill};
use combat_game::store::StoreTrait;
use combat_game::systems::battle::{IBattleDispatcher, IBattleDispatcherTrait, battle_system};
use combat_game::systems::beast::{IBeastDispatcher, IBeastDispatcherTrait, beast_system};
use combat_game::systems::player::{IPlayerDispatcher, IPlayerDispatcherTrait, player_system};
use combat_game::types::battle_status::BattleStatus;
use combat_game::types::beast_type::BeastType;
use combat_game::types::status_condition::StatusCondition;
use core::num::traits::zero::Zero;
use dojo::model::ModelStorage;
use dojo::world::{WorldStorage, WorldStorageTrait};
use dojo_cairo_test::{
ContractDef, ContractDefTrait, NamespaceDef, TestResource, WorldStorageTestTrait,
spawn_test_world,
};
use dojo::world::{WorldStorage, WorldStorageTrait};
use dojo::model::{ModelStorage};
use combat_game::systems::{
player::{player_system, IPlayerDispatcher, IPlayerDispatcherTrait},
beast::{beast_system, IBeastDispatcher, IBeastDispatcherTrait},
battle::{battle_system, IBattleDispatcher, IBattleDispatcherTrait},
};
use combat_game::models::{
player::{Player, m_Player, PlayerAssert}, beast::{Beast, m_Beast},
beast_stats::{BeastStats, m_BeastStats, BeastStatsActionTrait},
beast_skill::{BeastSkill, m_BeastSkill}, skill::{Skill, m_Skill},
battle::{Battle, m_Battle, BattleTrait},
};
use combat_game::types::{
beast_type::BeastType, battle_status::BattleStatus, status_condition::StatusCondition,
};
use combat_game::store::{StoreTrait};
use combat_game::constants::{SECONDS_PER_DAY};

use starknet::{contract_address_const, ContractAddress, get_block_timestamp};
use starknet::{testing};
use core::num::traits::zero::Zero;
use starknet::{ContractAddress, contract_address_const, get_block_timestamp, testing};

// Test constants
const INITIAL_BEAST_ID: u16 = 1;
Expand Down Expand Up @@ -629,7 +625,7 @@ mod player_integration_tests {
while i < 100 {
player_system.update_profile(true, beast_id);
i += 1;
};
}

let store = StoreTrait::new(world);
let player = store.read_player_from_address(PLAYER1());
Expand Down
Loading
Loading