// Use this for initialization void Start() { this.state = MACHINE_STATE.OFF; this.energyLevel = 0; this.operatedHours = 0; this.pot = new Pot(); }
public void WithdrawCash(Money amount) { switch (_currentState) { case MACHINE_STATE.INITIAL: throw new InvalidOperationException("No card inserted"); case MACHINE_STATE.CARD_INSERTED: throw new InvalidOperationException("Pin not entered"); case MACHINE_STATE.PIN_ENTERED: if (_value < amount) { throw new InvalidOperationException("Not enough cash"); } _currentState = MACHINE_STATE.CASH_WITHDRAWN; break; case MACHINE_STATE.CASH_WITHDRAWN: throw new InvalidOperationException("Cash already returned"); default: throw new ArgumentOutOfRangeException(); } }
public Associative Collect(Associative param) { var reelstopleft = null as string; var reelstopcenter = null as string; var reelstopright = null as string; var oshijun = null as string; try { reelstopleft = param["reelStopLeft"]; reelstopcenter = param["reelStopCenter"]; reelstopright = param["reelStopRight"]; oshijun = param["oshijun"]; } catch { return new Associative() { { "result", "error".DQ() } }; } var result = new Associative(); result.Add("result", "WIN".DQ()); result.Add("yaku", "0"); result.Add("payout", (payout).ToString()); Logger.Info($"[Ocean][Collect]GameId:{gameId} UserId:{userId} payout:{payout}"); State = MACHINE_STATE.COLLECT; return result; }
public void UpdateView_SelectedMachineInfo(string strMachineName) { MachineInfo refMachineInfo = m_machineInfoMgr.Find(strMachineName); if (null == refMachineInfo) { return; } MACHINE_STATE eMachineState = refMachineInfo.GetState(); int nServerCount = refMachineInfo.ServerInfoMgr.ServerInfoCount; string strSelectedMachineInfo; strSelectedMachineInfo = "Machine Name : " + strMachineName + "\r\n"; strSelectedMachineInfo += "Machine State : " + eMachineState.ToString() + "\r\n"; strSelectedMachineInfo += "Server Count : " + nServerCount.ToString() + "\r\n"; strSelectedMachineInfo += "IP Address : " + refMachineInfo.IP.ToString() + "\r\n"; strSelectedMachineInfo += "Port Number : " + refMachineInfo.Port.ToString() + "\r\n"; int nPlayerCount = m_machineInfoMgr.GetMachinePlayerCount(strMachineName); strSelectedMachineInfo += "Machine Player Count : " + nPlayerCount.ToString(); m_refView.SelectedNodeInfoText = strSelectedMachineInfo; }
public void SetDisconnected() { m_serverInfoMgr.Clear(); IsConnected = false; IsRequestConnect = false; m_nSessionID = 0; eMachineState = MACHINE_STATE.OFFLINE; }
public void init() { mNowState = null; mManageState = MACHINE_STATE.NONE; mState = 0; mNextState = 0; mPrevState = 0; mStateMap = new Dictionary <int, StateBase>(); }
private string GetPinValidated() { Console.WriteLine("Please Enter your PIN"); string userInput = Console.ReadLine(); if (userInput.Trim() == "12345") { currentState = MACHINE_STATE.CARDS_VALIDATED; return("Enter Amount to Widthdraw"); } return("Invalid PIN"); }
private string GetPinValidated() { Console.WriteLine("Please Enter your Pin"); string userInput = Console.ReadLine(); // lets check with the dummy pin if (userInput.Trim() == "1234") { currentState = MACHINE_STATE.CARD_VALIDATED; return "Enter the Amount to Withdraw"; } // Show only message and no change in state return "Invalid PIN"; }
private string GetPinValidated() { Console.WriteLine("Please Enter your Pin"); string userInput = Console.ReadLine(); // lets check with the dummy pin if (userInput.Trim() == "1234") { currentMachineState = MACHINE_STATE.CARD_VALIDATED; return("Enter the Amount to Withdraw"); } // Show only message and no change in state return("Invalid PIN"); }
public void RemoveCard() { switch (_currentState) { case MACHINE_STATE.INITIAL: throw new InvalidOperationException("No card inserted"); case MACHINE_STATE.CARD_INSERTED: case MACHINE_STATE.PIN_ENTERED: case MACHINE_STATE.CASH_WITHDRAWN: _currentState = MACHINE_STATE.INITIAL; break; default: throw new ArgumentOutOfRangeException(); } }
private string WithdrawMoney() { string userInput = Console.ReadLine(); int requestAmount; bool result = Int32.TryParse(userInput, out requestAmount); if (result == true) { if (dummyCashPresent < requestAmount) { return("Amount not present"); } dummyCashPresent -= requestAmount; currentState = MACHINE_STATE.CASH_WITHDRAWN; return(string.Format(@"Amount of {0} has been withdrawn. press enter to proceed", requestAmount)); } return("Invalid Amount"); }
private string WithdrawMoney() { string userInput = Console.ReadLine(); int requestAmount; bool result = Int32.TryParse(userInput, out requestAmount); if (result == true) { if (dummyCashPresent < requestAmount) { // Show only message and no change in state return("Amount not present"); } dummyCashPresent -= requestAmount; currentMachineState = MACHINE_STATE.CASH_WITHDRAWN; } return(string.Format(@"Amount of {0} has been withdrawn. Press Enter to proceed", requestAmount)); }
public void changeStateNowStatePause(int stateType) { if (mManageState != MACHINE_STATE.AFTER_INIT && mManageState != MACHINE_STATE.UPDATE_MAIN) { Debug.Log("StateMachine::changeState"); Debug.Log(mManageState + " state isnt use changeState"); } if (mNowState != null) { mNowState.pauseEnable(); mNextState = stateType; mManageState = MACHINE_STATE.RELEASE; // 即リリース状態にしているが、PAUSEをかけているので、リリースの処理は呼び出されない } else { StateBase val = null; mStateMap.TryGetValue(stateType, out val); mNowState = val; mManageState = MACHINE_STATE.BEFORE_INIT; } }
public void changeState(int stateType) { // 仮 ここ、直す必要がある。途中で呼び出された場合に、流れがおかしくなる可能性がある if (mManageState != MACHINE_STATE.AFTER_INIT && mManageState != MACHINE_STATE.UPDATE_MAIN) { Debug.Log("StateMachine::changeState"); Debug.Log((int)mManageState + " state isnt use changeState"); } if (mNowState != null) { mNextState = stateType; mManageState = MACHINE_STATE.AFTER_MAIN; } else { StateBase val = null; mStateMap.TryGetValue(stateType, out val); mNowState = val; mManageState = MACHINE_STATE.BEFORE_INIT; } }
public void EnterPin(Pin pin) { switch (_currentState) { case MACHINE_STATE.INITIAL: throw new InvalidOperationException("No card inserted"); case MACHINE_STATE.CARD_INSERTED: if (pin != 1234) { throw new InvalidOperationException("incorect pin"); } _currentState = MACHINE_STATE.PIN_ENTERED; break; case MACHINE_STATE.PIN_ENTERED: case MACHINE_STATE.CASH_WITHDRAWN: throw new InvalidOperationException("Pin already entered"); default: throw new ArgumentOutOfRangeException(); } }
public void changeState(int stateType) { // 仮 ここ、直す必要がある。途中で呼び出された場合に、流れがおかしくなる可能性がある if (mManageState != MACHINE_STATE.AFTER_INIT && mManageState != MACHINE_STATE.UPDATE_MAIN ) { Debug.Log("StateMachine::changeState"); Debug.Log((int)mManageState + " state isnt use changeState"); } if(mNowState != null) { mNextState = stateType; mManageState = MACHINE_STATE.AFTER_MAIN; } else { StateBase val = null; mStateMap.TryGetValue(stateType, out val); mNowState = val; mManageState = MACHINE_STATE.BEFORE_INIT; } }
private string WithdrawMoney() { string userInput = Console.ReadLine(); int requestAmount; bool result = Int32.TryParse(userInput, out requestAmount); if (result == true) { if (dummyCashPresent < requestAmount) { // Show only message and no change in state return "Amount not present"; } dummyCashPresent -= requestAmount; currentState = MACHINE_STATE.CASH_WITHDRAWN; return string.Format(@"Amount of {0} has been withdrawn. Press Enter to proceed", requestAmount); } // Show only message and no change in state return "Invalid Amount"; }
private string SayGoodBye() { currentMachineState = MACHINE_STATE.NO_CARD; return(string.Format("Thanks you for using us, Amount left in ATM: {0}", dummyCashPresent.ToString())); }
public void SetConnected() { IsRequestConnect = false; IsConnected = true; eMachineState = MACHINE_STATE.ONLINE; }
public Associative Play(Associative param) { var betcount = null as string; var bet = 0; try { betcount = param["betCount"]; bet = betcount.ParseInt(); } catch { Logger.Error("[ERROR]Palameter error."); return new Associative() { { "result", "error".DQ() } }; } // bet 0 check if (bet == 0) { Logger.Warn("BET 0 ERROR!!!"); Logger.Warn("BET 0 ERROR!!!"); Logger.Warn("BET 0 ERROR!!!"); return new Associative() { { "result", "error".DQ() } }; } mobile.InsertCoin(bet); // マシンからのコールバック群 Action<int> Payout = (coinCount) => { }; var isLeverPulled = false; Action<int> ReelStart = (_yaku) => { Yaku y = (Yaku)_yaku; isLeverPulled = true; }; Action<int, int> ButtonStop = (button, reelIndex) => { }; Action<int> KeyTrigger = (key) => { }; Action Bet = () => { }; var callbacks = new CallbackToController() { Payout = Payout, ReelStart = ReelStart, ButtonStop = ButtonStop, KeyTrigger = KeyTrigger, Bet = Bet }; // レバーを引くまで回す while(isLeverPulled == false) { mobile.ZZ.int_value[Defines.DEF_Z_INT_KEYPRESS] |= (1 << 5); mobile.exec(callbacks); Thread.Sleep(20); } var afterCoinCount = mobile.CoinCount; var yaku = mobile.Yaku; var result = new Associative(); result.Add("route", "0"); result.Add("yaku", ((int)yaku).ToString()); State = MACHINE_STATE.PLAY; Logger.Info($"[INFO]Play GameId:{gameId} UserId:{userId} Bet:{bet} ------ Yaku:{yaku}"); return result; }
public Associative Collect(Associative param) { var reelstopleft = null as string; var reelstopcenter = null as string; var reelstopright = null as string; var oshijun = null as string; var left = 0; // ボタン0押下時リール位置 var center = 0; // ボタン1押下時リール位置 var right = 0; // ボタン2押下時リール位置 var order = null as int[]; // 押し順 try { reelstopleft = param["reelStopLeft"]; reelstopcenter = param["reelStopCenter"]; reelstopright = param["reelStopRight"]; oshijun = param["oshijun"]; left = reelstopleft.ParseInt(); center = reelstopcenter.ParseInt(); right = reelstopright.ParseInt(); order = oshijun.ToCharArray().Select(c => c.ToString().ParseInt()-1).ToArray(); } catch { return new Associative() { { "result", "error".DQ() } }; } var winCoins = 0; var gotCoinCountFlg = false; // マシンからのコールバック群 Action<int> Payout = (coinCount) => { winCoins = coinCount; gotCoinCountFlg = true; }; Action<int> ReelStart = (_yaku) => { }; Action<int, int> ButtonStop = (button, reelIndex) => { }; Action<int> KeyTrigger = (key) => { }; Action Bet = () => { }; var callbacks = new CallbackToController() { Payout = Payout, ReelStart = ReelStart, ButtonStop = ButtonStop, KeyTrigger = KeyTrigger, Bet = Bet }; var indexis = new int[] { left, center, right }; mobile.SetClientPressed(indexis); // 押し順、押した位置で止める while(gotCoinCountFlg == false) { mobile.ZZ.int_value[Defines.DEF_Z_INT_KEYPRESS] |= (1 << 5); mobile.exec(callbacks); Thread.Sleep(20); } var v1 = reelstopleft.Substring(1, (reelstopleft.Length - 1)); var v2 = reelstopcenter.Substring(1, (reelstopcenter.Length - 1)); var v3 = reelstopright.Substring(1, (reelstopright.Length - 1)); var v4 = oshijun.Substring(1, (oshijun.Length - 1)); var xor = v1 + v2 + v3 + v4; var code = (xor.ParseLong()^(0xffeeddcc)).ToString(); var yaku = code.Substring(4, 2).ParseInt(); var payout = code.Substring(6, 2).ParseInt(); var result = new Associative(); result.Add("result", "WIN".DQ()); result.Add("payout", payout.ToString()); result.Add("yaku", ((int)yaku).ToString()); State = MACHINE_STATE.COLLECT; Logger.Info($"[INFO]Collect GameId:{gameId} UserId:{userId} Payout:{winCoins} Yaku:{yaku}"); // 役を保存しておく currentYaku = (Yaku)yaku; return result; }
public Associative Config(Associative param) { mobile = new Mobile(); var result = new Associative(); var seed = mobile.Seed.ToString(); var setting = this.settingValue; Logger.Info($"[INFO][Oomatsuri]Setting:{setting}"); if (setting == 0) { mobile.GameManager.SettingZeroMode = true; mobile.SetRate(1); } else { mobile.GameManager.SettingZeroMode = false; mobile.SetRate(setting); } result.Add("setting", setting.ToString()); result.Add("reelleft", "0"); result.Add("reelcenter", "0"); result.Add("reelright", "0"); result.Add("seed", seed); State = MACHINE_STATE.CONFIG; return result; }
public Associative Init(Associative param) { var result = new Associative(); State = MACHINE_STATE.INIT; return result; }
public void ChangeState(MACHINE_STATE state) { states[(int)state].Init(); states[(int)state].Enter(); }
private string SayGoodBye() { currentState = MACHINE_STATE.NO_CARD; return string.Format("Thanks you for using us, Amount left in ATM: {0}", dummyCashPresent.ToString()); }
public Associative Config(Associative param) { var seed = (((int)(Util.GetMilliSeconds())) & 0xFFFF); var setting = settingValue; Logger.Info($"[INFO][TheOcean]Seed:{seed} Setting:{setting}"); machine = new TheOceanMachine(seed:seed, setting:setting); var result = new Associative() { //{ "status", "error".DQ() }, { "setting", setting.ToString() }, { "reelleft", "0" }, { "reelcenter", "0" }, { "reelright", "0" }, { "seed", seed.ToString() }, }; State = MACHINE_STATE.CONFIG; return result; }
public void update(float delta) { if (mNowState == null) { return; } switch (mManageState) { case MACHINE_STATE.BEFORE_INIT: if (mNowState.isPause() == true) { // ポーズ状態だったら、即メインのアップデート処理状態にする mManageState = MACHINE_STATE.UPDATE_MAIN; mNowState.pauseDisable(); } else { mManageState = MACHINE_STATE.UPDATE_INIT; mNowState._onBeforeInit(); } break; case MACHINE_STATE.UPDATE_INIT: { bool isEnd = mNowState.onUpdateInit(delta); if (isEnd == true) { mManageState = MACHINE_STATE.AFTER_INIT; } } break; case MACHINE_STATE.AFTER_INIT: mManageState = MACHINE_STATE.BEFORE_MAIN; mNowState.onAfterInit(); break; case MACHINE_STATE.BEFORE_MAIN: mManageState = MACHINE_STATE.UPDATE_MAIN; mNowState.onBeforeMain(); break; case MACHINE_STATE.UPDATE_MAIN: mNowState.onUpdateMain(delta); break; case MACHINE_STATE.AFTER_MAIN: mManageState = MACHINE_STATE.BEFORE_END; mNowState.onAfterMain(); break; case MACHINE_STATE.BEFORE_END: mManageState = MACHINE_STATE.UPDATE_END; mNowState.onBeforeEnd(); break; case MACHINE_STATE.UPDATE_END: { bool isEnd = mNowState.onUpdateEnd(delta); if (isEnd == true) { mManageState = MACHINE_STATE.AFTER_END; } } break; case MACHINE_STATE.AFTER_END: mManageState = MACHINE_STATE.RELEASE; mNowState.onAfterEnd(); break; case MACHINE_STATE.RELEASE: { mManageState = MACHINE_STATE.BEFORE_INIT; if (mNowState.isPause() != true) { mNowState._onRelease(); } mPrevState = mState; mState = mNextState; StateBase val = null; mStateMap.TryGetValue(mState, out val); mNowState = val; break; } } }
public Associative Play(Associative param) { var betcount = null as string; var rate = null as string; var power = null as string; var pow = 0; try { betcount = param["betCount"]; rate = param["rate"]; power = param["power"]; pow = int.Parse(power); } catch { return new Associative() { { "result", "error".DQ() } }; } var shootResult = null as TheOceanMachine.ShootResult; if (betcount == "0" && power == "0") { shootResult = machine.Progress(); } else { // 玉発射 shootResult = machine.Shoot(pow); } this.payout = shootResult.payout; var result = new Associative(); result.Add("yaku", ((int)shootResult.yaku).ToString()); result.Add("route", ((int)shootResult.route).ToString()); if (shootResult.route != Route.Abandon) { Logger.Info($"G:{gameId} U:{userId} power:{power} rate:{rate} yaku:{shootResult.yaku} route:{shootResult.route}"); } State = MACHINE_STATE.PLAY; return result; }
public void init() { mNowState = null; mManageState = MACHINE_STATE.NONE; mState = 0; mNextState = 0; mPrevState = 0; mStateMap = new Dictionary<int, StateBase>(); }
public void update(float delta) { if(mNowState == null) { return; } switch(mManageState) { case MACHINE_STATE.BEFORE_INIT: if (mNowState.isPause() == true) { // ポーズ状態だったら、即メインのアップデート処理状態にする mManageState = MACHINE_STATE.UPDATE_MAIN; mNowState.pauseDisable(); } else { mManageState = MACHINE_STATE.UPDATE_INIT; mNowState._onBeforeInit(); } break; case MACHINE_STATE.UPDATE_INIT: { bool isEnd = mNowState.onUpdateInit(delta); if(isEnd == true) { mManageState = MACHINE_STATE.AFTER_INIT; } } break; case MACHINE_STATE.AFTER_INIT: mManageState = MACHINE_STATE.BEFORE_MAIN; mNowState.onAfterInit(); break; case MACHINE_STATE.BEFORE_MAIN: mManageState = MACHINE_STATE.UPDATE_MAIN; mNowState.onBeforeMain(); break; case MACHINE_STATE.UPDATE_MAIN: mNowState.onUpdateMain(delta); break; case MACHINE_STATE.AFTER_MAIN: mManageState = MACHINE_STATE.BEFORE_END; mNowState.onAfterMain(); break; case MACHINE_STATE.BEFORE_END: mManageState = MACHINE_STATE.UPDATE_END; mNowState.onBeforeEnd(); break; case MACHINE_STATE.UPDATE_END: { bool isEnd = mNowState.onUpdateEnd(delta); if(isEnd == true) { mManageState = MACHINE_STATE.AFTER_END; } } break; case MACHINE_STATE.AFTER_END: mManageState = MACHINE_STATE.RELEASE; mNowState.onAfterEnd(); break; case MACHINE_STATE.RELEASE: { mManageState = MACHINE_STATE.BEFORE_INIT; if (mNowState.isPause() != true) { mNowState._onRelease(); } mPrevState = mState; mState = mNextState; StateBase val = null; mStateMap.TryGetValue(mState, out val); mNowState = val; break; } } }
public void changeStateNowStatePause(int stateType) { if (mManageState != MACHINE_STATE.AFTER_INIT && mManageState != MACHINE_STATE.UPDATE_MAIN) { Debug.Log("StateMachine::changeState"); Debug.Log(mManageState + " state isnt use changeState"); } if(mNowState != null) { mNowState.pauseEnable(); mNextState = stateType; mManageState = MACHINE_STATE.RELEASE;// 即リリース状態にしているが、PAUSEをかけているので、リリースの処理は呼び出されない } else { StateBase val = null; mStateMap.TryGetValue(stateType, out val); mNowState = val; mManageState = MACHINE_STATE.BEFORE_INIT; } }