Example #1
0
    public void SetCharacter(BattleCreature creature)
    {
        m_Creature = creature;

        string       sprite_name     = string.Format("cs_{0}", m_Creature.Info.ID);
        string       new_sprite_name = "_cut_" + sprite_name;
        UISpriteData sp = m_Character.atlas.CloneCustomSprite(sprite_name, new_sprite_name);

        if (sp != null)
        {
            sp.height = sp.width;
        }
        m_Character.spriteName = new_sprite_name;

        if (m_Creature.Skills.Count > 1)
        {
            m_Skill1.spriteName = m_Creature.Skills[1].Info.IconID;
        }
        else
        {
            m_Skill1.gameObject.SetActive(false);
        }

        if (m_Creature.Skills.Count > 2)
        {
            m_Skill2.spriteName = m_Creature.Skills[2].Info.IconID;
        }
        else
        {
            m_Skill2.gameObject.SetActive(false);
        }
    }
Example #2
0
 public SkillTarget(SkillTargetContainer target_container, BattleSkill skill, ICreature target, int target_index)
 {
     this.target_container = target_container;
     this.Skill            = skill;
     m_TargetIndex         = target_index;
     m_Creature            = target as BattleCreature;
 }
    public override BattleActionResult execute(BattleCreature source, List <BattleCreature> targets, double amp, double hitChanceMultiplier, double alteredChanceForSecondary)
    {
        bool interactableTargets  = false;
        int  damageDealt          = 0;
        List <BattleCreature> hit = new List <BattleCreature>();

        foreach (BattleCreature target in targets)
        {
            if (target.isInteractable())
            {
                interactableTargets = true;
                if (RandomUtils.checkOdds(chanceToHit * (1 + hitChanceMultiplier)))
                {
                    double typeMultiplier = damageType.getDamageMultiplierVs(target.creature.getCreatureTypes());

                    int damage = DamageUtils.calculateDamage(basePower * typeMultiplier,
                                                             source.creature.getStats(),
                                                             target.creature.getStats());
                    damageDealt += damage;
                    target.changeHealth(damage);
                    hit.Add(target);
                }
            }
        }

        return(new DamageBattleActionResult(interactableTargets, targets.Count > 0, damageDealt, damageType, source, targets, hit));
    }
Example #4
0
    protected void InitCreatures()
    {
        List <float> start_times = new List <float>();

        for (int i = 0; i < characters.Count; ++i)
        {
            start_times.Add(i * 2f + Rand.NextRange(0f, BattleConfig.Instance.StartRange) * BattleConfig.Instance.AttackCoolTimeMax);
        }

        for (int i = 0; i < characters.Count; i++)
        {
            int   start_time_index = Rand.NextRange(0, start_times.Count - 1);
            float start_time       = start_times[start_time_index];
            start_times.RemoveAt(start_time_index);

            BattleCreature creature = characters[i] as BattleCreature;
            creature.InitContainer(battle_layout.m_Mine.m_Characters[i]);

            if (UseRun == true)
            {
                var creature_tween = creature.Character.GetComponent <HFX_TweenSystem>();
                creature_tween.Stop();

                BattleBase.Instance.tween_system.Play("start_preset", null, creature_tween, creature.Character.transform);
                creature_tween.UpdatePlay(0f);
            }

            creature.Restart(start_time);
        }

        for (int i = 0; i < enemies.Count; ++i)
        {
            start_times.Add(i * 2f + Rand.NextRange(0f, BattleConfig.Instance.StartRange) * BattleConfig.Instance.AttackCoolTimeMax);
        }

        for (int i = 0; i < enemies.Count; ++i)
        {
            if (enemies[i] == null)
            {
                continue;
            }

            int   start_time_index = Rand.NextRange(0, start_times.Count - 1);
            float start_time       = start_times[start_time_index];
            start_times.RemoveAt(start_time_index);

            BattleCreature creature = enemies[i] as BattleCreature;

            if (UseRun == true)
            {
                var creature_tween = creature.Character.GetComponent <HFX_TweenSystem>();
                creature_tween.Stop();

                BattleBase.Instance.tween_system.Play("start_preset", null, creature_tween, creature.Character.transform);
                creature_tween.UpdatePlay(0f);
            }

            creature.Restart(start_time);
        }
    }
