private async Task <Ability> GetOrCreateAbility(string abilityName) { Ability ability = await _db.Abilities.FindAsync(abilityName); if (ability == null) { if (Regex.IsMatch(abilityName, @".+builder_(spawn|upgrade)_.+")) { string unitName = "tower_" + Regex.Replace(abilityName, @"_(spawn|upgrade)", ""); ability = new SpawnAbility { Unit = await GetOrCreateUnit(unitName), UnitName = unitName }; _db.Update(((SpawnAbility)ability).Unit); _db.SpawnAbilities.Add((SpawnAbility)ability); } else { ability = new Ability(); _db.Abilities.Add(ability); } ability.Name = abilityName; await _db.SaveChangesAsync(); } return(ability); }
public void Execute() { SpawnAbility spawnAbility = (SpawnAbility)character.getAbility(typeof(SpawnAbility)); if (spawnAbility == null) { Debug.Log("Don't have SpawnAbility"); return; } if (Time.time >= spawnAbility.lastSpawn + spawnAbility.deltaTime) { Object.Instantiate(prefab, pos, Quaternion.identity); spawnAbility.lastSpawn = Time.time; } }