コード例 #1
0
ファイル: BattleMenu.cs プロジェクト: MathewBarnard/Hopper
        public void SkillSelected(string abilityName)
        {
            Ability ability = actingCombatant.Spellbook.All.Where(abl => abl.Name() == abilityName).FirstOrDefault();

            BattleEventManager.Instance().ActionSelected(actingCombatant, ability);
            this.CloseAll();
        }
コード例 #2
0
ファイル: BattleMenu.cs プロジェクト: MathewBarnard/Hopper
        public void AttackSelected()
        {
            Ability ability = actingCombatant.Spellbook.All.Where(abl => abl.Name().ToLower() == "attack").FirstOrDefault();

            BattleEventManager.Instance().ActionSelected(actingCombatant, ability);
            this.gameObject.SetActive(false);
        }
コード例 #3
0
ファイル: Combatant.cs プロジェクト: MathewBarnard/Hopper
        public virtual void Awake()
        {
            // Disable the combatant, and listen for an event when the battle starts.
            enabled = false;

            BattleEventManager.Instance().onBattleStart += this.Enable;
        }
コード例 #4
0
 public TurnController(BattleManager manager, List <AbilitySelection> abilitySelections)
 {
     this.battleManager     = manager;
     this.abilitySelections = abilitySelections;
     this.index             = 0;
     BattleEventManager.Instance().onAbilityCompleted += BeginNextAction;
 }
コード例 #5
0
        void Awake()
        {
            this.animator = this.gameObject.GetComponent <Animator>();

            BattleEventManager.Instance().onActionSelected += CheckIfTargetable;
            BattleEventManager.Instance().onTargetSelected += Disable;

            this.gameObject.SetActive(false);
        }
コード例 #6
0
ファイル: BattleManager.cs プロジェクト: MathewBarnard/Hopper
 public void OnDestroy()
 {
     BattleEventManager.Instance().onBattleStart    -= NextTurn;
     BattleEventManager.Instance().onActionSelected -= ActionSelected;
     BattleEventManager.Instance().onTargetSelected -= TargetSelected;
     BattleEventManager.Instance().onBeginPlayTurn  -= ProcessTurn;
     BattleEventManager.Instance().onEndTurn        -= EndTurn;
     BattleEventManager.Instance().onBattleEnd      -= BattleEnd;
 }
コード例 #7
0
        private void Update()
        {
            if (UnityEngine.Input.GetMouseButtonDown(0))
            {
                RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);


                if (hit.collider != null)
                {
                    List <Combatant> targets = new List <Combatant>();

                    if (this.ability.TargetingType() == TargetingType.OFFENSIVE_SINGLE || this.ability.TargetingType() == TargetingType.OFFENSIVE_ALL)
                    {
                        foreach (EnemyCombatant enemy in enemies)
                        {
                            if (hit.collider.gameObject == enemy.gameObject)
                            {
                                if (this.ability.TargetingType() == TargetingType.OFFENSIVE_SINGLE)
                                {
                                    targets.Add(enemy);
                                }
                                else
                                {
                                    targets.AddRange(enemies.Cast <Combatant>().ToList());
                                }
                                BattleEventManager.Instance().TargetSelected(targets);
                                Disable();
                                return;
                            }
                        }
                    }
                    else if (this.ability.TargetingType() == TargetingType.DEFENSIVE_SINGLE || this.ability.TargetingType() == TargetingType.DEFENSIVE_ALL)
                    {
                        foreach (PlayerCombatant player in players)
                        {
                            if (hit.collider.gameObject == player.gameObject)
                            {
                                if (this.ability.TargetingType() == TargetingType.DEFENSIVE_SINGLE)
                                {
                                    targets.Add(player);
                                }
                                else
                                {
                                    targets.AddRange(players.Cast <Combatant>().ToList());
                                }
                                BattleEventManager.Instance().TargetSelected(targets);
                                Disable();
                                return;
                            }
                        }
                    }
                }
            }
        }
コード例 #8
0
ファイル: BattleManager.cs プロジェクト: MathewBarnard/Hopper
 /// <summary>
 /// Subscribe to events that the BattleManager is concerned with.
 /// </summary>
 private void Awake()
 {
     this.id = Guid.NewGuid();
     BattleEventManager.Instance().onBattleStart    += NextTurn;
     BattleEventManager.Instance().onActionSelected += ActionSelected;
     BattleEventManager.Instance().onTargetSelected += TargetSelected;
     BattleEventManager.Instance().onBeginPlayTurn  += ProcessTurn;
     BattleEventManager.Instance().onEndTurn        += EndTurn;
     BattleEventManager.Instance().onBattleEnd      += BattleEnd;
     this.abilitySelection = new List <AbilitySelection>();
 }
コード例 #9
0
 void Awake()
 {
     //Enforce singleton pattern and only allow one battleEventManager to live at a time
     if (BattleEventManager._instance == null)
     {
         BattleEventManager._instance = this;
     }
     else if (BattleEventManager._instance != this)
     {
         Destroy(this.gameObject);
     }
 }
コード例 #10
0
ファイル: BattleManager.cs プロジェクト: MathewBarnard/Hopper
 private void NextCombatant()
 {
     if (this.turnQueue.Count > 0)
     {
         Combatant previous = this.actingCombatant;
         this.actingCombatant = this.turnQueue.Dequeue();
         BattleEventManager.Instance().BeginActionSelection(this.actingCombatant, previous);
     }
     else
     {
         BattleEventManager.Instance().BeginPlayTurn();
     }
 }
