private static void GetSurvivorValues(SurvivorStage stage, out int lifes, out int pillz) { switch (stage) { case SurvivorStage.Stage1Pillz12Lives12: pillz = 12; lifes = 12; break; case SurvivorStage.Stage2Pillz11Lives13: pillz = 11; lifes = 13; break; case SurvivorStage.Stage3Pillz10Lives14: pillz = 10; lifes = 14; break; case SurvivorStage.Stage4Pillz9Lives15: pillz = 9; lifes = 15; break; case SurvivorStage.Stage5to9Pillz8Lives15: pillz = 8; lifes = 15; break; default: throw new Exception("Should never arrive here."); } }
/// <summary> /// Returns a new instance of <see cref="Combat"/> fit for survivor game mode. /// </summary> /// <param name="leftHand">Left player hand.</param> /// <param name="rightHand">Right player hand.</param> /// <param name="isLeftFirstPlayer">Is left player the first one to play on first round?</param> /// <param name="leftStage">Left player starting conditions.</param> /// <param name="rightStage">Right player starting conditions.</param> /// <returns></returns> public static Combat GetSurvivorCombat(SurvivorStage leftStage, SurvivorStage rightStage, Hand leftHand, Hand rightHand, bool isLeftFirstPlayer) { if ((int)leftStage > Constants.EnumMaxAllowedValues.SurvivorStage) { throw new ArgumentOutOfRangeException(nameof(leftStage), leftStage, "Must be a valid " + nameof(SurvivorStage)); } if ((int)rightStage > Constants.EnumMaxAllowedValues.SurvivorStage) { throw new ArgumentOutOfRangeException(nameof(rightStage), rightStage, "Must be a valid " + nameof(SurvivorStage)); } int leftPillz, rightPillz, leftLifes, rightLifes; GetSurvivorValues(leftStage, out leftLifes, out leftPillz); GetSurvivorValues(rightStage, out rightLifes, out rightPillz); return(new Combat(leftHand, rightHand, leftLifes, rightLifes, leftPillz, rightPillz, isLeftFirstPlayer, RandomFactor.NonRandom)); }