public override float eventStart() { Ability ability = null; int priority = -1; foreach (var ab in owner.abilityList) { var party = PartiesSingleton.getParty(ab.targetType); if (ab.abilityTactic.getPriority() > priority && !owner.usedAbilites.Contains(ab) && ab.targetTactic.getTargets(party, 1, ab).Count > 0) { ability = ab; priority = ab.abilityTactic.getPriority(); } } if (ability != null) { ability.generateEvents(owner, eventTime); owner.usedAbilites.Add(ability); logEvent("generated next ability " + ability.name); } else { logEvent("ERROR " + owner.name + " has no available ability to cast"); } return(0.0f); }
public void reload() { preparePlaces(); foreach (var p in PartiesSingleton.currentGame.selectedHeroes.FindAll(p => p.isActive)) { if (p.place.x < 1 || p.place.y < 1) { p.place = PartiesSingleton.generatePlace(); } var himage = Instantiate(heroImage, transform.Find("position" + p.place.x + p.place.y), false); himage.transform.Find("HeroImage").gameObject.GetComponent <HeroImageController>().person = p; if (p.Equals(person)) { himage.transform.Find(Constants.BACKGROUND).GetComponent <Image>().color = new Color((float)24 / 256, (float)252 / 256, (float)39 / 256, (float)157 / 256); } else { himage.transform.Find(Constants.BACKGROUND).GetComponent <Image>().color = new Color((float)148 / 256, (float)252 / 256, (float)155 / 256, (float)157 / 256); } } }
private void reload() { foreach (Transform child in personTable.transform) { Destroy(child.gameObject); } var personFactory = factory.GetComponent <PersonFactory>(); personFactory.availableEnemy.Add(XMLFactory.loadPerson("configs/monsters/trolls/heavyTroll")); personFactory.availableEnemy.Add(XMLFactory.loadPerson("configs/monsters/trolls/fastTroll")); personFactory.availableEnemy.Add(XMLFactory.loadPerson("configs/monsters/trolls/trollSummoner")); personFactory.setController(personTable); PartiesSingleton.clear(); EventQueueSingleton.queue.events.Clear(); EventQueueSingleton.queue.nextEventTime = 0.0f; EventQueueSingleton.queue.realTime = Time.fixedTime; EventQueueSingleton.queue.fastFight = false; foreach (var p in PartiesSingleton.currentGame.activeHeroes.FindAll(p => p.isActive)) { PartiesSingleton.heroes.addPerson(personFactory.create(p)); } int count = 0; foreach (var ability in PartiesSingleton.player.abilityList) { var uAbility = Instantiate(userAbility, transform.Find("UserAbility"), false); uAbility.GetComponent <UserAbilityController>().ability = ability; uAbility.transform.localPosition = new Vector2(0.0f, 0.0f + 1.2f * count++);; } int powerCalculated = 0; foreach (var p in personFactory.generatePersonList(mapPoint)) { powerCalculated += p.calculatePower(); PartiesSingleton.enemies.addPerson(personFactory.create(p)); } foreach (var go in PartiesSingleton.enemies.getPartyList()) { go.GetComponent <PersonController>().person.initHealthMana(); } enemyPowerCost.GetComponent <Text>().text = powerCalculated.ToString(); foreach (var hero in PartiesSingleton.heroes.getLivePersons()) { hero.generateEvents(0.0f); } foreach (var enemy in PartiesSingleton.enemies.getLivePersons()) { enemy.generateEvents(0.0f); } }
public void startFastFight() { fastFight = true; while (!PartiesSingleton.hasWinner() || nextEventTime < 10) { EventQueueSingleton.queue.startEvent(nextEventTime); } }
public override void applyEffect(Person owner, Person target, float startTime, Ability ab) { var targets = PartiesSingleton.getParty(target.ally).getLivePersons(). FindAll(p => p.place.x == target.place.x); foreach (var p in targets) { base.applyEffect(owner, p, startTime, ab); } }
private void reload() { foreach (Transform child in result.transform) { Destroy(child.gameObject); } if (PartiesSingleton.isHeroesWinner()) { resultHeader.GetComponent <Text>().text = "Heroes Wins!"; } else { resultHeader.GetComponent <Text>().text = "Trolls Wins!"; } for (int i = 0; i < PartiesSingleton.heroes.getPartyList().ToArray().Length; i++) { var person = PartiesSingleton.heroes.getPartyList().ToArray()[i].GetComponent <PersonController>().person; var go = Instantiate(personStatistics, result.transform, true); go.transform.Find("name").GetComponent <Text>().text = person.name; go.transform.Find("damage").GetComponent <Text>().text = person.statistics.damageDealed.ToString(); go.transform.Find("heal").GetComponent <Text>().text = person.statistics.heal.ToString(); go.transform.Find("tank").GetComponent <Text>().text = person.statistics.damageTaken.ToString(); go.transform.GetComponent <RectTransform>().position = new Vector2(-4, (float)(1.1 - i * 0.5)); } for (int i = 0; i < PartiesSingleton.enemies.getPartyList().ToArray().Length; i++) { var person = PartiesSingleton.enemies.getPartyList().ToArray()[i].GetComponent <PersonController>().person; var go = Instantiate(personStatistics, result.transform, true); go.transform.Find("name").GetComponent <Text>().text = person.name; go.transform.Find("damage").GetComponent <Text>().text = person.statistics.damageDealed.ToString(); go.transform.Find("heal").GetComponent <Text>().text = person.statistics.heal.ToString(); go.transform.Find("tank").GetComponent <Text>().text = person.statistics.damageTaken.ToString(); go.transform.GetComponent <RectTransform>().position = new Vector2(1, (float)(1.1 - i * 0.5)); } foreach (var go in PartiesSingleton.heroes.getPartyList()) { var person = go.GetComponent <PersonController>().person; PartiesSingleton.currentGame.activeHeroes.FindAll(p => p.name.Equals(person.name)) .ForEach(p => { p.health = person.health; p.mana = person.mana; p.shield = person.shield; p.isAlive = person.isAlive; }); } }
public override float eventStart() { var pf = GameObject.Find("GameFactory").GetComponent <PersonFactory>(); var go = pf.create(person); PartiesSingleton.getParty(owner.ally).addPerson(go); go.GetComponent <PersonController>().person.summoner = owner; go.GetComponent <PersonController>().person.setLevel(owner.level); go.GetComponent <PersonController>().person.initAbilities(); go.GetComponent <PersonController>().person.generateEvents(eventTime); logEvent("summon " + person.name); return(0.0f);; }
void Update() { base.Update(); if (isActive) { if (Input.GetKeyDown(KeyCode.Mouse0)) { closeResults(); if (PartiesSingleton.isHeroesWinner()) { generateMessage(new GameMessage(MessageType.FIGHT_FINISH_HERO_WINS)); } } } }
public override int getPriority() { long summonCount = PartiesSingleton.getParty(person.ally).getLivePersons().FindAll( p => p.summoner != null && person.name.Equals(p.summoner.name) && p.name.Equals(summon.name) && p.isAlive ).Count; if (person.mana >= ability.manaCost && summonCount == 0 && PartiesSingleton.getParty(person.ally).generatePlace() != null) { return(defaultPriority); } return(0); }
public virtual float eventStart(float startTime) { if (canUse()) { personOwner.mana = personOwner.mana - manaCost; foreach (var effect in effectList) { var targetParty = AbilityTargetType.ENEMY; if (targetType == AbilityTargetType.ENEMY) { targetParty = personOwner.enemy; } else { targetParty = personOwner.ally; } var party = PartiesSingleton.getParty(targetParty); var targets = targetTactic.getTargets(party, effect.targetsNumber, this); foreach (var target in targets) { effect.applyEffect(personOwner, target, startTime, this); } } if (animationTime > 0) { if (effectList.FindAll( eff => eff.attribures.FindAll( attr => attr == EffectAttribures.MELEE_ATTACK ).Count > 0 ).Count > 0) { personOwner.personController.meleeAttackAbility(); } else { personOwner.personController.castAbility(); } } return(animationTime); } return(0.0f); }
public List <Person> getTargets(Person target, Ability ab) { if (ab.hasAttribute(EffectAttribures.ROW_DAMAGE)) { return(PartiesSingleton.getParty(target.ally).getLivePersons(). FindAll(p => p.place.x == target.place.x)); } if (ab.hasAttribute(EffectAttribures.PIRCING_DAMAGE)) { return(PartiesSingleton.getParty(target.ally).getLivePersons(). FindAll(p => p.place.y == target.place.y)); } var list = new List <Person>(); list.Add(target); return(list); }
public override int getPriority() { bool hasDamage = false; foreach (var p in PartiesSingleton.getParty(person.ally).getLivePersons()) { if (p.isDamaged()) { hasDamage = true; } } if (person.mana > ability.manaCost && hasDamage) { return(defaultPriority); } return(0); }
// Update is called once per frame void Update() { base.Update(); if (isActive) { if (PartiesSingleton.hasWinner()) { CSVLogger.log(EventQueueSingleton.queue.nextEventTime, "FightController", "FightController", "Result"); foreach (var hero in PartiesSingleton.heroes.getLivePersons()) { CSVLogger.log(EventQueueSingleton.queue.nextEventTime, "FightController", "FightController", hero.name + "has " + hero.health); } foreach (var hero in PartiesSingleton.enemies.getLivePersons()) { CSVLogger.log(EventQueueSingleton.queue.nextEventTime, "FightController", "FightController", hero.name + "has " + hero.health); } isFinished = true; openFightResult(); } else { if (!EventQueueSingleton.queue.fastFight) { string result = EventQueueSingleton.queue.startEvent(Time.fixedTime); if (result.Length > 0) { eventLog.GetComponent <Text>().text = result; displayEvents(EventQueueSingleton.queue.events); } } } } }