private Dictionary <string, OthelloPiece> StoreState(JsonCarrier data) { var result = new Dictionary <string, OthelloPiece>(); foreach (var pieceState in data.PieacesState) { //log.Debug(pieceState); var index1 = pieceState.IndexOf("\t"); var index2 = pieceState.IndexOf("\t", index1 + 1); var position = pieceState.Substring(0, index1); var color = pieceState.Substring(index1 + 1, (index2 - index1 - 1)); var isColliderEnabled = pieceState.Substring(index2 + 1); var piece = new OthelloPiece(position, color, isColliderEnabled); result.Add(position, piece); } return(result); }
public JsonCarrier UpdateStatus(JsonCarrier data) { log.Info("Start UpdateStatus "); var res = data; try { var initPieces = StoreState(data); var lastPosition = data.LastPosition; Dictionary <string, OthelloPiece> changePieces = null; if (data.RoomNumber == null || data.RoomNumber.Length < 1) { // demo mode /* * デモ画面は固定positionに配置する * pieceの色変化に応じたUnity側エフェクトのデバッグ用 */ log.Debug("roomNumber is empty "); var tempPieces0 = ChangeState(demoPieces, initPieces); lastPosition = GetLastPosition(tempPieces0, initPieces); var tempPieces1 = CheckReverse(lastPosition, tempPieces0); changePieces = SetIsColliderEnabled(tempPieces1); res.IsMyTurn = false.ToString(); } else { // play mode log.Debug("roomNumber is " + data.RoomNumber); if (data.RoomNumber.Contains("temp")) { res.RoomNumber = CreateRoomNumber(); res.IsMyTurn = true.ToString(); } if (bool.Parse(data.IsMyTurn)) { var tempPieces = CheckReverse(lastPosition, initPieces); changePieces = SetIsColliderEnabled(tempPieces); res.IsMyTurn = SetNextTurn(lastPosition, changePieces); } else { var compPlay = new CompPlay(); var tempPieces0 = compPlay.ChangeStateComp(lastPosition, initPieces); lastPosition = GetLastPosition(tempPieces0, initPieces); var tempPieces1 = CheckReverse(lastPosition, tempPieces0); changePieces = SetIsColliderEnabled(tempPieces1); res.IsMyTurn = true.ToString(); } } //othelloPieces = SetIsColliderEnabled(othelloPieces); res.PieacesState = PiecesStateToList(changePieces); } catch (Exception ex) { log.Warn("fail UpdateStatus " + ex.StackTrace.ToString()); res.ErrorMessage = ex.StackTrace.ToString(); } log.Info("End UpdateStatus "); return(res); }