LCOV - code coverage report
Current view: top level - core/state - StateManager.hpp (source / functions) Coverage Total Hit
Test: coverage-src.info Lines: 0.0 % 1 0
Test Date: 2025-05-27 23:26:07 Functions: 0.0 % 1 0

            Line data    Source code
       1              : #ifndef __STATE_MANAGER_HPP__
       2              : #define __STATE_MANAGER_HPP__
       3              : 
       4              : #include "core/state/State.hpp"
       5              : #include "core/state/Control.hpp"
       6              : 
       7              : #include "core/types/ItemType.hpp"
       8              : 
       9              : #include <memory>
      10              : #include <functional>
      11              : #include <random>
      12              : 
      13              : namespace Soldank
      14              : {
      15              : class StateManager
      16              : {
      17              : public:
      18              :     StateManager(
      19              :       AnimationDataManager& animation_data_manager,
      20              :       std::shared_ptr<ParticleSystem> skeleton = ParticleSystem::Load(ParticleSystemType::Soldier));
      21              : 
      22              :     Map& GetMap() { return state_.map; } // TODO: Change this to const
      23            0 :     const Map& GetConstMap() const { return state_.map; }
      24              :     void OverrideMap(const Map& map) { state_.map = map; }
      25              : 
      26              :     void ChangeSoldierControlActionState(std::uint8_t soldier_id,
      27              :                                          ControlActionType control_action_type,
      28              :                                          bool new_state);
      29              :     void SoldierControlApply(
      30              :       std::uint8_t soldier_id,
      31              :       const std::function<void(const Soldier& soldier, Control& control)>& apply_function);
      32              : 
      33              :     void ChangeSoldierMouseMapPosition(std::uint8_t soldier_id, glm::ivec2 new_mouse_position);
      34              :     void SwitchSoldierWeapon(std::uint8_t soldier_id);
      35              :     void ChangeSoldierPrimaryWeapon(std::uint8_t soldier_id, WeaponType new_weapon_type);
      36              :     void SoldierPickupWeapon(std::uint8_t soldier_id, const Item& item);
      37              :     void SoldierPickupKit(std::uint8_t soldier_id, std::uint8_t item_id);
      38              :     void MoveSoldier(std::uint8_t soldier_id, const glm::vec2& move_offset);
      39              :     void SetSoldierPosition(std::uint8_t soldier_id, const glm::vec2& new_position);
      40              :     void ThrowSoldierFlags(std::uint8_t soldier_id);
      41              :     glm::vec2 GetSoldierAimDirection(std::uint8_t soldier_id);
      42              :     void TransformSoldier(std::uint8_t soldier_id,
      43              :                           const std::function<void(Soldier&)>& transform_soldier_function);
      44              :     void TransformSoldiers(const std::function<void(Soldier&)>& transform_soldier_function);
      45              :     const Soldier& GetSoldier(std::uint8_t soldier_id) const;
      46              :     const Soldier& CreateSoldier(std::optional<unsigned int> force_soldier_id);
      47              :     glm::vec2 SpawnSoldier(unsigned int soldier_id, std::optional<glm::vec2> spawn_position);
      48              :     void ForEachSoldier(
      49              :       const std::function<void(const Soldier& soldier)>& for_each_soldier_function) const;
      50              :     void ForSoldier(std::uint8_t soldier_id,
      51              :                     const std::function<void(const Soldier& soldier)>& for_soldier_function) const;
      52              :     const Soldier* FindSoldier(const std::function<bool(const Soldier& soldier)>& predicate) const;
      53              :     void RemoveSoldier(std::uint8_t soldier_id);
      54              :     std::size_t GetSoldiersCount() const;
      55              : 
      56              :     void EnqueueNewProjectile(const BulletParams& bullet_params);
      57              :     void CreateProjectile(const BulletParams& bullet_params);
      58              :     const std::vector<BulletParams>& GetBulletEmitter() const;
      59              :     void ClearBulletEmitter();
      60              :     void ForEachBullet(
      61              :       const std::function<void(const Bullet& bullet)>& for_each_bullet_function) const;
      62              :     std::size_t GetBulletsCount() const;
      63              :     void TransformBullets(const std::function<void(Bullet& bullet)>& transform_bullet_function);
      64              : 
      65              :     Item& CreateItem(glm::vec2 position, std::uint8_t owner_id, ItemType style);
      66              :     void SetItemPosition(unsigned int id, glm::vec2 new_position);
      67              :     void MoveItemIntoDirection(unsigned int id, glm::vec2 direction);
      68              :     void TransformItems(const std::function<void(Item& item)>& transform_item_function);
      69              :     void ForEachItem(const std::function<void(const Item& item)>& for_each_item_function) const;
      70              : 
      71              :     unsigned int GetGameTick() const { return state_.game_tick; }
      72              :     void SetGameTick(unsigned int new_game_tick) { state_.game_tick = new_game_tick; }
      73              : 
      74              :     bool IsGamePaused() const { return state_.paused; }
      75              :     void PauseGame() { state_.paused = true; }
      76              :     void UnPauseGame() { state_.paused = false; }
      77              :     void TogglePauseGame() { state_.paused = !state_.paused; }
      78              : 
      79              : private:
      80              :     Soldier& GetSoldierRef(std::uint8_t soldier_id);
      81              :     Item& GetItemRef(std::uint8_t item_id);
      82              : 
      83              :     State state_;
      84              :     std::vector<BulletParams> bullet_emitter_;
      85              : 
      86              :     std::random_device random_device_{};
      87              :     std::mt19937 mersenne_twister_engine_{ random_device_() };
      88              : };
      89              : } // namespace Soldank
      90              : 
      91              : #endif
        

Generated by: LCOV version 2.0-1