From 97ea1cabe20525885258d51aec85d28e442d3492 Mon Sep 17 00:00:00 2001 From: hweimer <68769393+hweimer@users.noreply.github.com> Date: Fri, 31 Mar 2023 21:41:02 +0200 Subject: [PATCH] Move historical model to JSON file Moves the equipment data for the historical model to a JSON file, which is preventing a misalignment of the Data struct following the insertion of new fields. Fixes #328. --- data/gamedata/hist.dat | Bin 3248 -> 0 bytes data/gamedata/hist.json | 2091 +++++++++++++++++++++++++++++++++++++++ src/game/prefs.cpp | 24 +- 3 files changed, 2110 insertions(+), 5 deletions(-) delete mode 100755 data/gamedata/hist.dat create mode 100644 data/gamedata/hist.json diff --git a/data/gamedata/hist.dat b/data/gamedata/hist.dat deleted file mode 100755 index 7098a79ea4f982841f93981a498b95367a697a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3248 zcmd^>yKWOf6o!xEYeI;Hl}J&FRU{}ZL?k>Od%RcJi%gfi;V-s#Lv~@D3ua)ai|GEHBRmwib&(E>P7N=t3%|d(5ZLM^md0hjj zDdjfCr&H`7QgajEjY}IAy(N0Hv>}fbZYm3OLV{d5F|H(|#0|>IzE&Q04; z32UojpjX?GmjE`adY=PSrbdZR_uaTBSSn`Lw5+H1xeC>rN|q~(TnWx(DE&P2_$U}z zLSTKZ)Hh!3laVX&g^XRncsB}tKP)LTSGutBv4K-yell`phRQXJpYnK%Ug3joEOTWa zoVRlNrc#nCr>JaW;L9``NmsN+eXxOEtqabtCjiP%My}AD>lo*`L*KJ>a$URHPX}5* ztvpmus^?j*bfAG1Os$raD;H%Yvy_=D<|VqqOBQ$&cQZ~$N%6|_9fvedM@dz^ z<+&^L`Y2@MQ7}{?y5|F3H9KmbKz?#^1x&q-j>9C}6dnun^ya(!G=}Q4K{>esZ?fmR zf5uUo1f#JvK#?o&jVooYurTIf@p$AIhAT45eoEJiT$!4E`f1==6QVNX$_6y>_C0K_ zh%MW1JT1c&dA5amOSzKQ+epYelwTh@W|8FzapkI6VR^G1g0}wNsucCZB>T^ z<;uBHrgFJGT89yqxbkl84qRy?SFUSCuH^j8XS%;{6A8i4P8Bd*k(rHkNYwFEiljqJ zDvMk>F>FAEB=_5)>`1oQ)nRti(Da=(PsS8x#BQ}D?M1u zYl7km{Y#a3VCY~~lp2fkh@TYpkGRr? P1>~p274(zZ|KQ3WW>(;Y diff --git a/data/gamedata/hist.json b/data/gamedata/hist.json new file mode 100644 index 00000000..f1cd642c --- /dev/null +++ b/data/gamedata/hist.json @@ -0,0 +1,2091 @@ +{ + "Data->P[0].Probe": [ + { + "cereal_class_version": 0, + "Name": "EXPLORER", + "ID": { + "value0": 80, + "value1": 48 + }, + "Safety": 40, + "MisSaf": 0, + "MSF": 0, + "Base": 40, + "InitCost": 6, + "UnitCost": 1, + "UnitWeight": 200, + "MaxPay": 0, + "RDCost": 1, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 80, + "value1": 48 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 95, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "RANGER", + "ID": { + "value0": 80, + "value1": 49 + }, + "Safety": 40, + "MisSaf": 0, + "MSF": 0, + "Base": 40, + "InitCost": 24, + "UnitCost": 5, + "UnitWeight": 700, + "MaxPay": 0, + "RDCost": 3, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 80, + "value1": 49 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 90, + "MaxSafety": 93, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "SURVEYOR", + "ID": { + "value0": 80, + "value1": 50 + }, + "Safety": 40, + "MisSaf": 0, + "MSF": 0, + "Base": 40, + "InitCost": 30, + "UnitCost": 7, + "UnitWeight": 1200, + "MaxPay": 0, + "RDCost": 4, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 80, + "value1": 50 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 85, + "MaxSafety": 88, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + } + ], + "Data->P[0].Rocket": [ + { + "Name": "ATLAS", + "ID": { + "value0": 82, + "value1": 48 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 26, + "UnitCost": 3, + "UnitWeight": 0, + "MaxPay": 500, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 48 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 87, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "TITAN", + "ID": { + "value0": 82, + "value1": 49 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 60, + "UnitCost": 12, + "UnitWeight": 0, + "MaxPay": 1200, + "RDCost": 4, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 49 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 91, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "SATURN", + "ID": { + "value0": 82, + "value1": 50 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 90, + "UnitCost": 18, + "UnitWeight": 0, + "MaxPay": 3500, + "RDCost": 6, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 50 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 95, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "NOVA", + "ID": { + "value0": 82, + "value1": 51 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 150, + "UnitCost": 30, + "UnitWeight": 0, + "MaxPay": 4800, + "RDCost": 8, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 51 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 94, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "BOOSTERS", + "ID": { + "value0": 82, + "value1": 52 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 18, + "UnitCost": 4, + "UnitWeight": 0, + "MaxPay": 800, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 52 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 85, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + } + ], + "Data->P[0].Manned": [ + { + "Name": "MERCURY", + "ID": { + "value0": 67, + "value1": 48 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 20, + "UnitCost": 3, + "UnitWeight": 500, + "MaxPay": 0, + "RDCost": 1, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 48 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 78, + "MaxSafety": 92, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 5, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "GEMINI", + "ID": { + "value0": 67, + "value1": 49 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 30, + "UnitCost": 7, + "UnitWeight": 1200, + "MaxPay": 0, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 49 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 83, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 14, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "APOLLO", + "ID": { + "value0": 67, + "value1": 50 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 40, + "UnitCost": 14, + "UnitWeight": 1700, + "MaxPay": 0, + "RDCost": 5, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 50 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 89, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 21, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "XMS-2", + "ID": { + "value0": 67, + "value1": 51 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 55, + "UnitCost": 30, + "UnitWeight": 1400, + "MaxPay": 0, + "RDCost": 7, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 51 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 91, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 15, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "JUPITER", + "ID": { + "value0": 67, + "value1": 52 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 65, + "UnitCost": 30, + "UnitWeight": 4600, + "MaxPay": 0, + "RDCost": 8, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 52 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 89, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 24, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "EAGLE", + "ID": { + "value0": 67, + "value1": 53 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 30, + "UnitCost": 8, + "UnitWeight": 1500, + "MaxPay": 0, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 53 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 90, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 5, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "CRICKET", + "ID": { + "value0": 67, + "value1": 54 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 42, + "UnitCost": 9, + "UnitWeight": 1100, + "MaxPay": 0, + "RDCost": 4, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 54 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 89, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 3, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + } + ], + "Data->P[0].Misc": [ + { + "Name": "KICKER-A", + "ID": { + "value0": 77, + "value1": 48 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 12, + "UnitCost": 3, + "UnitWeight": 300, + "MaxPay": 0, + "RDCost": 1, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 48 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 92, + "MaxSafety": 97, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "KICKER-B", + "ID": { + "value0": 77, + "value1": 49 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 18, + "UnitCost": 6, + "UnitWeight": 700, + "MaxPay": 0, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 49 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 94, + "MaxSafety": 97, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "KICKER-C", + "ID": { + "value0": 77, + "value1": 50 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 50 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "EVA SUITS", + "ID": { + "value0": 77, + "value1": 51 + }, + "Safety": 30, + "MisSaf": 0, + "MSF": 0, + "Base": 30, + "InitCost": 18, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 1, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 51 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 91, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "DOCKING", + "ID": { + "value0": 77, + "value1": 52 + }, + "Safety": 40, + "MisSaf": 0, + "MSF": 0, + "Base": 40, + "InitCost": 18, + "UnitCost": 3, + "UnitWeight": 300, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 52 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 93, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "PHOTO RECON", + "ID": { + "value0": 77, + "value1": 53 + }, + "Safety": 55, + "MisSaf": 0, + "MSF": 0, + "Base": 55, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 53 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 99, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + } + ], + "Data->P[1].Probe": [ + { + "Name": "SPUTNIK", + "ID": { + "value0": 80, + "value1": 48 + }, + "Safety": 40, + "MisSaf": 0, + "MSF": 0, + "Base": 40, + "InitCost": 6, + "UnitCost": 1, + "UnitWeight": 400, + "MaxPay": 0, + "RDCost": 1, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 80, + "value1": 48 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 95, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "COSMOS", + "ID": { + "value0": 80, + "value1": 49 + }, + "Safety": 40, + "MisSaf": 0, + "MSF": 0, + "Base": 40, + "InitCost": 20, + "UnitCost": 3, + "UnitWeight": 1000, + "MaxPay": 0, + "RDCost": 3, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 80, + "value1": 49 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 88, + "MaxSafety": 93, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "LUNA", + "ID": { + "value0": 80, + "value1": 50 + }, + "Safety": 40, + "MisSaf": 0, + "MSF": 0, + "Base": 40, + "InitCost": 26, + "UnitCost": 6, + "UnitWeight": 1500, + "MaxPay": 0, + "RDCost": 4, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 80, + "value1": 50 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 85, + "MaxSafety": 88, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + } + ], + "Data->P[1].Rocket": [ + { + "Name": "R-7", + "ID": { + "value0": 82, + "value1": 48 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 20, + "UnitCost": 3, + "UnitWeight": 0, + "MaxPay": 800, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 48 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 85, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "PROTON", + "ID": { + "value0": 82, + "value1": 49 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 60, + "UnitCost": 12, + "UnitWeight": 0, + "MaxPay": 1900, + "RDCost": 4, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 49 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 90, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "N1", + "ID": { + "value0": 82, + "value1": 50 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 84, + "UnitCost": 18, + "UnitWeight": 0, + "MaxPay": 3900, + "RDCost": 7, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 50 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 93, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "UR-700", + "ID": { + "value0": 82, + "value1": 51 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 150, + "UnitCost": 30, + "UnitWeight": 0, + "MaxPay": 5500, + "RDCost": 8, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 51 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 94, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "BOOSTERS", + "ID": { + "value0": 82, + "value1": 52 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 15, + "UnitCost": 4, + "UnitWeight": 0, + "MaxPay": 1200, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 82, + "value1": 52 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 87, + "MaxSafety": 98, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + } + ], + "Data->P[1].Manned": [ + { + "Name": "VOSTOK", + "ID": { + "value0": 67, + "value1": 48 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 18, + "UnitCost": 3, + "UnitWeight": 700, + "MaxPay": 0, + "RDCost": 1, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 48 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 76, + "MaxSafety": 92, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 5, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "VOSKHOD", + "ID": { + "value0": 67, + "value1": 49 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 24, + "UnitCost": 6, + "UnitWeight": 1400, + "MaxPay": 0, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 49 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 80, + "MaxSafety": 92, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 14, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "SOYUZ", + "ID": { + "value0": 67, + "value1": 50 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 36, + "UnitCost": 12, + "UnitWeight": 1900, + "MaxPay": 0, + "RDCost": 5, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 50 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 85, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 21, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "LAPOT", + "ID": { + "value0": 67, + "value1": 51 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 65, + "UnitCost": 30, + "UnitWeight": 1800, + "MaxPay": 0, + "RDCost": 7, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 51 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 87, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 15, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "LK-700", + "ID": { + "value0": 67, + "value1": 52 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 60, + "UnitCost": 30, + "UnitWeight": 5300, + "MaxPay": 0, + "RDCost": 9, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 52 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 89, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 24, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "LKM", + "ID": { + "value0": 67, + "value1": 53 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 35, + "UnitCost": 8, + "UnitWeight": 1700, + "MaxPay": 0, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 53 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 91, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 5, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "LK", + "ID": { + "value0": 67, + "value1": 54 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 48, + "UnitCost": 9, + "UnitWeight": 1500, + "MaxPay": 0, + "RDCost": 4, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 67, + "value1": 54 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 90, + "MaxSafety": 93, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 3, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + } + ], + "Data->P[1].Misc": [ + { + "Name": "KICKER-A", + "ID": { + "value0": 77, + "value1": 48 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 12, + "UnitCost": 3, + "UnitWeight": 500, + "MaxPay": 0, + "RDCost": 1, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 48 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 91, + "MaxSafety": 95, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "KICKER-B", + "ID": { + "value0": 77, + "value1": 49 + }, + "Safety": 10, + "MisSaf": 0, + "MSF": 0, + "Base": 10, + "InitCost": 18, + "UnitCost": 6, + "UnitWeight": 700, + "MaxPay": 0, + "RDCost": 2, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 49 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 91, + "MaxSafety": 95, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "KICKER-C", + "ID": { + "value0": 77, + "value1": 50 + }, + "Safety": 5, + "MisSaf": 0, + "MSF": 0, + "Base": 5, + "InitCost": 40, + "UnitCost": 20, + "UnitWeight": 3000, + "MaxPay": 0, + "RDCost": 4, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 50 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 90, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "EVA SUITS", + "ID": { + "value0": 77, + "value1": 51 + }, + "Safety": 30, + "MisSaf": 0, + "MSF": 0, + "Base": 30, + "InitCost": 18, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 1, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 51 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 91, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "DOCKING", + "ID": { + "value0": 77, + "value1": 52 + }, + "Safety": 40, + "MisSaf": 0, + "MSF": 0, + "Base": 40, + "InitCost": 15, + "UnitCost": 2, + "UnitWeight": 300, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": -1, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 52 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 94, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "PHOTO RECON", + "ID": { + "value0": 77, + "value1": 53 + }, + "Safety": 55, + "MisSaf": 0, + "MSF": 0, + "Base": 55, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 77, + "value1": 53 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 99, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + }, + { + "Name": "", + "ID": { + "value0": 0, + "value1": 0 + }, + "Safety": 0, + "MisSaf": 0, + "MSF": 0, + "Base": 0, + "InitCost": 0, + "UnitCost": 0, + "UnitWeight": 0, + "MaxPay": 0, + "RDCost": 0, + "Code": 0, + "Num": 0, + "Spok": 0, + "Seas": 0, + "Used": 0, + "unused_IDX": { + "value0": 0, + "value1": 0 + }, + "Steps": 0, + "Failures": 0, + "MaxRD": 0, + "MaxSafety": 0, + "SMods": 0, + "SaveCard": 0, + "Delay": 0, + "Duration": 0, + "Damage": 0, + "DCost": 0, + "MisSucc": 0, + "MisFail": 0 + } + ] +} \ No newline at end of file diff --git a/src/game/prefs.cpp b/src/game/prefs.cpp index 89678236..12a6e740 100644 --- a/src/game/prefs.cpp +++ b/src/game/prefs.cpp @@ -345,7 +345,7 @@ void CLevels(char side, char wh, DisplayContext &dctx) void Prefs(int where, int player) { int num, hum1 = 0, hum2 = 0; - FILE *fin; + char *fname; char ch, Name[20], ksel = 0; int32_t size; DisplayContext dctx; @@ -442,10 +442,24 @@ void Prefs(int where, int player) key = 0; if ((where == 0 || where == 3) && (Data->Def.Input == 2 || Data->Def.Input == 3)) { - fin = sOpen("HIST.DAT", "rb", 0); - fread(&Data->P[0].Probe[PROBE_HW_ORBITAL], 28 * (sizeof(Equipment)), 1, fin); - fread(&Data->P[1].Probe[PROBE_HW_ORBITAL], 28 * (sizeof(Equipment)), 1, fin); - fclose(fin); + fname = locate_file("hist.json", FT_DATA); + + ifstream os(fname); + cereal::JSONInputArchive ar(os); + + // Don't make a loop over the players as this + // will break the preprocessor macro. + + ARCHIVE_VECTOR(Data->P[0].Probe, struct Equipment, 7); + ARCHIVE_VECTOR(Data->P[0].Rocket, struct Equipment, 7); + ARCHIVE_VECTOR(Data->P[0].Manned, struct Equipment, 7); + ARCHIVE_VECTOR(Data->P[0].Misc, struct Equipment, 7); + + ARCHIVE_VECTOR(Data->P[1].Probe, struct Equipment, 7); + ARCHIVE_VECTOR(Data->P[1].Rocket, struct Equipment, 7); + ARCHIVE_VECTOR(Data->P[1].Manned, struct Equipment, 7); + ARCHIVE_VECTOR(Data->P[1].Misc, struct Equipment, 7); + } // Random Equipment