public Actor(int maxHp, int armor, int defence, string image, string element) { this._maxHp = new ListenableProperty <int>(maxHp); this._armor = new ListenableProperty <int>(armor); this._defence = new ListenableProperty <int>(defence); this._healthPoint = new ListenableRangeProperty <int>(maxHp, maxHp, 0); this._frozen = new ListenableProperty <bool>(false); this._alive = new ListenableProperty <bool>(true); this._attackEnable = new ListenableProperty <bool>(true); this._focusAble = new ListenableProperty <bool>(true); this._buffList = new FilteredListenableList <IBuff>(); this._image = new ListenableProperty <string>(image); this._element = new ListenableProperty <string>(element); this._turnStartListeners = new ListenableList <IActorTurnStartListener>(); this._attackDecoratorList = new ListenableList <IStrategyDecorator <AttackInfo> >(); this._underAttackDecoratorList = new ListenableList <IStrategyDecorator <AttackInfo> >(); this._buffList.SetSorting(new IBuffComparator()); this._attackDecoratorList.SetSorting(new IDecoratorComparator()); this._underAttackDecoratorList.SetSorting(new IDecoratorComparator()); this._turnStartListeners.SetSorting(new ITurnStartListenerComparator()); }
public void RunAction(Actor source, Actor target, Card card, BattleContext manager) { if (target is PlayerInstance) { PlayerInstance player = (PlayerInstance)target; ListenableList <ElementCardInstance> handheldList = player.HandheldSet; List <ElementCardInstance> changeList = new List <ElementCardInstance>(); // if drop count greater than 0 if (_count > 0) { for (int cnt = 0; cnt < _count; cnt++) { changeList.Add(handheldList.Get(cnt)); } //if drop count smaller than 0, drop all } else if (_count < 0) { changeList.AddRange(handheldList.GetAll()); } //move card from handheld to graveard foreach (ElementCardInstance item in changeList) { handheldList.RemoveItem(item); } player.Graveyard.AddItems(changeList); } }
// Unregister listener void OnDestroy() { if (null != _enemyList) { this._enemyList.RemoveListener(this); } _enemyList = null; }
public void Bind(ListenableList <EnemyInstance> enemyList) { this._enemyList = enemyList; this._enemyList.AddListener(this); foreach (EnemyInstance enemyInstance in enemyList.GetAll()) { OnItemAdd(enemyInstance); } }
// Binding UI and ViewModel public void Bind(ListenableList <ElementCardInstance> cardList) { this._cardList = cardList; this._cardList.AddListener(this); // Update Cards foreach (ElementCardInstance card in cardList.GetAll()) { OnItemAdd(card); } }
public void ComboCardPolymery() { ComboCardUIController.SetVisible(false); Debug.Log("play combo"); BattleContext context = DataManager.Instance.BattleContext; if (null != context) { UltimateCardPlayEvent cardEvent = new UltimateCardPlayEvent(); cardEvent.Card = ComboCardUIController.GetCardInstance(); cardEvent.Targets = null; bool isPlayable = false; ListenableList <ElementCardInstance> handHeldSet = context.Player.HandheldSet; int totalCnt = handHeldSet.GetCount(); for (int i = 0; i < totalCnt; i++) { for (int j = 0; j < totalCnt; j++) { if (cardEvent.Card.IsCardPlayable(handHeldSet.Get(i), handHeldSet.Get(j))) { isPlayable = true; cardEvent.LeftCard = handHeldSet.Get(i); cardEvent.RightCard = handHeldSet.Get(j); EventManager.TriggerEvent(BattleManager.PLAY_ULTIMATE_CARD, cardEvent); break; } else if (cardEvent.Card.IsCardPlayable(handHeldSet.Get(j), handHeldSet.Get(i))) { isPlayable = true; cardEvent.LeftCard = handHeldSet.Get(j); cardEvent.RightCard = handHeldSet.Get(i); EventManager.TriggerEvent(BattleManager.PLAY_ULTIMATE_CARD, cardEvent); break; } } } Debug.Log("IsCombo Card Played: " + isPlayable.ToString()); } }
public EnemyInstance(MonsterModel model) : base(model.HealthPoint, 0, 0, model.Img, model.Element) { this._monsterModel = model; this._cards = new ListenableList <MonsterCardInstance>(); this._cardQueue = new ListenableList <MonsterCardInstance>(); ObjectBuilder builder = new ObjectBuilder(model.Strategy.Name); foreach (JKeyValuePair pair in model.Strategy.Properties) { builder.SetProperty(pair.Key, pair.Value); } this._strategy = (IAIStrategy)builder.Build(); foreach (JMonsterCardProperties cardData in model.MonsterCards) { this._cards.AddItem(new MonsterCardInstance(Constants.language_zh_tw, cardData)); } }
public void RunAction(Actor source, Actor target, Card card, BattleContext manager) { if (target is PlayerInstance) { PlayerInstance player = (PlayerInstance)target; ListenableList <ElementCardInstance> handheldSet = player.HandheldSet; ListenableList <ElementCardInstance> cardDeck = player.CardDeck; List <ElementCardInstance> filteredList = null; // filter if (null != _element) { filteredList = cardDeck.GetAll().FindAll(item => item.Element.Equals(_element)); } else { filteredList = cardDeck.GetAll(); } // random List <ElementCardInstance> drawList = new List <ElementCardInstance>(); if (filteredList.Count > 0) { for (int cnt = 0; cnt < _drawCount; cnt++) { int random = Random.Range(0, filteredList.Count - 1); drawList.Add(filteredList[random]); filteredList.RemoveAt(random); } } // update foreach (ElementCardInstance instance in drawList) { cardDeck.RemoveItem(instance); handheldSet.AddItem(instance); } } }
private ListenableList <ElementCardInstance> _handheldSet; //墓地 public PlayerInstance(string language, JCharacterProperties properties) : base(properties.MaxHp, properties.Armor, properties.Defence, properties.Image, properties.Element) { this._jCharacterProperties = properties; this._power = new ListenableProperty <int>(properties.Power); this._drawCount = new ListenableProperty <int>(properties.DrawCount); this._name = new ListenableProperty <string>(null); this._ultimateCards = new ListenableList <UltimateCardInstance>(); this._cardDeck = new ListenableList <ElementCardInstance>(); this._graveyard = new ListenableList <ElementCardInstance>(); this._handheldSet = new ListenableList <ElementCardInstance>(); foreach (JCharacterLocale local in properties.locales) { if (language.Equals(local.language)) { this._name.Property = local.data.Name; break; } } }