#pragma once #include "config.h" #include "part.h" #include "stmlib/stmlib.h" #include "stmlib/system/storage.h" struct PersistentData { uint8_t honor; uint8_t padding[7]; enum { tag = 0x494C4143 }; // CALI }; struct State { PartData part_datas[PART_COUNT]; //uint8_t padding[4]; enum { tag = 0x54415453 }; // STAT }; class Settings { public: Settings(); ~Settings() {} void SavePersistentData(); void SaveState(); inline const State& state() const { return state_; } inline State* mutable_state() { return &state_; } inline const PartData& part(int i) const { return state_.part_datas[i]; } inline PartData* mutable_part(int i) { return &state_.part_datas[i]; } inline bool is_first_start() { return this->first_start; } private: bool first_start; PersistentData persistent_data_; State state_; stmlib::ChunkStorage< 0x08004000, 0x08008000, PersistentData, State> chunk_storage_; DISALLOW_COPY_AND_ASSIGN(Settings); };