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);
    }
Пример #2
0
    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);
            }
        }
    }
Пример #3
0
    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);
        }
    }
Пример #4
0
 public void startFastFight()
 {
     fastFight = true;
     while (!PartiesSingleton.hasWinner() || nextEventTime < 10)
     {
         EventQueueSingleton.queue.startEvent(nextEventTime);
     }
 }
Пример #5
0
    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);
        }
    }
Пример #6
0
    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;
            });
        }
    }
Пример #7
0
    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);;
    }
Пример #8
0
 void Update()
 {
     base.Update();
     if (isActive)
     {
         if (Input.GetKeyDown(KeyCode.Mouse0))
         {
             closeResults();
             if (PartiesSingleton.isHeroesWinner())
             {
                 generateMessage(new GameMessage(MessageType.FIGHT_FINISH_HERO_WINS));
             }
         }
     }
 }
Пример #9
0
    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);
    }
Пример #10
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);
    }
Пример #11
0
    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);
    }
Пример #12
0
    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);
    }
Пример #13
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);
                    }
                }
            }
        }
    }