예제 #1
0
 void IPlayerSpawnCharacter.OnSpawnCharacter(IPlayer player, IRuntimeCharacter character)
 {
     if (Controller.Seat == player.Seat)
     {
         DeployCharacter(character);
     }
 }
예제 #2
0
 void IDoKill.OnKill(IRuntimeCharacter target)
 {
     if (target == MyData.RuntimeData && gameObject.activeSelf)
     {
         StartCoroutine(RemoveEffectively(target));
     }
 }
예제 #3
0
        public IUiCharacter Get(IRuntimeCharacter character)
        {
            var obj = Get(modelsPooled[0]);

            obj.Data.SetData(character);
            return(obj);
        }
예제 #4
0
        public void AddCharacter(IRuntimeCharacter character)
        {
            if (character == null)
            {
                Debug.LogError("Null is not considered a character on this situation.");
            }

            Character = character;
        }
예제 #5
0
        void CheckHealth(IRuntimeCharacter target)
        {
            if (!IsMyData(target))
            {
                return;
            }

            SetText(GetText());
        }
예제 #6
0
        IUiCharacter GetUi(IRuntimeCharacter ch)
        {
            var ui = rightTeam.GetCharacter(ch);

            if (ui == null)
            {
                ui = leftTeam.GetCharacter(ch);
            }
            return(ui);
        }
예제 #7
0
        //--------------------------------------------------------------------------------------------------------------

        public void DeployCharacter(IRuntimeCharacter character)
        {
            var uiCharacter = CharacterFactory.Instance.Get(character);

            if (character.Attributes.IsCaptain)
            {
                UiPlayerTeam.AddCapitain(uiCharacter);
            }
            else
            {
                UiPlayerTeam.AddCharacter(uiCharacter);
            }
        }
예제 #8
0
        public virtual void RemoveCharacter(IRuntimeCharacter character)
        {
            if (character == null)
            {
                throw new ArgumentNullException("Null is not a valid argument.");
            }

            // I believe this Find is ok to destroy remove the ui element
            var uiCharacter = Characters.Find(x => x.Data.RuntimeData == character);

            if (uiCharacter == null)
            {
                return;
            }

            RemoveCharacter(uiCharacter);
        }
예제 #9
0
 /// <summary>
 ///     Adds a character to the board into a specific position.
 /// </summary>
 /// <param name="character"></param>
 /// <param name="pos"></param>
 public void AddCharacter(IRuntimeCharacter character, IBoardPosition pos)
 {
 }
예제 #10
0
 public void OnDeath(IPlayer Owner, IRuntimeCharacter target) =>
 GameEvents.Instance.Notify <IDoKill>(i => i.OnKill(target));
예제 #11
0
        IEnumerator RemoveEffectively(IRuntimeCharacter target)
        {
            yield return(new WaitForSeconds(TimeUntilRemoveUnit));

            CharacterFactory.Instance.ReleasePooledObject(gameObject);
        }
예제 #12
0
 protected CharMechanic(IRuntimeCharacter character) => Character = character;
예제 #13
0
 /// <summary>
 ///     Dispatch damage dealt to the listeners.
 /// </summary>
 /// <param name="source"></param>
 /// <param name="target"></param>
 /// <param name="amount"></param>
 void OnDoneDamage(IRuntimeCharacter source, IRuntimeCharacter target, int amount) =>
 GameEvents.Instance.Notify <GameEvents.IDoAttack>(i => i.OnDamage(source, target, amount));
예제 #14
0
 public DeathMechanic(IRuntimeCharacter character) : base(character)
 {
 }
예제 #15
0
 public BoardPosition(IRuntimeCharacter character)
 {
 }
예제 #16
0
 public IUiCharacter GetCharacter(IRuntimeCharacter character) =>
 Characters.Find(x => x.Data.RuntimeData == character);
예제 #17
0
 public HealMechanic(IRuntimeCharacter character) : base(character)
 {
 }
예제 #18
0
 IEnumerator RemoveEffectively(IRuntimeCharacter target)
 {
     yield return(new WaitForSeconds(TimeUntilRemoveUnit));
     //TODO: CharacterFactory
 }
예제 #19
0
 public DamageMechanic(IRuntimeCharacter character) : base(character)
 {
 }
예제 #20
0
 protected bool IsMyData(IRuntimeCharacter target) => target == Handler.RuntimeData;
예제 #21
0
        public void RemoveCharacter(IRuntimeCharacter character)
        {
            var uiCharacter = CharacterFactory.Instance.Get(character);

            UiPlayerTeam.RemoveCharacter(uiCharacter);
        }
예제 #22
0
        IEnumerator RemoveEffectively(IRuntimeCharacter target)
        {
            yield return(new WaitForSeconds(TimeUntilRemoveUnit));

            UiPlayerTeam.RemoveCharacter(target);
        }
예제 #23
0
 /// <summary>
 ///     Dispatch card spawn to the listeners.
 /// </summary>
 /// <param name="player"></param>
 /// <param name="character"></param>
 void OnSpawnCharacter(IPlayer player, IRuntimeCharacter character) =>
 GameEvents.Instance.Notify <GameEvents.IPlayerSpawnCharacter>(i => i.OnSpawnCharacter(player, character));
예제 #24
0
 void OnAddTile(IRuntimeCharacter tile, IBoardPosition pos)
 {
 }
 public AttackCharacterMechanic(IRuntimeCharacter character) : base(character)
 {
     ResetAttackQuantity();
     AttacksThisTurn = Attributes.MaxAttackPerTurn;
 }
예제 #26
0
 public void OnKill(IRuntimeCharacter target) => StartCoroutine(RemoveEffectively(target));
예제 #27
0
 /// <summary>
 ///     Removes a character from a specific position.
 /// </summary>
 /// <param name="character"></param>
 /// <param name="pos"></param>
 public void RemoveTile(IRuntimeCharacter character, IBoardPosition pos)
 {
 }
예제 #28
0
 public void RemoveCharacter() => Character = null;
예제 #29
0
 void OnRemoveTile(IRuntimeCharacter tile, IBoardPosition pos)
 {
 }
 /// <summary>
 ///     Set a card.
 /// </summary>
 /// <param name="character"></param>
 public void SetData(IRuntimeCharacter character)
 {
     RuntimeData = character;
     OnSetData?.Invoke(StaticData);
 }