Example #5
0
    public override void SetBattleEnd()
    {
        base.SetBattleEnd();

        C2G.EndBattle _packet = new C2G.EndBattle();
        _packet.battle_type = pe_Battle.Stage;
        _packet.end_type    = pe_EndBattle.Win;
        _packet.difficulty  = Network.BattleStageInfo.Difficulty;
        _packet.map_id      = Network.BattleStageInfo.MapInfo.ID;
        _packet.stage_id    = Network.BattleStageInfo.ID;

        _packet.creatures = new List <PacketInfo.pd_BattleEndCreatureInfo>();

        //List<int> skill_indice = new List<int>();
        for (int i = 0; i < m_TeamData.Creatures.Count; ++i)
        {
            Creature       creature = m_TeamData.Creatures[i].creature;
            BattleCreature bc       = characters.Find(c => c.Idx == creature.Idx) as BattleCreature;
            if (bc == null)
            {
                bc = dead_characters.Find(c => c.Idx == creature.Idx) as BattleCreature;
            }
            _packet.creatures.Add(new PacketInfo.pd_BattleEndCreatureInfo(bc.Idx, bc.IsDead));
            m_TeamData.Creatures[i].auto_skill_index = bc.AutoSkillIndex;
        }
        _packet.team_data = m_TeamData.CreateSaveData();

        Network.GameServer.JsonAsync <C2G.EndBattle, C2G.EndBattleAck>(_packet, OnEndBattleHandler);
    }
Example #6
0
    public override void SetBattleEnd()
    {
        base.SetBattleEnd();

        C2G.EndWorldBoss _packet = new C2G.EndWorldBoss();
        _packet.end_type = battleEndType;
        _packet.map_id   = Network.BattleStageInfo.MapInfo.ID;
        _packet.score    = m_BossHP.Creature.Stat.DealHP;

        //List<int> skill_indice = new List<int>();
        for (int i = 0; i < m_TeamData.Creatures.Count; ++i)
        {
            Creature       creature = m_TeamData.Creatures[i].creature;
            BattleCreature bc       = characters.Find(c => c.Idx == creature.Idx) as BattleCreature;
            if (bc == null)
            {
                bc = dead_characters.Find(c => c.Idx == creature.Idx) as BattleCreature;
            }
            m_TeamData.Creatures[i].auto_skill_index = bc.AutoSkillIndex;
        }
        if (m_TeamData.IsEqual(m_TeamDataBackup) == false)
        {
            _packet.team_data = m_TeamData.CreateSaveData();
        }

        Network.GameServer.JsonAsync <C2G.EndWorldBoss, C2G.EndWorldBossAck>(_packet, OnEndWorldBossHandler);
    }
Example #7
0
    protected override void Start()
    {
        m_TeamData = TeamDataManager.Instance.GetTeam(pe_Team.PVP);
        m_UILeaderSkill.Lock(Localization.Get("PVPOnlyAutoBattle"));

        base.Start();

#if SH_DEV
        m_btnWin.SetActive(true);
#else
        m_btnWin.SetActive(Debug.isDebugBuild);
#endif

        m_ProfileMine.UpdateProfile(Network.PlayerInfo.leader_creature, Network.PlayerInfo.nickname, Network.PlayerInfo.player_level);
        m_ProfileEnemy.UpdateProfile(Network.PVPBattleInfo.enemy_info.leader_creature, Network.PVPBattleInfo.enemy_info.nickname, Network.PVPBattleInfo.enemy_info.player_level);

        m_BG.material.mainTexture = AssetManager.LoadBG("000_pvp");
        enemies = new List <ICreature>();
        for (int i = 0; i < Network.PVPBattleInfo.enemy_team_data.Creatures.Count; ++i)
        {
            Creature       creature        = Network.PVPBattleInfo.enemy_team_data.Creatures[i].creature;
            BattleCreature battle_creature = new BattleCreature(creature, battle_layout.m_Enemy.m_Characters[i], 0f, character_hpbar_prefab, character_skill_prefab, false);
            battle_creature.AutoSkillIndex = Network.PVPBattleInfo.enemy_team_data.Creatures[i].auto_skill_index;
            if (creature.Idx == Network.PVPBattleInfo.enemy_team_data.LeaderCreatureIdx)
            {
                battle_creature.SetLeader(Network.PVPBattleInfo.enemy_team_data.UseLeaderSkillType, OnUseEnemyLeaderSkill);
            }
            enemies.Add(battle_creature);
        }

        InitCreatures();

        SoundManager.Instance.PlayBGM("PVP");
    }
 public DamageBattleActionResult(bool succeeded, bool hadTargets, int damageDealt, CreatureType damageType, BattleCreature source, List <BattleCreature> targets, List <BattleCreature> targetsHit) : base(succeeded, hadTargets)
 {
     this.damageDealt = damageDealt;
     this.damageType  = damageType;
     this.source      = source;
     this.targets     = targets;
     this.targets     = targetsHit;
 }
