|
5 | 5 | using System.Collections.Generic; |
6 | 6 | using Newtonsoft.Json; |
7 | 7 | using Newtonsoft.Json.Linq; |
| 8 | +using CSGSI.Nodes; |
8 | 9 | namespace CSGSI |
9 | 10 | { |
10 | 11 | /// <summary> |
11 | 12 | /// This object represents the entire game state |
12 | 13 | /// </summary> |
13 | 14 | public class GameState |
14 | 15 | { |
15 | | - private JObject m_Data; |
| 16 | + private JObject _Data; |
16 | 17 |
|
17 | | - private GameStateNode m_Provider; |
18 | | - private GameStateNode m_Map; |
19 | | - private GameStateNode m_Round; |
20 | | - private GameStateNode m_Player; |
21 | | - private GameStateNode m_Auth; |
22 | | - private GameStateNode m_Added; |
23 | | - private GameStateNode m_Previously; |
| 18 | + private ProviderNode _Provider; |
| 19 | + private MapNode _Map; |
| 20 | + private RoundNode _Round; |
| 21 | + private PlayerNode _Player; |
| 22 | + private AllPlayersNode _AllPlayers; |
| 23 | + private GameState _Previously; |
| 24 | + private GameState _Added; |
| 25 | + private AuthNode _Auth; |
24 | 26 |
|
25 | | - /// <summary> |
26 | | - /// The "provider" subnode |
27 | | - /// </summary> |
28 | | - public GameStateNode Provider { get { return m_Provider; } } |
| 27 | + public ProviderNode Provider |
| 28 | + { |
| 29 | + get |
| 30 | + { |
| 31 | + if (_Provider == null) |
| 32 | + { |
| 33 | + _Provider = new ProviderNode(_Data["provider"]?.ToString() ?? ""); |
| 34 | + } |
29 | 35 |
|
30 | | - /// <summary> |
31 | | - /// The "map" subnode |
32 | | - /// </summary> |
33 | | - public GameStateNode Map { get { return m_Map; } } |
| 36 | + return _Provider; |
| 37 | + } |
| 38 | + } |
| 39 | + public MapNode Map |
| 40 | + { |
| 41 | + get |
| 42 | + { |
| 43 | + if (_Map == null) |
| 44 | + { |
| 45 | + _Map = new MapNode(_Data["map"]?.ToString() ?? ""); |
| 46 | + } |
34 | 47 |
|
35 | | - /// <summary> |
36 | | - /// The "round" subnode |
37 | | - /// </summary> |
38 | | - public GameStateNode Round { get { return m_Round; } } |
| 48 | + return _Map; |
| 49 | + } |
| 50 | + } |
| 51 | + public RoundNode Round |
| 52 | + { |
| 53 | + get |
| 54 | + { |
| 55 | + if (_Round == null) |
| 56 | + { |
| 57 | + _Round = new RoundNode(_Data["round"]?.ToString() ?? ""); |
| 58 | + } |
39 | 59 |
|
40 | | - /// <summary> |
41 | | - /// The "player" subnode |
42 | | - /// </summary> |
43 | | - public GameStateNode Player { get { return m_Player; } } |
| 60 | + return _Round; |
| 61 | + } |
| 62 | + } |
| 63 | + public PlayerNode Player |
| 64 | + { |
| 65 | + get |
| 66 | + { |
| 67 | + if (_Player == null) |
| 68 | + { |
| 69 | + _Player = new PlayerNode(_Data["player"]?.ToString() ?? ""); |
| 70 | + } |
44 | 71 |
|
45 | | - /// <summary> |
46 | | - /// The "auth" subnode |
47 | | - /// </summary> |
48 | | - public GameStateNode Auth { get { return m_Auth; } } |
| 72 | + return _Player; |
| 73 | + } |
| 74 | + } |
| 75 | + public AllPlayersNode AllPlayers |
| 76 | + { |
| 77 | + get |
| 78 | + { |
| 79 | + if (_AllPlayers == null) |
| 80 | + { |
| 81 | + _AllPlayers = new AllPlayersNode(_Data["allplayers"]?.ToString() ?? ""); |
| 82 | + } |
49 | 83 |
|
50 | | - /// <summary> |
51 | | - /// The "added" subnode |
52 | | - /// </summary> |
53 | | - public GameStateNode Added { get { return m_Added; } } |
| 84 | + return _AllPlayers; |
| 85 | + } |
| 86 | + } |
| 87 | + public GameState Previously |
| 88 | + { |
| 89 | + get |
| 90 | + { |
| 91 | + if (_Previously == null) |
| 92 | + { |
| 93 | + _Previously = new GameState(_Data["previously"]?.ToString() ?? ""); |
| 94 | + } |
54 | 95 |
|
55 | | - /// <summary> |
56 | | - /// The "previously" subnode |
57 | | - /// </summary> |
58 | | - public GameStateNode Previously { get { return m_Previously; } } |
| 96 | + return _Previously; |
| 97 | + } |
| 98 | + } |
| 99 | + public GameState Added |
| 100 | + { |
| 101 | + get |
| 102 | + { |
| 103 | + if (_Added == null) |
| 104 | + { |
| 105 | + _Added = new GameState(_Data["added"]?.ToString() ?? ""); |
| 106 | + } |
| 107 | + return _Added; |
| 108 | + } |
| 109 | + } |
| 110 | + public AuthNode Auth |
| 111 | + { |
| 112 | + get |
| 113 | + { |
| 114 | + if(_Auth == null) |
| 115 | + { |
| 116 | + _Auth = new AuthNode(_Data["auth"]?.ToString() ?? ""); |
| 117 | + } |
| 118 | + |
| 119 | + return _Auth; |
| 120 | + } |
| 121 | + } |
59 | 122 |
|
60 | | - private string m_JSON; |
61 | 123 |
|
62 | 124 | /// <summary> |
63 | 125 | /// The JSON string that was used to generate this object |
64 | 126 | /// </summary> |
65 | | - public string JSON { get { return m_JSON; } } |
66 | | - |
| 127 | + public readonly string JSON; |
| 128 | + |
67 | 129 | /// <summary> |
68 | 130 | /// Initialises a new GameState object using a JSON string |
69 | 131 | /// </summary> |
70 | 132 | /// <param name="JSONstring"></param> |
71 | 133 | public GameState(string JSONstring) |
72 | 134 | { |
73 | | - m_JSON = JSONstring; |
| 135 | + if(JSONstring.Equals("")) |
| 136 | + { |
| 137 | + JSONstring = "{}"; |
| 138 | + } |
74 | 139 |
|
75 | | - if (!JSONstring.Equals("")) |
76 | | - m_Data = JObject.Parse(JSONstring); |
77 | | - |
78 | | - m_Provider = (HasRootNode("provider") ? new GameStateNode(m_Data["provider"]) : GameStateNode.Empty()); |
79 | | - m_Map = (HasRootNode("map") ? new GameStateNode(m_Data["map"]) : GameStateNode.Empty()); |
80 | | - m_Round = (HasRootNode("round") ? new GameStateNode(m_Data["round"]) : GameStateNode.Empty()); |
81 | | - m_Player = (HasRootNode("player") ? new GameStateNode(m_Data["player"]) : GameStateNode.Empty()); |
82 | | - m_Auth = (HasRootNode("auth") ? new GameStateNode(m_Data["auth"]) : GameStateNode.Empty()); |
83 | | - m_Added = (HasRootNode("added") ? new GameStateNode(m_Data["added"]) : GameStateNode.Empty()); |
84 | | - m_Previously = (HasRootNode("previously") ? new GameStateNode(m_Data["previously"]) : GameStateNode.Empty()); |
85 | | - } |
86 | | - |
87 | | - /// <summary> |
88 | | - /// Determines if the specified node exists in this GameState object |
89 | | - /// </summary> |
90 | | - /// <param name="rootnode"></param> |
91 | | - /// <returns>Returns true if the specified node exists, false otherwise</returns> |
92 | | - public bool HasRootNode(string rootnode) |
93 | | - { |
94 | | - return (m_Data != null && m_Data[rootnode] != null); |
| 140 | + JSON = JSONstring; |
| 141 | + _Data = JObject.Parse(JSONstring); |
95 | 142 | } |
96 | 143 | } |
97 | 144 | } |
0 commit comments