コード例 #11
0
        public void BeginNextAction(Combatant combatant, Ability ability)
        {
            // Cleanup any resources between the last action and this one.
            this.Cleanup();

            // Check if the battle win condition was met in the last action.
            if (!IsBattleFinished())
            {
                this.BeginNextAction();
            }
            else
            {
                BattleEventManager.Instance().onAbilityCompleted -= BeginNextAction;
                BattleEventManager.Instance().BattleEnd();
            }
        }
コード例 #12
0
 public void BeginNextAction()
 {
     // End the turn if we have processed all abilities
     if (index == abilitySelections.Count)
     {
         this.index             = 0;
         this.abilitySelections = null;
         BattleEventManager.Instance().onAbilityCompleted -= BeginNextAction;
         BattleEventManager.Instance().EndTurn();
     }
     // Process the ability
     else
     {
         abilitySelections[index].results = abilitySelections[index].ability.Process(abilitySelections[index].targets);
         abilitySelections[index].ability.AttachScripts(abilitySelections[index]);
         index++;
     }
 }
コード例 #13
0
        private void Start()
        {
            // Get the player party from the data repository.
            Party playerParty = DataRepository.Instance().Parties.GetByName("main");

            List <GameObject> players = new List <GameObject>();
            List <GameObject> enemies = new List <GameObject>();

            foreach (string partyMember in playerParty.Members)
            {
                // We want to spawn a combatant for each player in the party.
                GameObject      playerCombatant = Instantiate((GameObject)Resources.Load(string.Format("Prefabs/Battle/Characters/{0}", partyMember)), this.transform.parent);
                PlayerCombatant player          = playerCombatant.GetComponent <PlayerCombatant>();
                player.Character = DataRepository.Instance().Characters.GetByName(partyMember);
                players.Add(playerCombatant);
            }

            // Get the enemy party
            Party enemyParty = BattleTransitionContainer.EnemyParty;

            // If the enemy party is null, grab the test party.
            if (enemyParty == null)
            {
                enemyParty = (Party)DataRepository.Instance().Parties.GetByName("test1");
            }

            foreach (string partyMember in enemyParty.Members)
            {
                // We want to spawn a combatant for each player in the party.
                GameObject     enemyCombatant = Instantiate((GameObject)Resources.Load(string.Format("Prefabs/Battle/Characters/{0}", "Enemy")), this.transform.parent);
                EnemyCombatant enemy          = enemyCombatant.GetComponent <EnemyCombatant>();
                enemy.Enemy = (Enemy)DataRepository.Instance().Enemies.GetByName(partyMember).Clone();
                enemies.Add(enemyCombatant);
            }

            UnitPlacement unitPlacement = this.GetComponentInChildren <UnitPlacement>();

            unitPlacement.PlacePlayers(players);
            unitPlacement.PlaceEnemies(enemies);

            GameObject.Find("BattleManager").GetComponent <BattleManager>().StoreCombatants(players, enemies);

            BattleEventManager.Instance().BattleStart();
        }
コード例 #14
0
 public void OnDestroy()
 {
     BattleEventManager.Instance().onBeginActionSelection -= SwitchPortrait;
     BattleEventManager.Instance().onTargetSelected       -= HidePortrait;
 }
コード例 #15
0
ファイル: BattleMenu.cs プロジェクト: MathewBarnard/Hopper
 private void Awake()
 {
     BattleEventManager.Instance().onTargetingCancelled += Enable;
 }
コード例 #16
0
 private void Awake()
 {
     BattleEventManager.Instance().onBeginActionSelection += SelectActionCamera;
     BattleEventManager.Instance().onActionSelected       += SelectTargetCamera;
     BattleEventManager.Instance().onTargetSelected       += ReturnToRest;
 }
コード例 #17
0
 public void OnDestroy()
 {
     BattleEventManager.Instance().onBeginActionSelection -= SelectActionCamera;
     BattleEventManager.Instance().onActionSelected       -= SelectTargetCamera;
     BattleEventManager.Instance().onTargetSelected       -= ReturnToRest;
 }
コード例 #18
0
 private void Start()
 {
     BattleEventManager.Instance().AbilityCompleted(this.combatant, this.abilitySelection.ability);
     this.complete = true;
 }
コード例 #19
0
 public void OnDestroy()
 {
     BattleEventManager.Instance().onActionSelected -= CheckIfTargetable;
     BattleEventManager.Instance().onTargetSelected -= Disable;
 }
コード例 #20
0
 void Awake()
 {
     BattleEventManager.Instance().onActionSelected     += Enable;
     BattleEventManager.Instance().onTargetingCancelled += Disable;
 }
コード例 #21
0
 public void OnDestroy()
 {
     BattleEventManager.Instance().onActionSelected     -= Enable;
     BattleEventManager.Instance().onTargetingCancelled -= Disable;
 }
コード例 #22
0
ファイル: Combatant.cs プロジェクト: MathewBarnard/Hopper
 public void OnDestroy()
 {
     BattleEventManager.Instance().onBattleStart -= this.Enable;
 }
コード例 #23
0
ファイル: UIController.cs プロジェクト: MathewBarnard/Hopper
 public void OnDestroy()
 {
     BattleEventManager.Instance().onBeginActionSelection -= ShowMenu;
 }
コード例 #24
0
 private void Awake()
 {
     BattleEventManager.Instance().onBeginActionSelection += SwitchPortrait;
     BattleEventManager.Instance().onTargetSelected       += HidePortrait;
 }
コード例 #25
0
 private void Awake()
 {
     Instance = this;
 }
コード例 #26
0
ファイル: UIController.cs プロジェクト: MathewBarnard/Hopper
 private void Awake()
 {
     UIController.instance = this;
     BattleEventManager.Instance().onBeginActionSelection += ShowMenu;
 }