/// <summary> /// Is RockObject is enemy. /// </summary> /// <param name="rockSceneContext">The RockSceneContext.</param> /// <param name="id">The RockId</param> /// <returns>True if it is a is enemy.</returns> public static bool IsEnemy(this RockSceneContext rockSceneContext, int id) { return(rockSceneContext.IsObjectType(id, RockObjectType.EnemyCard) || rockSceneContext.IsObjectType(id, RockObjectType.EnemyMinion) || rockSceneContext.IsObjectType(id, RockObjectType.EnemyHero) || rockSceneContext.IsObjectType(id, RockObjectType.EnemyHeroPower) || rockSceneContext.IsObjectType(id, RockObjectType.EnemyHeroWeapon)); }
/// <summary> /// Is RockObject is EnemyMinion. /// </summary> /// <param name="rockSceneContext">The RockSceneContext.</param> /// <param name="id">The RockId</param> /// <returns>True if it is a IsFriendlyCard</returns> public static bool IsEnemyMinion(this RockSceneContext rockSceneContext, int id) { return(rockSceneContext.IsObjectType(id, RockObjectType.EnemyMinion)); }
/// <summary> /// Is RockObject IsFriendlyCard. /// </summary> /// <param name="rockSceneContext">The RockSceneContext.</param> /// <param name="id">The RockId</param> /// <returns>True if it is a IsFriendlyCard</returns> public static bool IsFriendlyCard(this RockSceneContext rockSceneContext, int id) { return(rockSceneContext.IsObjectType(id, RockObjectType.FriendlyCard)); }
/// <summary> /// Compute score for one of the PlayAction. /// </summary> /// <param name="sceneContext">The RockSceneContext.</param> /// <param name="playAction">The PlayAction.</param> /// <returns>The score in double.</returns> public static double ComputeScore(RockSceneContext sceneContext, List <int> playAction) { switch (playAction.Count) { // Use Card (Spell/Enchantment/Minion/Weapon) // Use HeroPower case 1: if (sceneContext.IsFriendlyCard(playAction[0])) { // Use Card return(ScoreForUseCard(sceneContext, playAction[0])); } else if (sceneContext.IsFriendlyHeroPower(playAction[0])) { // Use HeroPower return(ScoreForUseHeroPower(sceneContext, playAction[0])); } else { return(0); } case 2: if (sceneContext.IsFriendlyCard(playAction[0])) { // Use Spell/Enchantment on target // Use Card with option return(0); } else if (sceneContext.IsFriendlyHeroPower(playAction[0])) { // Use HeroPower on target switch (sceneContext.GetFriendlyRockPlayer().Hero.Class) { case RockHeroClass.Mage: return(ScoreForUseMageHeroPower(sceneContext, playAction[0], playAction[1])); case RockHeroClass.Priest: return(ScoreForUsePriestHeroPower(sceneContext, playAction[0], playAction[1])); default: return(0d); } } else if (sceneContext.IsFriendlyMinion(playAction[0])) { if (sceneContext.IsEnemyMinion(playAction[1])) { // Use Minion Attack return(ScoreForMinionAttack(sceneContext, playAction[0], playAction[1])); } return(ScoreForMinionAttackHero(sceneContext, playAction[0], playAction[1])); } else if (sceneContext.IsObjectType(playAction[0], RockObjectType.FriendlyHeroWeapon)) { // HeroWeapon Attack return(ScoreForWeaponAttack(sceneContext, playAction[0], playAction[1])); } else { return(0); } case 3: { // Use Card with option and on target } break; } return(0); }