private int LoadArmyData() { #if UNITY_EDITOR for (int j = 0; j < TurnManager.Instance.PlayerCount; j++) { if (TurnManager.Instance.GetPlayer(j).UnitCount > 0) { Debug.LogError("Player " + j + " has " + TurnManager.Instance.GetPlayer(j).UnitCount + " units at the start of the game!"); } } #endif TextAsset unitDataFile = Resources.Load(PathExtensions.CombineForward(CommonPaths.UNIT_DATA_DIR, "Army"), typeof(TextAsset)) as TextAsset; if (unitDataFile) { Dictionary <string, object> rawData = Json.Deserialize(unitDataFile.text) as Dictionary <string, object>; for (int i = 0; i < _maxArmySize; i++) { string unitKey = ARMY_UNITY_KEY + i; if (rawData != null && rawData.ContainsKey(unitKey)) { string unitName = rawData[unitKey] as string; for (int j = 0; j < TurnManager.Instance.PlayerCount; j++) { GameObject newUnit = PoolManager.instance.GetObjectForName(unitName, false); HexUnit hexUnit = newUnit.GetComponent <HexUnit>(); hexUnit.Reset(); if (j % 2 == 0) { hexUnit.FaceRight(); } else { hexUnit.FaceLeft(); } TurnManager.Instance.GetPlayer(j).AddUnit(hexUnit); newUnit.SetActive(false); } } else { return(i); } } return(_maxArmySize); } return(-1); }
public void SetData(HexUnit unit) { _selectedUnit = unit; //Do not reload resource if it is the same. if (unit.UniqueName != _lastLoadedUnitId) { TextAsset unitDataFile = Resources.Load(PathExtensions.CombineForward(CommonPaths.UNIT_DATA_DIR, unit.UniqueName), typeof(TextAsset)) as TextAsset; if (unitDataFile) { Dictionary <string, object> rawData = Json.Deserialize(unitDataFile.text) as Dictionary <string, object>; if (rawData != null) { if (rawData.ContainsKey(UNITY_PORTRAIT_KEY)) { string portraitKey = rawData[UNITY_PORTRAIT_KEY] as string; _unitImage.sprite = !string.IsNullOrEmpty(portraitKey) ? Resources.Load <Sprite>(PathExtensions.CombineForward(CommonPaths.TEXTURES, portraitKey)) : null; } _lastLoadedUnitId = unit.UniqueName; } } } _unitNameText.text = string.Format("{0} (P{1})", unit.UnitName, unit.OwnerId + 1); StringBuilder sb = new StringBuilder(); sb.AppendLine("Armor: " + unit.Armor); sb.AppendLine("Dodge Chance: %" + unit.DodgeChance * 100); sb.AppendLine(string.Format("HP: {0}/{1}", unit.HealthLeft, unit.MaxHealth)); if (unit.MaxMana > 0) { sb.AppendLine(string.Format("Mana: {0}/{1}", unit.ManaLeft, unit.MaxMana)); } _unitInfoText.text = sb.ToString(); _unitHealthBar.value = unit.HealthLeft == 0 ? 0 : unit.HealthLeft / (float)unit.MaxHealth; _unitManaBar.value = unit.ManaLeft == 0 ? 0 : unit.ManaLeft / (float)unit.MaxMana; _unitNameText.color = unit.OwnerId == TurnManager.Instance.GetActivePlayer().Id ? _allyColor : _enemyColor; _skillContainer.gameObject.SetActive(_canShowSkills && unit.OwnerId == TurnManager.Instance.GetActivePlayer().Id); if (_skillContainer.gameObject.activeSelf) { foreach (Toggle toggle in _skillContainer.GetComponentsInChildren <Toggle>()) { toggle.onValueChanged.RemoveAllListeners(); PoolManager.instance.Recycle(toggle.gameObject); } if (unit.MeleeAttack || unit.RangedAttack) { AddSkillButton(unit, null, "Attack", -1, true); } for (int i = 0; i < unit.Skills.Length; i++) { if (!unit.Skills[i].IsPassive) { AddSkillButton(unit, unit.Skills[i], unit.Skills[i].SkillName, i, false); } } } }