Example #9
0
 public MoveContext(Move move, BattleCreature source, List <BattlefieldPosition> allies, List <BattlefieldPosition> enemies, List <BattlefieldPosition> targets)
 {
     this.move    = move;
     this.source  = source;
     this.allies  = allies;
     this.enemies = enemies;
     this.targets = targets;
 }
Example #10
0
 public BattleActionContext(BattleAction action, BattleCreature source, List <BattleCreature> targets, double amp,
                            double hitChanceMultiplier)
 {
     this.action              = action;
     this.source              = source;
     this.targets             = targets;
     this.amp                 = amp;
     this.hitChanceMultiplier = hitChanceMultiplier;
 }
 public bool place(BattleCreature creature, BattlefieldPosition position)
 {
     if (!positionExists(position))
     {
         return(false);
     }
     positions[position] = creature;
     return(false);
 }
 public override BattleActionResult execute(BattleCreature source, List <BattleCreature> targets, double amp, double hitChanceMultiplier, double alteredChanceForSecondary)
 {
     foreach (BattleAction ba in battleActions)
     {
         if (ba.execute(source, targets, amp, hitChanceMultiplier, alteredChanceForSecondary) != null)
         {
             return(null);
         }
     }
     return(null);
 }
 public BattlefieldPosition getPosition(BattleCreature creature)
 {
     foreach (KeyValuePair <BattlefieldPosition, BattleCreature> pair in positions)
     {
         if (pair.Value.Equals(creature))
         {
             return(pair.Key);
         }
     }
     return(null);
 }
    public BattleCreature removeOccupant(BattlefieldPosition position)
    {
        if (!isOccupied(position))
        {
            return(null);
        }

        BattleCreature oldOccupant = positions[position];

        positions[position] = null;
        return(oldOccupant);
    }
Example #15
0
    public void Init(BattleCreature creature, bool use_hp_back = false)
    {
        Creature         = creature;
        this.use_hp_back = use_hp_back;

        string sprite_name = string.Format("profile_{0}", Creature.Info.ID);

        m_Icon.spriteName = sprite_name;
        die_count         = 0;

        SetHPBack();
        gameObject.SetActive(true);
    }
    public List <BattleCreature> getEnemies(BattleCreature bc)
    {
        List <BattleCreature> result = new List <BattleCreature>();

        getActiveCreatures().ForEach(ac =>
        {
            if (ac.owner.Equals(bc.owner))
            {
                result.Add(ac);
            }
        });
        return(result);
    }
