Bomberman
ParserYaml.hpp
Go to the documentation of this file.
1 //
2 // Created by hbenjamin on 10/06/2021.
3 //
4 
5 #pragma once
6 
7 #include <Wal.hpp>
8 #include "Items/Bonus.hpp"
9 #include "Node.hpp"
10 #include "Map/Map.hpp"
12 
13 namespace BBM {
14  class ParserYAML {
15  private:
16 
18  #ifdef __linux__
19  static constexpr int endlNbChars = 1;
20  #elif _WIN32
21  static constexpr int endlNbChars = 2;
22  #endif
23 
25  static std::stringstream _block;
27  static std::stringstream _bonus;
29  static std::stringstream _player;
30 
33  static void _saveBlock(const WAL::Entity &entity);
36  static void _saveBonus(const WAL::Entity &entity);
39  static void _savePlayer(const WAL::Entity &entity);
42  static std::string _getBlockType(const std::string& blockName);
45  static std::string _getBonusType(const std::string& bonusName);
46 
49  static int _parseMaxBomb(const std::string& str);
52  static int _parseExplosionRadius(const std::string& line);
55  static float _parseSpeed(const std::string& line);
58  static Vector3f _parsePosition(const std::string& line);
61  static MapGenerator::BlockType _parseBlockType(const std::string& blockType);
64  static Bonus::BonusType _parseBonusType(const std::string& bonusType);
65 
70  static void _loadPlayer(std::shared_ptr<WAL::Scene> scene, Node &node, int countPlayer);
76  static void _loadBlock(std::shared_ptr<WAL::Scene> scene, Node child, MapGenerator::MapBlock &map);
81  static void _loadBonus(std::shared_ptr<WAL::Scene> scene, Node &node);
82 
85  static void _loadPlayers(std::shared_ptr<WAL::Scene> scene, Node &node);
88  static void _loadBlocks(std::shared_ptr<WAL::Scene> scene, Node &node);
91  static void _loadBonuses(std::shared_ptr<WAL::Scene> scene, Node &node);
92 
93  static std::string parseHeader(const std::string &line);
94 
95  static std::pair<std::string ,std::string> parseProperty(const std::string &line);
96 
97  static bool isHeader(const std::string &line);
98 
99  static Node parseNode(std::ifstream &file, const std::string &nodeName, int indentLevel = 0);
100 
101  static float getIndent(const std::string &line);
102 
103  static constexpr const char* indent = " ";
104 
105  public:
106 
107  static Node parseFile(const std::string &path);
108 
109  struct PlayerInfos {
110  std::string name;
118  float speed;
120  std::string asset;
121  };
122 
123  static std::vector<PlayerInfos> playersInfos;
124 
127  static void save(std::shared_ptr<WAL::Scene> scene);
130  static void load(std::shared_ptr<WAL::Scene> scene);
131 
133  static const std::string fileName;
134  };
135 }
BBM::ParserYAML::_parseMaxBomb
static int _parseMaxBomb(const std::string &str)
return max bomb parsed
Definition: ParserYaml.cpp:325
BBM::ParserYAML::playersInfos
static std::vector< PlayerInfos > playersInfos
Definition: ParserYaml.hpp:123
BBM::ParserYAML::_loadBlocks
static void _loadBlocks(std::shared_ptr< WAL::Scene > scene, Node &node)
load all blocks into scene
Definition: ParserYaml.cpp:242
BBM::ParserYAML::_saveBonus
static void _saveBonus(const WAL::Entity &entity)
save bonus in _bonus
Definition: ParserYaml.cpp:72
Bonus.hpp
BBM::MapGenerator::BlockType
BlockType
Enum of the block available.
Definition: Map.hpp:35
BBM::ParserYAML::PlayerInfos::speed
float speed
The speed of a player.
Definition: ParserYaml.hpp:118
BBM::ParserYAML::PlayerInfos::maxBombCount
int maxBombCount
The amount of bomb a player had.
Definition: ParserYaml.hpp:114
BBM::ParserYAML::getIndent
static float getIndent(const std::string &line)
Definition: ParserYaml.cpp:462
BBM::ParserYAML::_getBlockType
static std::string _getBlockType(const std::string &blockName)
transform block name
Definition: ParserYaml.cpp:47
BBM::ParserYAML::parseProperty
static std::pair< std::string,std::string > parseProperty(const std::string &line)
Definition: ParserYaml.cpp:401
BBM::Bonus::BonusType
BonusType
Definition: Bonus.hpp:34
BBM::ParserYAML::_getBonusType
static std::string _getBonusType(const std::string &bonusName)
transform bonus name
Definition: ParserYaml.cpp:60
BBM::MapGenerator::MapBlock
std::map< std::tuple< int, int, int >, BlockType > MapBlock
Definition: Map.hpp:47
Map.hpp
BBM::ParserYAML::_parsePosition
static Vector3f _parsePosition(const std::string &line)
return vector3f of position parsed
Definition: ParserYaml.cpp:300
BBM::ParserYAML::_parseBlockType
static MapGenerator::BlockType _parseBlockType(const std::string &blockType)
return BlockType of type parsed
Definition: ParserYaml.cpp:358
BBM::ParserYAML::PlayerInfos::asset
std::string asset
The assets of the player.
Definition: ParserYaml.hpp:120
BBM
Definition: AnimationsComponent.cpp:9
BBM::ParserYAML::indent
static constexpr const char * indent
Definition: ParserYaml.hpp:103
BBM::ParserYAML::PlayerInfos::position
Vector3f position
Player position.
Definition: ParserYaml.hpp:112
BBM::ParserYAML::parseNode
static Node parseNode(std::ifstream &file, const std::string &nodeName, int indentLevel=0)
Definition: ParserYaml.cpp:434
WAL::Entity
An entity of the WAL's ECS.
Definition: Entity.hpp:20
BBM::ParserYAML::parseFile
static Node parseFile(const std::string &path)
Definition: ParserYaml.cpp:425
BBM::ParserYAML
Definition: ParserYaml.hpp:14
BBM::ParserYAML::_loadPlayer
static void _loadPlayer(std::shared_ptr< WAL::Scene > scene, Node &node, int countPlayer)
add player into scene
Definition: ParserYaml.cpp:159
BBM::ParserYAML::fileName
static const std::string fileName
save file name
Definition: ParserYaml.hpp:133
ControllableComponent.hpp
BBM::Vector3< float >
BBM::ParserYAML::_parseSpeed
static float _parseSpeed(const std::string &line)
return speed parsed
Definition: ParserYaml.cpp:347
BBM::ParserYAML::parseHeader
static std::string parseHeader(const std::string &line)
Definition: ParserYaml.cpp:382
BBM::ParserYAML::_player
static std::stringstream _player
file player of the parser
Definition: ParserYaml.hpp:29
BBM::ParserYAML::_savePlayer
static void _savePlayer(const WAL::Entity &entity)
save player in _player
Definition: ParserYaml.cpp:85
BBM::ParserYAML::_bonus
static std::stringstream _bonus
file bonus of the parser
Definition: ParserYaml.hpp:27
BBM::ParserYAML::PlayerInfos
Definition: ParserYaml.hpp:109
BBM::ParserYAML::_block
static std::stringstream _block
The number of chars for endl.
Definition: ParserYaml.hpp:25
BBM::ParserYAML::load
static void load(std::shared_ptr< WAL::Scene > scene)
load yaml
Definition: ParserYaml.cpp:290
BBM::ParserYAML::_loadPlayers
static void _loadPlayers(std::shared_ptr< WAL::Scene > scene, Node &node)
load all players into scene
Definition: ParserYaml.cpp:217
BBM::ParserYAML::PlayerInfos::name
std::string name
Definition: ParserYaml.hpp:110
BBM::ParserYAML::isHeader
static bool isHeader(const std::string &line)
Definition: ParserYaml.cpp:420
BBM::Node
Definition: Node.hpp:13
Wal.hpp
BBM::ParserYAML::_loadBonus
static void _loadBonus(std::shared_ptr< WAL::Scene > scene, Node &node)
add bonus into scene
Definition: ParserYaml.cpp:270
BBM::ParserYAML::_parseBonusType
static Bonus::BonusType _parseBonusType(const std::string &bonusType)
return bonusType of type parsed
Definition: ParserYaml.cpp:370
BBM::ParserYAML::PlayerInfos::explosionRange
int explosionRange
The explosion range of a player.
Definition: ParserYaml.hpp:116
BBM::ParserYAML::save
static void save(std::shared_ptr< WAL::Scene > scene)
save yaml
Definition: ParserYaml.cpp:119
BBM::ParserYAML::_parseExplosionRadius
static int _parseExplosionRadius(const std::string &line)
return explosion radius parsed
Definition: ParserYaml.cpp:336
BBM::ParserYAML::_loadBonuses
static void _loadBonuses(std::shared_ptr< WAL::Scene > scene, Node &node)
load all blocks into scene
Definition: ParserYaml.cpp:283
Node.hpp
BBM::ParserYAML::_loadBlock
static void _loadBlock(std::shared_ptr< WAL::Scene > scene, Node child, MapGenerator::MapBlock &map)
add block into scene
Definition: ParserYaml.cpp:230
BBM::ParserYAML::_saveBlock
static void _saveBlock(const WAL::Entity &entity)
save block in _block
Definition: ParserYaml.cpp:106