/// <summary> /// リーチのシナリオを新規作成 /// </summary> /// <param name="reachedRoleSet">リーチになっているセット</param> /// <param name="finally">リーチ再抽選後にキーとなるリールが示すRole</param> private Scenario(RoleSet reachedRoleSet, RoleValue @finally) { if (!reachedRoleSet.IsReach) { throw new InvalidOperationException("入力されたセットはリーチではありません"); } this.First = reachedRoleSet; switch (First.ReachStatus.Value.ReachReelPos) { case ReelPos.Left: Left = ReelScenario.ReachKey(reachedRoleSet.Left, @finally); Middle = ReelScenario.Normal(reachedRoleSet.Middle); Right = ReelScenario.Normal(reachedRoleSet.Right); Finally = new RoleSet(@finally, reachedRoleSet.Middle, reachedRoleSet.Right); break; case ReelPos.Middle: Left = ReelScenario.Normal(reachedRoleSet.Left); Middle = ReelScenario.ReachKey(reachedRoleSet.Middle, @finally); Right = ReelScenario.Normal(reachedRoleSet.Right); Finally = new RoleSet(reachedRoleSet.Left, @finally, reachedRoleSet.Right); break; case ReelPos.Right: Left = ReelScenario.Normal(reachedRoleSet.Left); Middle = ReelScenario.Normal(reachedRoleSet.Middle); Right = ReelScenario.ReachKey(reachedRoleSet.Right, @finally); Finally = new RoleSet(reachedRoleSet.Left, reachedRoleSet.Middle, @finally); break; default: throw new InvalidEnumArgumentException(); } }
/// <summary> /// ダイレクトで当たるシナリオを作成 /// </summary> /// <param name="winRole"></param> /// <returns></returns> public static Scenario DirectWin(RoleValue winRole) { return(new Scenario(new RoleSet(winRole, winRole, winRole))); }
/// <summary> /// リーチのシナリオを作成 /// </summary> /// <param name="reachedRoleSet">リーチのRoleset</param> /// <param name="afterReachRole">リーチ再抽選後にキーとなるリールが示すRole</param> /// <returns></returns> public static Scenario Reach(RoleSet reachedRoleSet, RoleValue afterReachRole) { return(new Scenario(reachedRoleSet, afterReachRole)); }
public static ReelScenario ReachKey(RoleValue first, RoleValue @finally) { return(new ReelScenario(first, @finally, true)); }
/// <summary> /// 1回の抽選で終わる通常のシナリオを作成 /// </summary> /// <param name="toValue">表示する出目</param> /// <returns></returns> public static ReelScenario Normal(RoleValue toValue) { return(new ReelScenario(toValue, toValue, false)); }
private ReelScenario(RoleValue first, RoleValue @finally, bool isReachKey) { this.First = first; this.Finally = @finally; this.IsReachKey = isReachKey; }
public ReachInfo(RoleValue reachRole, ReelPos reachPos) { this.ReachedRole = reachRole; this.ReachReelPos = reachPos; }
public RoleSet(RoleValue left, RoleValue middle, RoleValue right) { this.Left = left; this.Middle = middle; this.Right = right; }