Example #17
0
    public void swapPosition(int pos1, int pos2)
    {
        if (!(posExists(pos1) && posExists(pos2)))
        {
            throw new System.Exception("Cannot swap when positions are out of bounds");
        }

        BattleCreature first  = creatures[pos1];
        BattleCreature second = creatures[pos2];

        creatures[pos1] = second;
        creatures[pos2] = first;
    }
    private async Task <List <MoveContext> > getPlayerCreatureMoveRequests()
    {
        //TODO properly implement
        //List<Pair<BattleCreature, Move>> moveReqs = new List<Pair<BattleCreature, Move>>();

        List <BattleCreature>       activeCreatures = positionManager.getActiveCreatures();
        BattleCreature              c       = positionManager.getActiveCreatures()[0];
        List <SelectButton <Move> > buttons = new List <SelectButton <Move> >();

        c.getMoves().ForEach(m =>
        {
            buttons.Add(SelectButton <Move> .create(m));
        });

        List <SelectButton <Move> > dblButtons = new List <SelectButton <Move> >();

        dblButtons.AddRange(buttons);
        dblButtons.AddRange(buttons);

        Move move = await battleUIManager.getSelection <Move>(dblButtons, c.creature.creatureName + " move selection:");

        List <BattleCreature> targets = new List <BattleCreature>();

        switch (move.targetClass)
        {
        case TargetClass.ENEMY_SINGLE:
            break;

        case TargetClass.ALLY_SINGLE:
            break;

        case TargetClass.ALLY_ALL:
            break;

        case TargetClass.ENEMY_ALL:
            break;

        case TargetClass.ALL:
            break;
        }

        Debug.Log("Move selected: " + move.ToString());


        MoveContext context = new MoveContext(move, c, null, null, null);

        return(new List <MoveContext> {
            context
        });
    }
Example #19
0
    void EndWave()
    {
        if (IsLastWave)
        {
            base.SetBattleEnd();
            SetBattleEndStage();
            return;
        }

        WaveStartTime = 0f;
        IsBattleStart = false;

        float delay      = 1.0f;
        var   end_bundle = BattleBase.Instance.tween_system.GetBundle("end");

        end_bundle.Delay = delay;

        foreach (var creature in characters)
        {
            BattleCreature battle_creature = creature as BattleCreature;
            battle_creature.Clear();
            if (creature.IsDead == false)
            {
                end_bundle.Play(creature.Character.GetComponent <HFX_TweenSystem>(), creature.Character.transform, null, 1f);
                int heal = Mathf.RoundToInt(battle_creature.Stat.MaxHP * GameConfig.Get <float>("wave_heal"));
                if (heal > 0)
                {
                    battle_creature.SetWaveHeal(heal);
                    TextManager.Instance.PushHeal(battle_creature, heal, eTextPushType.Normal);
                }
            }
        }
        foreach (var creature in enemies)
        {
            if (creature != null)
            {
                (creature as BattleCreature).Clear();
                if (creature.IsDead == false)
                {
                    end_bundle.Play(creature.Character.GetComponent <HFX_TweenSystem>(), creature.Character.transform, null, 1f);
                }
            }
        }
        WaveEndTime = Time.time + 2f + delay;

        foreach (var creature in m_LightingCreatures)
        {
            creature.SetEnd(true);
        }
    }
Example #20
0
    public BattleSkill(SkillInfo info, BattleCreature creature, short skill_level)
    {
        this.Info     = info;
        this.Creature = creature;
        Level         = skill_level;

        foreach (SkillInfo.Action action in info.Actions)
        {
            if (action.IsDirect == false)
            {
                Duration = Mathf.Max(Duration, action.duration);
            }
        }
    }
Example #21
0
    protected override void Start()
    {
        m_TeamData       = TeamDataManager.Instance.GetTeam(Network.BattleStageInfo.TeamID);
        m_TeamDataBackup = m_TeamData.Clone();
        m_BossHP.m_Label.gameObject.SetActive(false);

        up_score.gameObject.SetActive(false);
        die_count.gameObject.SetActive(false);

        base.Start();
        m_BG.material.mainTexture = AssetManager.LoadBG(Network.BattleStageInfo.BG_ID);

        enemies = new List <ICreature>();
        List <MapCreatureInfo> enemy_infos = Network.BattleStageInfo.Waves[0].Creatures;

        for (int i = 0; i < enemy_infos.Count; ++i)
        {
            if (enemy_infos[i].CreatureInfo == null)
            {
                continue;
            }

            BattleCreature creature = new BattleCreature(enemy_infos[i], battle_layout.m_Enemy.m_Characters[i], 0f, character_hpbar_prefab, character_skill_prefab);
            enemies.Add(creature);
        }

        InitWorldBoss();

        update_mana_creature_index = 0;
        update_mana_enemy_index    = 0;

        battleEndType = pe_EndBattle.Invalid;
        IsBattleEnd   = false;
        PlaybackTime  = 0f;

        first_tick = 0;

        InitCreatures();

        if (WorldBossInfo.Info != null)
        {
            BestScore.text = Localization.Format("WorldBossBestInBattle", WorldBossInfo.Info.score);
        }
        else
        {
            BestScore.text = Localization.Format("WorldBossBestInBattle", "-");
        }

        SoundManager.Instance.PlayBGM("PVP");
    }
