void IPlayerSpawnCharacter.OnSpawnCharacter(IPlayer player, IRuntimeCharacter character) { if (Controller.Seat == player.Seat) { DeployCharacter(character); } }
void IDoKill.OnKill(IRuntimeCharacter target) { if (target == MyData.RuntimeData && gameObject.activeSelf) { StartCoroutine(RemoveEffectively(target)); } }
public IUiCharacter Get(IRuntimeCharacter character) { var obj = Get(modelsPooled[0]); obj.Data.SetData(character); return(obj); }
public void AddCharacter(IRuntimeCharacter character) { if (character == null) { Debug.LogError("Null is not considered a character on this situation."); } Character = character; }
void CheckHealth(IRuntimeCharacter target) { if (!IsMyData(target)) { return; } SetText(GetText()); }
IUiCharacter GetUi(IRuntimeCharacter ch) { var ui = rightTeam.GetCharacter(ch); if (ui == null) { ui = leftTeam.GetCharacter(ch); } return(ui); }
//-------------------------------------------------------------------------------------------------------------- public void DeployCharacter(IRuntimeCharacter character) { var uiCharacter = CharacterFactory.Instance.Get(character); if (character.Attributes.IsCaptain) { UiPlayerTeam.AddCapitain(uiCharacter); } else { UiPlayerTeam.AddCharacter(uiCharacter); } }
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); }
/// <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) { }
public void OnDeath(IPlayer Owner, IRuntimeCharacter target) => GameEvents.Instance.Notify <IDoKill>(i => i.OnKill(target));
IEnumerator RemoveEffectively(IRuntimeCharacter target) { yield return(new WaitForSeconds(TimeUntilRemoveUnit)); CharacterFactory.Instance.ReleasePooledObject(gameObject); }
protected CharMechanic(IRuntimeCharacter character) => Character = character;
/// <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));
public DeathMechanic(IRuntimeCharacter character) : base(character) { }
public BoardPosition(IRuntimeCharacter character) { }
public IUiCharacter GetCharacter(IRuntimeCharacter character) => Characters.Find(x => x.Data.RuntimeData == character);
public HealMechanic(IRuntimeCharacter character) : base(character) { }
IEnumerator RemoveEffectively(IRuntimeCharacter target) { yield return(new WaitForSeconds(TimeUntilRemoveUnit)); //TODO: CharacterFactory }
public DamageMechanic(IRuntimeCharacter character) : base(character) { }
protected bool IsMyData(IRuntimeCharacter target) => target == Handler.RuntimeData;
public void RemoveCharacter(IRuntimeCharacter character) { var uiCharacter = CharacterFactory.Instance.Get(character); UiPlayerTeam.RemoveCharacter(uiCharacter); }
IEnumerator RemoveEffectively(IRuntimeCharacter target) { yield return(new WaitForSeconds(TimeUntilRemoveUnit)); UiPlayerTeam.RemoveCharacter(target); }
/// <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));
void OnAddTile(IRuntimeCharacter tile, IBoardPosition pos) { }
public AttackCharacterMechanic(IRuntimeCharacter character) : base(character) { ResetAttackQuantity(); AttacksThisTurn = Attributes.MaxAttackPerTurn; }
public void OnKill(IRuntimeCharacter target) => StartCoroutine(RemoveEffectively(target));
/// <summary> /// Removes a character from a specific position. /// </summary> /// <param name="character"></param> /// <param name="pos"></param> public void RemoveTile(IRuntimeCharacter character, IBoardPosition pos) { }
public void RemoveCharacter() => Character = null;
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); }