public Trap StartPreviewTrap(TrapModel model) { var trap = SpawnTrap(model, Vector3Int.zero); trap.Highlight(true, true); return(trap); }
public AbstractTrapBehaviour GetTrapOfType(TrapType trapType) { var selectedTrapGo = AllTraps.FirstOrDefault(x => x.TrapType == trapType); selectedTrapGo.Model = TrapModel.GetTrapModelInfo(trapType); return(selectedTrapGo); }
public void SetBulletModelFromTrap(TrapModel trapModel, CreepsBehaviour targetCreepsa) { Model = new TrapBulletModel(trapModel); this.targetCreepsa = targetCreepsa; ReadyForBattle = true; }
public TrapBulletModel(TrapModel trapModel) { MoveSpeed = MoveSpeedFromAttackType(trapModel.AttackType); Damage = Random.Range(trapModel.MinDamage, trapModel.MaxDamage + 1); AttackType = trapModel.AttackType; }
public void Init(TrapModel model, Vector3Int position) { m_model = model; m_nextActivation = Time.realtimeSinceStartup + m_model.Delay; m_activationPositions = new List <Vector2Int>(); m_blockPositions = new List <Vector2Int>(); m_position = new Vector2Int(position.x, position.y); m_activationPositions.AddRange(m_model.ActivationPositions(m_position)); m_blockPositions.AddRange(m_model.BlockPositions(m_position)); }
public Trap SpawnTrap(TrapModel model, Vector3Int position) { var trapGO = Instantiate(model.gameObject); trapGO.transform.SetParent(m_trapContainer); trapGO.transform.position = position; var modelI = trapGO.GetComponent <TrapModel>(); var trap = trapGO.AddComponent <Trap>(); trap.Init(modelI, position); return(trap); }
public static void CopyTrapModel(TrapModel source, TrapModel dest) { dest.MinDamage = source.MinDamage; dest.MaxDamage = source.MaxDamage; dest.TrapName = source.TrapName; dest.NextUpgradeTrapName = source.NextUpgradeTrapName; dest.AttackSpeed = source.AttackSpeed; dest.MoneyCost = source.MoneyCost; dest.NextUpgradeTrap = source.NextUpgradeTrap; dest.AttackType = source.AttackType; dest.AbilityType = source.AbilityType; dest.AbilityCooldown = source.AbilityCooldown; }
public bool CanSpawnTrapAt(TrapModel model, Vector3Int position) { var positions = Helper.ToVector3Int(model.BlockPositions(new Vector2Int(position.x, position.y))); var trapPositions = GridInformation.GetAllPositions(TilemapProperty.TrapProperty); if (!positions.All((pos) => trapPositions.Contains(pos))) { return(false); } List <Vector3Int> allTrapsPositions = new List <Vector3Int>(); m_traps.ForEach((t) => allTrapsPositions.AddRange(Helper.ToVector3Int(t.BlockPositions))); return(!positions.Any((pos) => allTrapsPositions.Contains(pos))); }
public static TrapModel GetTrapModelInfo(TrapType trapType) { var staticTrap = AllTraps.FirstOrDefault(x => x.TrapName.ToLower() == trapType.ToString().ToLower()); if (staticTrap == null) { Debug.LogError("staticTrap == null : " + trapType.ToString()); } var newTrap = new TrapModel(); CopyTrapModel(staticTrap, newTrap); return(newTrap); }
public void CreateNewTrap(TrapType trapType) { var trapTemplate = trapsManager.GetTrapOfType(trapType); var newTrapGo = GameObject.Instantiate(trapTemplate); //this.CurrentTrap = newTrapGo; newTrapGo.SetTrapPlace(this); newTrapGo.Model = TrapModel.GetTrapModelInfo(trapType); TrapMenuGUI.StartClosingCurrentGui(); Debug.Log("Building " + trapType); GetComponentInChildren <SpriteRenderer>().gameObject.SetActive(false); var particle = GetComponentInChildren <ParticleSystem>(true); particle.gameObject.SetActive(true); var particleMain = particle.main; switch (newTrapGo.Model.AttackType) { case TrapAttackType.Fear: particleMain.startColor = new ParticleSystem.MinMaxGradient(new Color(110f / 255f, 18f / 255f, 223f / 255f)); break; case TrapAttackType.Light: particleMain.startColor = new ParticleSystem.MinMaxGradient(new Color(224f / 255f, 248f / 255f, 5f / 255f)); break; case TrapAttackType.Chaos: particleMain.startColor = new ParticleSystem.MinMaxGradient(new Color(51f / 255f, 135f / 255f, 44f / 255f)); break; case TrapAttackType.Poison: particleMain.startColor = new ParticleSystem.MinMaxGradient(new Color(55f / 255f, 165f / 255f, 165f / 255f)); break; default: throw new ArgumentOutOfRangeException(); } }
public void RequestSpawnAt(TrapModel model, Vector3Int position) { if (!CanSpawnTrapAt(model, position)) { return; } if (Souls < model.Souls) { return; } var trap = TrapManager.SpawnTrap(model, position); trap.OnPurchase(); if (trap != null) { m_traps.Add(trap); } }
public void CreateNewTrap(TrapType trapType) { var toCreateTrap = TrapModel.GetTrapModelInfo(trapType); Money -= toCreateTrap.MoneyCost; }
public bool CanCreateTrap(TrapType trapType) { var toCreateTrap = TrapModel.GetTrapModelInfo(trapType); return(Money >= toCreateTrap.MoneyCost); }
public void SetText(string trapsInfoText) { TrapModel.SetTrapModelsFromTextFile(trapsInfoText); }
// TrapName | MinDamage | MaxDamage | AttackSpeed | NextUpgradeTrapName | MoneyCost | AttackType | AbilityType private static TrapModel ReadTrapModelFromLine(string line) { try { if (string.IsNullOrEmpty(line) || line.IsNullOrWhiteSpace()) { return(null); } if (line.StartsWith("//")) { return(null); } line = line.Replace("\r", ""); while (line.Contains("\t\t")) { line = line.Replace("\t\t", "\t"); } var parts = line.Split(new char[] { '|', '\t' }); var i = 0; var prefabName = parts[i++]; var minDamage = int.Parse(parts[i++]); var maxDamage = int.Parse(parts[i++]); var attackSpeed = float.Parse(parts[i++]); var nextUpgradeName = parts[i++] == "None" ? "" : parts[i - 1]; var moneyCost = int.Parse(parts[i++]); var attackType = ParseAttackType(parts[i++]); KeyValuePair <TrapAbilityType, int>?abilityCooldown = null; //var sb = new StringBuilder(); //for (int j = 0; j < parts.Length; j++) //{ // sb.Append("[" + j + "]"); // sb.Append(parts[j]); // sb.Append(" "); //} //Debug.Log(sb); if (parts.Length >= 8) { abilityCooldown = ParseAbilityTypeWithCooldown(parts[i++]); } var trap = new TrapModel() { MinDamage = minDamage, MaxDamage = maxDamage, AttackSpeed = attackSpeed, NextUpgradeTrapName = nextUpgradeName, MoneyCost = moneyCost, AttackType = attackType, TrapName = prefabName, }; if (abilityCooldown.HasValue) { trap.AbilityType = abilityCooldown.Value.Key; trap.AbilityCooldown = abilityCooldown.Value.Value; } return(trap); } catch (Exception e) { Debug.Log(e.Message.ToString() + " line = " + line); return(null); } }
static TrapModel() { return; var allTrapsInfo = "Fear|1|3|1|Fear2|50|Fear|\n" + "Void|1|3|1|Void2|50|Chaos|\n" + "Oblivion|1|3|1|Oblivion2|50|Poison|\n" + "Envy|1|3|1|Envy2|50|Fear|\n" + "Madness|1|3|1|Madness2|50|Light|\n" + "Hypocrisy|1|3|1|Hypocrisy2|50|Chaos|\n" + "Lust|1|3|1|Lust2|50|Light|\n" + "Pride|1|3|1|Pride2|50|Poison|\n" + "Fear2|1|3|1|Fear3|50|Fear|Ghost,60\n" + "Void2|1|3|1|Void3|50|Chaos|Ghost,60\n" + "Oblivion2|1|3|1|Oblivion3|50|Poison|Ghost,60\n" + "Envy2|1|3|1|Envy3|50|Fear|\n" + "Madness2|1|3|1|Madness3|50|Light|\n" + "Hypocrisy2|1|3|1|Hypocrisy3|50|Chaos|Steal,45\n" + "Lust2|1|3|1|Lust3|50|Light|Frost,60\n" + "Pride2|1|3|1|Pride3|50|Poison|Envenom,60\n" + "Fear3|1|3|1|Fear4|50|Fear|Ghost,30\n" + "Void3|1|3|1|Void4|50|Chaos|Ghost,30\n" + "Oblivion3|1|3|1|Oblivion4|50|Poison|Ghost,30\n" + "Envy3|1|3|1|Envy4|50|Fear|\n" + "Madness3|1|3|1|Madness4|50|Light|\n" + "Hypocrisy3|1|3|1|Hypocrisy4|50|Chaos|Steal,30\n" + "Lust3|1|3|1|Lust4|50|Light|Frost,30\n" + "Pride3|1|3|1|Pride4|50|Poison|Envenom,40\n" + "Fear4|1|3|1||50|Fear|Ghost,15\n" + "Void4|1|3|1||50|Chaos|Ghost,15\n" + "Oblivion4|1|3|1||50|Poison|Ghost,15\n" + "Envy4|1|3|1||50|Fear|\n" + "Madness4|1|3|1||50|Light|\n" + "Hypocrisy4|1|3|1||50|Chaos|Steal,15\n" + "Lust4|1|3|1||50|Light|Frost,15\n" + "Pride4|1|3|1||50|Poison|Envenom,20\n"; AllTraps = new List <TrapModel>(); // TrapName | MinDamage | MaxDamage | AttackSpeed | NextUpgradeTrapName | MoneyCost | AttackType | AbilityType foreach (var line in allTrapsInfo.Split('\n')) { if (string.IsNullOrEmpty(line)) { continue; } var part = line.Split('|'); if (part.Length < 8) { Debug.LogError("part.Length < 5 : " + part); continue; } var trap = new TrapModel(); var i = 0; trap.TrapName = part[i++]; trap.MinDamage = int.Parse(part[i++]); trap.MaxDamage = int.Parse(part[i++]); trap.AttackSpeed = float.Parse(part[i++]); trap.NextUpgradeTrapName = part[i++]; trap.MoneyCost = int.Parse(part[i++]); trap.AttackType = ParseAttackType(part[i++]); if (string.IsNullOrEmpty(part[i])) { trap.AbilityType = TrapAbilityType.None; } else { var abilityInfo = part[i].Split(','); var abilityType = ParseAbilityType(abilityInfo[0]); var abilityTime = int.Parse(abilityInfo[1]); trap.AbilityType = abilityType; trap.AbilityCooldown = abilityTime; } AllTraps.Add(trap); } // Задаем апгрейдычи из имен. foreach (var trap in AllTraps) { if (string.IsNullOrEmpty(trap.NextUpgradeTrapName)) { continue; } var nextTrap = AllTraps.FirstOrDefault(x => x.TrapName == trap.NextUpgradeTrapName); if (nextTrap == null) { Debug.LogError("nextTrap == null : trap.Upgrade = " + trap.NextUpgradeTrapName); continue; } trap.NextUpgradeTrap = nextTrap; } }