Example #22
0
        public void testMoveManagerGetListOfHighestPrio()
        {
            Watchers testWatchers = new Watchers();

            CreatureStats  cs1 = new CreatureStats(1, 1, 1, 10);
            CreatureForm   bf1 = new CreatureForm(new HashSet <CreatureType>(new CreatureType[] { CreatureType.VITAL }), null, null);
            FocusPoint     f1  = new FocusPoint(null, null, null, null);
            FocalPoints    fp1 = new FocalPoints(f1, f1, f1, f1);
            Creature       c1  = new Creature(0, "", null, fp1, null, cs1, bf1, null);
            BattleCreature bc1 = new BattleCreature(c1, Owner.ALLY, testWatchers);

            CreatureStats  cs2 = new CreatureStats(1, 1, 1, 20);
            CreatureForm   bf2 = new CreatureForm(new HashSet <CreatureType>(new CreatureType[] { CreatureType.VITAL }), null, null);
            FocusPoint     f2  = new FocusPoint(null, null, null, null);
            FocalPoints    fp2 = new FocalPoints(f2, f2, f2, f2);
            Creature       c2  = new Creature(0, "", null, fp2, null, cs2, bf2, null);
            BattleCreature bc2 = new BattleCreature(c2, Owner.ALLY, testWatchers);

            Move move1 = new Move(0, "TestMove1", "", Move.MoveClass.ATTACK, TargetClass.ENEMY_SINGLE, null, CreatureType.VITAL, 0, 0, 0);
            Move move2 = new Move(1, "TestMove2", "", Move.MoveClass.ATTACK, TargetClass.ENEMY_SINGLE, null, CreatureType.VITAL, 1, 0, 0);
            Move move3 = new Move(2, "TestMove3", "", Move.MoveClass.ATTACK, TargetClass.ENEMY_SINGLE, null, CreatureType.VITAL, -3, 0, 0);

            MoveContext context1 = new MoveContext(move1, bc1, null, null, null);
            MoveContext context2 = new MoveContext(move2, bc2, null, null, null);
            MoveContext context3 = new MoveContext(move3, bc1, null, null, null);
            MoveContext context4 = new MoveContext(move1, bc2, null, null, null);

            //bc2 moves faster than bc1
            //Order of prio: move3, move1, move2
            //Resulting move order should then be: context3, context4, context1, context2
            HashSet <MoveContext> contexts    = new HashSet <MoveContext>(new MoveContext[] { context1, context2, context3, context4 });
            MoveManager           moveManager = new MoveManager(null, null, contexts);

            MoveContext actual1 = moveManager.getNextMove();
            MoveContext actual2 = moveManager.getNextMove();

            Assert.That(moveManager.getMovesRemaining() == 2);
            Assert.That(moveManager.isTurnOver() == false);

            MoveContext actual3 = moveManager.getNextMove();
            MoveContext actual4 = moveManager.getNextMove();

            Assert.That(moveManager.getMovesRemaining() == 0);
            Assert.That(moveManager.isTurnOver());

            Assert.That(actual1.Equals(context3));
            Assert.That(actual2.Equals(context4));
            Assert.That(actual3.Equals(context1));
            Assert.That(actual4.Equals(context2));
        }
