public CJSONValue this[int Index] { get { CJSONValue result = null; mValues.TryGetValue(Index.ToString(), out result); return(result); } }
private SParseResult _ParseObject() { if (_nextTokenType == EToken.OPEN_OBJECT) { _ReadNextToken(); CJSONValue value = new CJSONValue(); value.mType = CJSONValue.EValueType.OBJECT; while (_nextTokenType == EToken.STRING) { string key = _nextTokenLexeme; _ReadNextToken(); if (_nextTokenType != EToken.ASSIGNMENT) { return(new SParseResult(EParseResult.FAILED)); } _ReadNextToken(); SParseResult result = _ParseValue(); if (result.mResult != EParseResult.SUCCESS) { return(new SParseResult(EParseResult.FAILED)); } value.mValues[key] = result.mValue; if (_nextTokenType == EToken.LIST_SEPARATOR) { _ReadNextToken(); if (_nextTokenType != EToken.STRING) { return(new SParseResult(EParseResult.FAILED)); } } else { break; } } if (_nextTokenType != EToken.CLOSE_OBJECT) { return(new SParseResult(EParseResult.FAILED)); } _ReadNextToken(); return(new SParseResult(value)); } return(new SParseResult(EParseResult.NONE)); }
public float GetFloat(string Path, float Default = 0.0f) { CJSONValue value = _ResolvePath(Path); if (value == null || value.mType != EValueType.NUMBER) { return(Default); } return((float)value.mNumber); }
private SParseResult _ParseArray() { if (_nextTokenType == EToken.OPEN_ARRAY) { _ReadNextToken(); CJSONValue value = new CJSONValue(); value.mType = CJSONValue.EValueType.ARRAY; bool requiredValue = false; while (true) { SParseResult result = _ParseValue(); if (result.mResult == EParseResult.FAILED) { return(result); } if (requiredValue && result.mResult != EParseResult.SUCCESS) { return(new SParseResult(EParseResult.FAILED)); } if (result.mResult == EParseResult.SUCCESS) { value.mValues[value.mValues.Count.ToString()] = result.mValue; if (_nextTokenType == EToken.LIST_SEPARATOR) { _ReadNextToken(); requiredValue = true; } else { break; } } else { break; } } if (_nextTokenType != EToken.CLOSE_ARRAY) { return(new SParseResult(EParseResult.FAILED)); } _ReadNextToken(); return(new SParseResult(value)); } return(new SParseResult(EParseResult.NONE)); }
public int GetInt(string Path, int Default = 0) { CJSONValue value = _ResolvePath(Path); if (value == null || value.mType != EValueType.NUMBER) { return(Default); } return((int)value.mNumber); }
public bool GetBool(string Path, bool Default = false) { CJSONValue value = _ResolvePath(Path); if (value == null || value.mType != EValueType.BOOL) { return(Default); } return(value.mBool); }
public string GetString(string Path, string Default = "") { CJSONValue value = _ResolvePath(Path); if (value == null || value.mType != EValueType.STRING) { return(Default); } return(value.mString); }
private void _ShowMainMenu() { // Create main menu stuff CToolkitUI ui = CGame.ToolkitUI; CJSONParser json = new CJSONParser(); CJSONValue levelArray = json.Parse(CGame.DataDirectory + "campaign.txt"); GameObject button; if (levelArray != null) { int levelCount = 0; for (int i = 0; i < levelArray.GetCount(); ++i) { CJSONValue level = levelArray[i]; string levelName = level.GetString("name", "unknown"); string assetName = level.GetString("asset", "unknown"); bool playable = level.GetBool("playable"); bool visible = level.GetBool("visible"); if (visible) { button = ui.CreateMenuButton(_base, levelName + " (" + assetName + ".pwa)", () => { CGame.UIManager.PlaySound(CGame.PrimaryResources.AudioClips[15]); _PlayLevel(assetName); }, 1, playable); ui.SetTransform(button, 50, -100 - (levelCount++ *30), 512, 50); } } } /* * button = CreateButton(_base, "Sample (cutscene)", null); * ui.SetTransform(button, 50, -150, 256, 50); */ /* * button = CreateButton(_base, "Multiplayer", null); * ui.SetTransform(button, 50, -200, 256, 50); * * button = CreateButton(_base, "Options", null); * ui.SetTransform(button, 50, -250, 256, 50); */ button = ui.CreateMenuButton(_base, "Quit", _Exit); ui.SetTransform(button, 50, -30, 256, 50); }
private CJSONValue _ResolvePath(string Path) { CJSONValue next = this; string path = Path; if (Path == "") { return(this); } while (true) { int delim = path.IndexOf('.'); if (delim != -1) { string name = path.Substring(0, delim); if (path.Length <= delim + 1) { next = null; break; } path = path.Substring(delim + 1, Path.Length - (delim + 1)); if (!next.mValues.TryGetValue(name, out next)) { next = null; break; } } else if (delim == 0) { next = null; break; } else { if (!next.mValues.TryGetValue(path, out next)) { next = null; } break; } } return(next); }
private SParseResult _ParseValue() { if (_nextTokenType == EToken.STRING) { CJSONValue value = new CJSONValue(_nextTokenLexeme); _ReadNextToken(); return(new SParseResult(value)); } else if (_nextTokenType == EToken.NUMBER) { CJSONValue value = new CJSONValue(_nextTokenNumber); _ReadNextToken(); return(new SParseResult(value)); } else if (_nextTokenType == EToken.TRUE) { CJSONValue value = new CJSONValue(true); _ReadNextToken(); return(new SParseResult(value)); } else if (_nextTokenType == EToken.FALSE) { CJSONValue value = new CJSONValue(false); _ReadNextToken(); return(new SParseResult(value)); } else if (_nextTokenType == EToken.NULL) { CJSONValue value = new CJSONValue(); _ReadNextToken(); return(new SParseResult(value)); } else { SParseResult result = _ParseObject(); if (result.mResult != EParseResult.NONE) { return(result); } result = _ParseArray(); if (result.mResult != EParseResult.NONE) { return(result); } } return(new SParseResult(EParseResult.NONE)); }
private void _PrintValue(CJSONValue Value, int Indent) { if (Value.mType == CJSONValue.EValueType.NULL) { Debug.Log(_GetIndents(Indent) + "Null"); } else if (Value.mType == CJSONValue.EValueType.STRING) { Debug.Log(_GetIndents(Indent) + "String: " + Value.mString); } else if (Value.mType == CJSONValue.EValueType.NUMBER) { Debug.Log(_GetIndents(Indent) + "Number: " + Value.mNumber); } else if (Value.mType == CJSONValue.EValueType.BOOL) { Debug.Log(_GetIndents(Indent) + "Bool: " + Value.mBool); } else if (Value.mType == CJSONValue.EValueType.OBJECT) { Debug.Log(_GetIndents(Indent) + "Object:"); foreach (KeyValuePair <string, CJSONValue> pair in Value.mValues) { Debug.Log(_GetIndents(Indent + 1) + "Key: " + pair.Key); _PrintValue(pair.Value, Indent + 1); } } else if (Value.mType == CJSONValue.EValueType.ARRAY) { Debug.Log(_GetIndents(Indent) + "Array:"); foreach (KeyValuePair <string, CJSONValue> pair in Value.mValues) { Debug.Log(_GetIndents(Indent + 1) + "Key: " + pair.Key); _PrintValue(pair.Value, Indent + 1); } } }
public CUnitRules() { mTiers = new List <CTierInfo>(); CJSONParser tiers = new CJSONParser(); CJSONValue tiersArray = tiers.Parse(CGame.DataDirectory + "rules.txt"); if (tiersArray == null) { Debug.LogError("Can't load rules"); return; } for (int i = 0; i < tiersArray.GetCount(); ++i) { CJSONValue t = tiersArray[i]; CTierInfo tier = new CTierInfo(); tier.mTitle = t.GetString("title", "unknown"); tier.mTierIndex = i; tier.mMaxLevel = t.GetInt("max_level"); tier.mSalary.Set(t["salary"]); tier.mIntelligence.Set(t["intelligence"]); tier.mMaxStamina.Set(t["max_stamina"]); tier.mMaxSpeed.Set(t["max_speed"]); tier.mHungerRate.Set(t["hunger_rate"]); tier.mMaxHunger.Set(t["max_hunger"]); tier.mPaperCapacity.Set(t["paper_capacity"]); tier.mAttackDamage.Set(t["attack_damage"]); tier.mDefense.Set(t["defense"]); tier.mIdleTime.Set(t["idle_time"]); tier.mWorkStaminaRate.Set(t["work_stamina_rate"]); tier.mRequiredXP.Set(t["required_xp"]); tier.mPromotionDemand.Set(t["promotion_demand"]); mTiers.Add(tier); } }
public SParseResult(CJSONValue Value) { mResult = EParseResult.SUCCESS; mValue = Value; }
public SParseResult(EParseResult Result) { mResult = Result; mValue = null; }
public void Set(CJSONValue Data) { mBase = Data.GetFloat("base"); mIncrease = Data.GetFloat("inc"); }