| 256 | } |
| 257 | |
| 258 | std::string sGameRecorded::ToJson() { |
| 259 | auto now = std::chrono::system_clock::now(); |
| 260 | auto in_time_t = std::chrono::system_clock::to_time_t(now); |
| 261 | |
| 262 | Json Save; |
| 263 | |
| 264 | Save["SaveVersion"] = mVersion; |
| 265 | |
| 266 | Save["Timestamp"] = in_time_t; |
| 267 | Save["Seed1"] = mSeed[0]; |
| 268 | Save["Seed2"] = mSeed[1]; |
| 269 | Save["Seed3"] = mSeed[2]; |
| 270 | Save["Seed4"] = mSeed[3]; |
| 271 | Save["InputTicks"] = mInputTicks; |
| 272 | Save["mEngineTicks"] = mEngineTicks; |
| 273 | |
| 274 | Save["mParams"] = mParams->ToJson(); |
| 275 | Save["mPlatform"] = mRecordedPlatform; |
| 276 | |
| 277 | for (auto& Event : mEvents) { |
| 278 | Json JsonHero; |
| 279 | |
| 280 | JsonHero["1"] = Event.first; |
| 281 | JsonHero["2"] = Event.second.mButton; |
| 282 | JsonHero["3"] = Event.second.mButtonCount; |
| 283 | JsonHero["4"] = Event.second.mPosition.mX; |
| 284 | JsonHero["5"] = Event.second.mPosition.mY; |
| 285 | JsonHero["6"] = Event.second.mType; |
| 286 | |
| 287 | Save["mEvents"].push_back(JsonHero); |
| 288 | } |
| 289 | |
| 290 | for (auto& State : mState) { |
| 291 | Json JsonHero; |
| 292 | |
| 293 | JsonHero["1"] = State.first; |
| 294 | JsonHero["2"] = State.second.mInputMouseX; |
| 295 | JsonHero["3"] = State.second.mInputMouseY; |
| 296 | JsonHero["4"] = State.second.mMouseButtonStatus; |
| 297 | |
| 298 | Save["mStates"].push_back(JsonHero); |
| 299 | } |
| 300 | |
| 301 | for (auto& val : mVideoTicks) { |
| 302 | Save["mVideoTicks"].push_back(val); |
| 303 | } |
| 304 | |
| 305 | return Save.dump(-1); |
| 306 | } |
| 307 | |
| 308 | bool sGameRecorded::FromJson(const std::string& pJson) { |
| 309 | Json LoadedData; |