Example #23
0
    public Buff(BattleCreature creature, BattleSkill skill, SkillInfo.Action action_info, int value, float duration, ISkillBuff parent)
        : base(duration)
    {
        Parent          = parent;
        m_Creature      = creature;
        Skill           = skill;
        this.ActionInfo = action_info;
        switch (action_info.actionType)
        {
        case eActionType.dot_damage:
        case eActionType.dot_damage_mana:
        case eActionType.dot_heal:
        case eActionType.dot_heal_mana:
            this.Value = Mathf.RoundToInt(value / duration);
            break;

        default:
            this.Value = value;
            break;
        }
        this.StartTime = m_Creature.PlaybackTime;

        eBuffColorType buff_color = eBuffColorType.None;

        if (action_info.actionType == eActionType.shield && action_info.value > 0)
        {
            AffectValue    = value;
            AffectValueMax = value;

            buff_color = eBuffColorType.Shield;
        }
        else
        {
            AffectValue    = 1;
            AffectValueMax = 1;
        }

        if (skill != null && skill.Creature != null && IsMainBuff == true && skill.Info.ShowIcon == true)
        {
            if (buff_color != eBuffColorType.Shield)
            {
                buff_color = creature.IsTeam == skill.Creature.IsTeam ? eBuffColorType.Buff : eBuffColorType.DeBuff;
            }

            BuffContainer.Alloc();
            BuffContainer.Asset.Init(Skill.Info.IconID, buff_color, Duration > 0f);
            BuffContainer.Asset.OnUpdate(0f, 1f);
        }
    }
Example #24
0
    public override BattleActionResult execute(BattleCreature source, List <BattleCreature> targets, double amp, double hitChanceMultiplier, double alteredChanceForSecondary)
    {
        bool anyInteractable = false;

        foreach (BattleCreature bc in targets)
        {
            anyInteractable |= bc.isInteractable();
            if (bc.isInteractable())
            {
                bc.changeFocus(focusChange);
            }
        }

        return(new BattleActionResult(anyInteractable, anyInteractable));
    }
Example #25
0
 public void CheckManaFill(BattleCreature creature)
 {
     if (creature.IsTeam)
     {
         if (update_mana_creature_index != -1 && characters[update_mana_creature_index] == creature)
         {
             creature.IsManaFill = false;
             NextCreature(true);
         }
     }
     else
     {
         if (update_mana_enemy_index != -1 && enemies[update_mana_enemy_index] == creature)
         {
             creature.IsManaFill = false;
             NextCreature(false);
         }
     }
 }
Example #26
0
    public void Init(BattleCreature creature, bool reverse, float scale)
    {
        m_Creature           = creature;
        m_Scale              = scale;
        m_MP.fillAmount      = 0f;
        transform.localScale = Vector3.one * scale;
        if (reverse == true)
        {
            m_HP.fillOrigin       = (int)Image.OriginHorizontal.Right;
            m_HPDanger.fillOrigin = (int)Image.OriginHorizontal.Right;
            m_MP.fillOrigin       = (int)Image.OriginHorizontal.Right;

            m_ManaFill.transform.parent.localScale = new Vector3(-1f, 1f, 1f);
        }
        else
        {
            m_ManaFill.transform.parent.localScale = Vector3.one;
        }
    }
