public bool HeroAttack(int gamePlayerID, int targetID, bool isTargetServant) { if (CurrentGamePlayerID != gamePlayerID) { return(false); } GamePlayer gamePlayer = (gamePlayerID == 1) ? GamePlayer1 : GamePlayer2; if (isTargetServant) { CardRecord targetCardRecord; if (GameCardManager.FindCard(targetID, out targetCardRecord) && targetCardRecord is ServantCardRecord) { return(gamePlayer.Hero.AttackServant(targetCardRecord as ServantCardRecord, gamePlayer)); } else { return(false); } } else { if (targetID != 1 && targetID != 2 || targetID == CurrentGamePlayerID) { return(false); } else { Hero hero = (targetID == 1) ? GamePlayer1.Hero : GamePlayer2.Hero; return(gamePlayer.Hero.AttackHero(hero, gamePlayer)); } } }
public bool NonTargeCasttSpell(int gamePlayerID, int spellCardRecordID) { if (CurrentGamePlayerID != gamePlayerID) { return(false); } CardRecord spellCardRecord; if (!GameCardManager.FindCard(spellCardRecordID, out spellCardRecord) || !(spellCardRecord is SpellCardRecord)) { return(false); } if (spellCardRecord.Effectors(GameCardManager).Any(x => x is TargetEffector || x is MinionTargetEffector)) { return(false); } GamePlayer gamePlayer = (gamePlayerID == 1) ? GamePlayer1 : GamePlayer2; if (CanUseCard(gamePlayer, spellCardRecord)) { UseCard(gamePlayer, spellCardRecord); foreach (var effector in spellCardRecord.Effectors(GameCardManager)) { if (effector is AutoExecutetEffector) { (effector as AutoExecutetEffector).Affect(gamePlayer); } } return(true); } else { return(false); } }
private void Hero_OnWeaponChanged(Hero hero, DataChangeCode changeCode) { if (changeCode == DataChangeCode.Remove) { CardRecord record; if (GameCardManager.FindCard(hero.WeaponCardRecordID, out record) && record is WeaponCardRecord) { (record as WeaponCardRecord).Destroy(); } } }
public WeaponCardRecord Weapon(GameCardManager gameCardManager) { CardRecord card; if (gameCardManager.FindCard(WeaponCardRecordID, out card) && (card is WeaponCardRecord)) { return(card as WeaponCardRecord); } else { return(null); } }
public IEnumerable <CardRecord> Cards(GameCardManager gameCardManager) { List <CardRecord> cards = new List <CardRecord>(); foreach (var fieldCard in FieldCards) { CardRecord cardRecord; if (gameCardManager.FindCard(fieldCard.CardRecordID, out cardRecord)) { cards.Add(cardRecord); } } return(cards); }
private void AssemblyFieldEvents(Field field) { field.OnCardChanged += (fieldCardRecord, changeCode) => { if (changeCode == DataChangeCode.Add) { CardRecord record; if (GameCardManager.FindCard(fieldCardRecord.CardRecordID, out record) && record is ServantCardRecord) { (record as ServantCardRecord).OnDestroyed += (servantCard) => { field.RemoveCard(fieldCardRecord.CardRecordID); }; } } }; }
public bool NonTargetDisplayServant(int gamePlayerID, int servantCardRecordID, int positionIndex) { if (CurrentGamePlayerID != gamePlayerID) { return(false); } Field field = (gamePlayerID == 1) ? Field1 : Field2; if (!field.DisplayCheck(positionIndex)) { return(false); } CardRecord servantCardRecord; if (!GameCardManager.FindCard(servantCardRecordID, out servantCardRecord) || !(servantCardRecord is ServantCardRecord)) { return(false); } if (servantCardRecord.Effectors(GameCardManager).Any(x => x is TargetEffector || x is MinionTargetEffector)) { return(false); } GamePlayer gamePlayer = (gamePlayerID == 1) ? GamePlayer1 : GamePlayer2; if (CanUseCard(gamePlayer, servantCardRecord)) { UseCard(gamePlayer, servantCardRecord); foreach (var effector in servantCardRecord.Effectors(GameCardManager)) { if (effector is AutoExecutetEffector) { (effector as AutoExecutetEffector).Affect(gamePlayer); } } (servantCardRecord as ServantCardRecord).IsDisplayInThisTurn = true; field.AddCard(servantCardRecordID, positionIndex); return(true); } else { return(false); } }
//public bool TargetEquipWeapon(int gamePlayerID, int weaponCardRecordID, int targetID, bool isTargetServant) //{ // if (CurrentGamePlayerID != gamePlayerID) // return false; // CardRecord weaponCardRecord; // if (!GameCardManager.FindCard(weaponCardRecordID, out weaponCardRecord) || !(weaponCardRecord is WeaponCardRecord)) // return false; // if (!weaponCardRecord.Effectors(GameCardManager).Any(x => x is TargetEffector || x is MinionTargetEffector)) // return false; // GamePlayer gamePlayer = (gamePlayerID == 1) ? GamePlayer1 : GamePlayer2; // if (CanUseCard(gamePlayer, weaponCardRecord)) // { // if (isTargetServant) // { // CardRecord targetCardRecord; // if (GameCardManager.FindCard(targetID, out targetCardRecord) && targetCardRecord is ServantCardRecord) // { // UseCard(gamePlayer, weaponCardRecord); // foreach (var effector in weaponCardRecord.Effectors(GameCardManager)) // { // if (effector is TargetEffector) // { // (effector as TargetEffector).AffectServant(targetCardRecord as ServantCardRecord, gamePlayer); // } // else if (effector is MinionTargetEffector) // { // (effector as MinionTargetEffector).AffectServant(targetCardRecord as ServantCardRecord, gamePlayer); // } // else if (effector is AutoExecutetEffector) // { // (effector as AutoExecutetEffector).Affect(gamePlayer); // } // } // } // else // { // return false; // } // } // else // { // if (targetID != 1 && targetID != 2) // return false; // else // { // UseCard(gamePlayer, weaponCardRecord); // Hero hero = (targetID == 1) ? GamePlayer1.Hero : GamePlayer2.Hero; // foreach (var effector in weaponCardRecord.Effectors(GameCardManager)) // { // if (effector is TargetEffector) // { // (effector as TargetEffector).AffectHero(hero, gamePlayer); // } // else if (effector is AutoExecutetEffector) // { // (effector as AutoExecutetEffector).Affect(gamePlayer); // } // } // } // } // gamePlayer.Hero.WeaponCardRecordID = weaponCardRecordID; // return true; // } // else // { // return false; // } //} public bool NonTargetEquipWeapon(int gamePlayerID, int weaponCardRecordID) { if (CurrentGamePlayerID != gamePlayerID) { return(false); } CardRecord weaponCardRecord; if (!GameCardManager.FindCard(weaponCardRecordID, out weaponCardRecord) || !(weaponCardRecord is WeaponCardRecord)) { return(false); } if (weaponCardRecord.Effectors(GameCardManager).Any(x => x is TargetEffector || x is MinionTargetEffector)) { return(false); } GamePlayer gamePlayer = (gamePlayerID == 1) ? GamePlayer1 : GamePlayer2; if (CanUseCard(gamePlayer, weaponCardRecord)) { UseCard(gamePlayer, weaponCardRecord); foreach (var effector in weaponCardRecord.Effectors(GameCardManager)) { if (effector is AutoExecutetEffector) { (effector as AutoExecutetEffector).Affect(gamePlayer); } } gamePlayer.Hero.WeaponCardRecordID = weaponCardRecordID; return(true); } else { return(false); } }
public bool TargetCastSpell(int gamePlayerID, int spellCardRecordID, int targetID, bool isTargetServant) { if (CurrentGamePlayerID != gamePlayerID) { return(false); } CardRecord spellCardRecord; if (!GameCardManager.FindCard(spellCardRecordID, out spellCardRecord) || !(spellCardRecord is SpellCardRecord)) { return(false); } if (!spellCardRecord.Effectors(GameCardManager).Any(x => x is TargetEffector || (isTargetServant && x is MinionTargetEffector))) { return(false); } GamePlayer gamePlayer = (gamePlayerID == 1) ? GamePlayer1 : GamePlayer2; if (CanUseCard(gamePlayer, spellCardRecord)) { if (isTargetServant) { CardRecord targetCardRecord; if (GameCardManager.FindCard(targetID, out targetCardRecord) && targetCardRecord is ServantCardRecord) { UseCard(gamePlayer, spellCardRecord); foreach (var effector in spellCardRecord.Effectors(GameCardManager)) { if (effector is TargetEffector) { (effector as TargetEffector).AffectServant(targetCardRecord as ServantCardRecord, gamePlayer); } else if (effector is MinionTargetEffector) { (effector as MinionTargetEffector).AffectServant(targetCardRecord as ServantCardRecord, gamePlayer); } else if (effector is AutoExecutetEffector) { (effector as AutoExecutetEffector).Affect(gamePlayer); } } } else { return(false); } } else { if (targetID != 1 && targetID != 2) { return(false); } else { UseCard(gamePlayer, spellCardRecord); Hero hero = (targetID == 1) ? GamePlayer1.Hero : GamePlayer2.Hero; foreach (var effector in spellCardRecord.Effectors(GameCardManager)) { if (effector is TargetEffector) { (effector as TargetEffector).AffectHero(hero, gamePlayer); } else if (effector is AutoExecutetEffector) { (effector as AutoExecutetEffector).Affect(gamePlayer); } } } } return(true); } else { return(false); } }
public bool TargetDisplayServant(int gamePlayerID, int servantCardRecordID, int positionIndex, int targetID, bool isTargetServant) { if (CurrentGamePlayerID != gamePlayerID) { return(false); } Field field = (gamePlayerID == 1) ? Field1 : Field2; if (!field.DisplayCheck(positionIndex)) { return(false); } CardRecord servantCardRecord; if (!GameCardManager.FindCard(servantCardRecordID, out servantCardRecord) || !(servantCardRecord is ServantCardRecord)) { return(false); } if (!servantCardRecord.Effectors(GameCardManager).Any(x => x is TargetEffector || (isTargetServant && x is MinionTargetEffector))) { return(false); } GamePlayer gamePlayer = (gamePlayerID == 1) ? GamePlayer1 : GamePlayer2; if (CanUseCard(gamePlayer, servantCardRecord)) { if (isTargetServant) { CardRecord targetCardRecord; if (GameCardManager.FindCard(targetID, out targetCardRecord) && targetCardRecord is ServantCardRecord) { UseCard(gamePlayer, servantCardRecord); foreach (var effector in servantCardRecord.Effectors(GameCardManager)) { if (effector is TargetEffector) { (effector as TargetEffector).AffectServant(targetCardRecord as ServantCardRecord, gamePlayer); } else if (effector is MinionTargetEffector) { (effector as MinionTargetEffector).AffectServant(targetCardRecord as ServantCardRecord, gamePlayer); } else if (effector is AutoExecutetEffector) { (effector as AutoExecutetEffector).Affect(gamePlayer); } } } else { return(false); } } else { if (targetID != 1 && targetID != 2) { return(false); } else { UseCard(gamePlayer, servantCardRecord); Hero hero = (targetID == 1) ? GamePlayer1.Hero : GamePlayer2.Hero; foreach (var effector in servantCardRecord.Effectors(GameCardManager)) { if (effector is TargetEffector) { (effector as TargetEffector).AffectHero(hero, gamePlayer); } else if (effector is AutoExecutetEffector) { (effector as AutoExecutetEffector).Affect(gamePlayer); } } } } (servantCardRecord as ServantCardRecord).IsDisplayInThisTurn = true; field.AddCard(servantCardRecordID, positionIndex); return(true); } else { return(false); } }