MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / FromJson

Method FromJson

Source/GameData.cpp:308–371  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

306}
307
308bool sGameRecorded::FromJson(const std::string& pJson) {
309 Json LoadedData;
310
311 try {
312 LoadedData = Json::parse(pJson);
313 }
314 catch (std::exception Exception) {
315 std::cout << "SaveGame JSON Parsing Error: " << Exception.what() << "\n";
316 return false;
317 }
318
319 clear();
320
321 mVersion = LoadedData["SaveVersion"];
322 if (mVersion >= 1) {
323 try {
324 mSeed[0] = LoadedData["Seed1"];
325 mSeed[1] = LoadedData["Seed2"];
326 mSeed[2] = LoadedData["Seed3"];
327 mSeed[3] = LoadedData["Seed4"];
328 mInputTicks = LoadedData["InputTicks"];
329 mEngineTicks = LoadedData["mEngineTicks"];
330 mRecordedPlatform = LoadedData["mPlatform"];
331
332 mParams->FromJson(LoadedData["mParams"]);
333 for (auto& Event : LoadedData["mEvents"]) {
334 uint32 Ticks = Event["1"];
335
336 cEvent EventRecorded;
337
338 EventRecorded.mButton = Event["2"];
339 EventRecorded.mButtonCount = Event["3"];
340 EventRecorded.mPosition.mX = Event["4"];
341 EventRecorded.mPosition.mY = Event["5"];
342 EventRecorded.mType = Event["6"];
343
344 mEvents.insert(mEvents.end(), std::make_pair(Ticks, EventRecorded ));
345 }
346
347 for (auto& State : LoadedData["mStates"]) {
348 uint32 Ticks = State["1"];
349
350 cStateRecorded StateRecorded;
351
352 StateRecorded.mInputMouseX = State["2"];
353 StateRecorded.mInputMouseY = State["3"];
354 StateRecorded.mMouseButtonStatus = State["4"];
355
356 mState.insert(mState.end(), std::make_pair( Ticks, StateRecorded ));
357 }
358
359 for (auto& val : LoadedData["mVideoTicks"]) {
360 mVideoTicks.push_back(val);
361 }
362
363 }
364 catch (std::exception Exception) {
365 std::cout << "sGameRecorded: V1 Elements not found: " << Exception.what() << "\n";

Callers 2

Game_LoadMethod · 0.45
Demo_LoadMethod · 0.45

Calls 9

parseFunction · 0.85
clearFunction · 0.85
insertMethod · 0.80
PhaseGetMethod · 0.80
NumberOfPhasesMethod · 0.80
whatMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45
getMissionMethod · 0.45

Tested by

no test coverage detected