Example #27
0
    void SetBattleEndStage()
    {
        C2G.EndBattle _packet = new C2G.EndBattle();
        _packet.battle_type  = pe_Battle.Stage;
        _packet.end_type     = battleEndType;
        _packet.difficulty   = Network.BattleStageInfo.Difficulty;
        _packet.map_id       = Network.BattleStageInfo.MapInfo.ID;
        _packet.stage_id     = Network.BattleStageInfo.ID;
        _packet.creatures    = new List <PacketInfo.pd_BattleEndCreatureInfo>();
        _packet.is_new_clear = MapClearDataManager.Instance.IsNewClear(Network.BattleStageInfo);

        //List<int> skill_indice = new List<int>();
        for (int i = 0; i < m_TeamData.Creatures.Count; ++i)
        {
            Creature       creature = m_TeamData.Creatures[i].creature;
            BattleCreature bc       = characters.Find(c => c.Idx == creature.Idx) as BattleCreature;
            if (bc == null)
            {
                bc = dead_characters.Find(c => c.Idx == creature.Idx) as BattleCreature;
            }
            _packet.creatures.Add(new PacketInfo.pd_BattleEndCreatureInfo(bc.Idx, bc.IsDead));
            m_TeamData.Creatures[i].auto_skill_index = bc.AutoSkillIndex;
        }
        if (m_TeamData.IsEqual(m_TeamDataBackup) == false || Tutorial.Instance.Completed == false)
        {
            _packet.team_data = m_TeamData.CreateSaveData();
        }

        if (Tutorial.Instance.Completed == false)
        {
            C2G.TutorialState tutorial_packet = new C2G.TutorialState();
            tutorial_packet.tutorial_state      = Network.PlayerInfo.tutorial_state;
            tutorial_packet.next_tutorial_state = (short)Tutorial.Instance.CurrentState;
            tutorial_packet.end_battle          = _packet;

            Network.GameServer.JsonAsync <C2G.TutorialState, C2G.TutorialStateAck>(tutorial_packet, OnTutorialEndBattleHandler);
        }
        else
        {
            Network.GameServer.JsonAsync <C2G.EndBattle, C2G.EndBattleAck>(_packet, OnEndBattleHandler);
        }
    }
    public void setup(Pair <int, int> battlefieldSize, Team team1, Team team2)
    {
        this.battleUIManager = battleUIManager;
        this.positionManager = new BattlefieldPositionManager(battlefieldSize.getFirst(), battlefieldSize.getSecond());
        this.battleUIManager.setup(positionManager);
        this.battleUIManager.setShowCreatureUi(true);

        this.watchers       = new Watchers();
        this.actionResolver = new BattleActionResolver(watchers.battleActionWatcher, battleUIManager);
        this.team1          = new BattleTeam(team1, Owner.PLAYER, watchers);
        this.team2          = new BattleTeam(team2, Owner.COMPUTER, watchers);

        BattleCreature testCreature1 = new BattleCreature(team1.getCreatures()[0], Owner.PLAYER, watchers);
        BattleCreature testCreature2 = new BattleCreature(team2.getCreatures()[0], Owner.COMPUTER, watchers);

        this.positionManager.place(testCreature1, new BattlefieldPosition(1, BattlefieldPosition.PositionType.PRIMARY, 0));

        this.currentTurnPhase = 0;

        beginBattleLoop();
    }
Example #29
0
    void NextCreature(bool is_team)
    {
        int count_limit = 5;

        int next_creature_index  = is_team ? update_mana_creature_index:update_mana_enemy_index;
        List <ICreature> targets = is_team ? characters : enemies;

        while (true && count_limit-- > 0)
        {
            ++next_creature_index;
            if (next_creature_index >= targets.Count)
            {
                next_creature_index = 0;
            }

            BattleCreature creature = targets[next_creature_index] as BattleCreature;
            if (creature != null && creature.IsDead == false && creature.IsPlayingSkill == false && creature.IsMPFull == false)
            {
                creature.IsManaFill = true;
                if (is_team)
                {
                    update_mana_creature_index = next_creature_index;
                }
                else
                {
                    update_mana_enemy_index = next_creature_index;
                }
                return;
            }
        }
        if (is_team)
        {
            update_mana_creature_index = -1;
        }
        else
        {
            update_mana_enemy_index = -1;
        }
    }
Example #30
0
    protected override void Start()
    {
        m_TeamData = TeamDataManager.Instance.GetTeam(Network.BattleStageInfo.TeamID);

        base.Start();
        m_BG.material.mainTexture = AssetManager.LoadBG(Network.BattleStageInfo.BG_ID);

        enemies = new List <ICreature>();
        List <MapCreatureInfo> enemy_infos = Network.BattleStageInfo.Waves[0].Creatures;

        for (int i = 0; i < enemy_infos.Count; ++i)
        {
            if (enemy_infos[i].CreatureInfo == null)
            {
                continue;
            }

            BattleCreature creature = new BattleCreature(enemy_infos[i], battle_layout.m_Enemy.m_Characters[i], 0f, character_hpbar_prefab, character_skill_prefab);
            enemies.Add(creature);
        }

        InitRaid();

        update_mana_creature_index = 0;
        update_mana_enemy_index    = 0;

        battleEndType = pe_EndBattle.Invalid;
        IsBattleEnd   = false;
        PlaybackTime  = 0f;

        first_tick = 0;

        InitCreatures();

        SoundManager.Instance.PlayBGM("PVP");
    }