Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
Tanks.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_TANKS_TANKS_HPP_
2#define IV_SRC_TANKS_TANKS_HPP_
3
4#include "tanks/Tank.hpp"
5
6#include <map>
7#include <memory>
8#include <optional>
9#include <string>
10#include <vector>
11
12namespace iv::tanks
13{
14
15class Tanks : public std::map<std::string, std::shared_ptr<Tank>>
16{
17public:
18 Tanks() = default;
19 Tanks(const Tanks &other) = delete;
20 Tanks(Tanks &&other) = delete;
21
22 void update(const Tanks &other);
23 bool load(const iv::file::xml::node &nodeDataProject, const std::string &pathTanks);
24 bool save(iv::file::xml::node &nodeDataProject, std::string_view tanksFolderPath,
25 const std::optional<std::shared_ptr<std::vector<std::shared_ptr<iv::file::xml::File>>>> &savingFilesOut =
26 std::nullopt) const;
27
28 [[nodiscard]] std::vector<std::string> getTankNames() const;
29
30 [[nodiscard]] std::weak_ptr<Tank> getTankAt(uint32_t index) const;
31
32 std::weak_ptr<iv::tanks::Tank> addDefaultTank(const std::string &nameTank);
33
34 // Controller
35 bool changeTankName(const std::string &oldName, const std::string &newName);
36 bool saveTankChanges(const iv::types::tankId &tankId) const;
37
38 std::weak_ptr<iv::channels::AbstractChannel> trimChannelRef;
39 std::weak_ptr<iv::channels::AbstractChannel> absoluteBarOffsetChannelRef;
41 std::weak_ptr<iv::channels::AbstractChannel> absoluteBarOffsetBackupChannelRef;
43
44private:
45 struct Sections
46 {
47 static constexpr std::string_view tanks = "Tanks";
48 static constexpr std::string_view tank = "Tank";
49 };
50 struct Keys
51 {
52 static constexpr std::string_view keyMap {"KeyMap"};
53 static constexpr std::string_view trimChannel {"TrimChannel"};
54 static constexpr std::string_view absoluteBarOffsetChannel {"AbsoluteBarOffsetChannel"};
55 static constexpr std::string_view defaultAbsoluteBarOffset {"DefaultAbsoluteBarOffset"};
56 static constexpr std::string_view hasAbsoluteBarOffsetBackupChannel {"HasAbsoluteBarOffsetBackupChannel"};
57 static constexpr std::string_view absoluteBarOffsetBackupChannel {"AbsoluteBarOffsetBackupChannel"};
58 };
60 {
61 static constexpr double defaultAbsoluteBarOffset {1.01325};
62 static constexpr bool hasAbsoluteBarOffsetBackupChannel {false};
63 static constexpr std::string string {};
64 };
65};
66
67}// namespace iv::tanks
68
69#endif//IV_SRC_TANKS_TANKS_HPP_
Definition xmlFile.hpp:15
Definition Tanks.hpp:16
std::weak_ptr< iv::tanks::Tank > addDefaultTank(const std::string &nameTank)
Definition Tanks.cpp:162
bool hasAbsoluteBarOffsetBackupChannel
Definition Tanks.hpp:40
bool saveTankChanges(const iv::types::tankId &tankId) const
Definition Tanks.cpp:188
bool save(iv::file::xml::node &nodeDataProject, std::string_view tanksFolderPath, const std::optional< std::shared_ptr< std::vector< std::shared_ptr< iv::file::xml::File > > > > &savingFilesOut=std::nullopt) const
Definition Tanks.cpp:82
bool load(const iv::file::xml::node &nodeDataProject, const std::string &pathTanks)
Definition Tanks.cpp:31
double defaultAbsoluteBarOffset
Definition Tanks.hpp:42
Tanks(Tanks &&other)=delete
Tanks(const Tanks &other)=delete
bool changeTankName(const std::string &oldName, const std::string &newName)
Definition Tanks.cpp:171
std::weak_ptr< iv::channels::AbstractChannel > absoluteBarOffsetBackupChannelRef
Definition Tanks.hpp:41
std::vector< std::string > getTankNames() const
Definition Tanks.cpp:147
std::weak_ptr< iv::channels::AbstractChannel > trimChannelRef
Definition Tanks.hpp:38
std::weak_ptr< iv::channels::AbstractChannel > absoluteBarOffsetChannelRef
Definition Tanks.hpp:39
std::weak_ptr< Tank > getTankAt(uint32_t index) const
Definition Tanks.cpp:157
void update(const Tanks &other)
Definition Tanks.cpp:9
Definition enums.hpp:5
std::string tankId
Definition types.hpp:78
Definition Tanks.hpp:60
static constexpr double defaultAbsoluteBarOffset
Definition Tanks.hpp:61
static constexpr bool hasAbsoluteBarOffsetBackupChannel
Definition Tanks.hpp:62
Definition Tanks.hpp:51
static constexpr std::string_view trimChannel
Definition Tanks.hpp:53
static constexpr std::string_view defaultAbsoluteBarOffset
Definition Tanks.hpp:55
static constexpr std::string_view absoluteBarOffsetChannel
Definition Tanks.hpp:54
static constexpr std::string_view keyMap
Definition Tanks.hpp:52
static constexpr std::string_view hasAbsoluteBarOffsetBackupChannel
Definition Tanks.hpp:56
static constexpr std::string_view absoluteBarOffsetBackupChannel
Definition Tanks.hpp:57
Definition Tanks.hpp:46
static constexpr std::string_view tank
Definition Tanks.hpp:48
static constexpr std::string_view tanks
Definition Tanks.hpp:47