예제 #1
0
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
            switch ((DiscussionOpCode)operationRequest.OperationCode)
            {
            case DiscussionOpCode.Test:
                var operation = new TestOperation(this.Protocol, operationRequest);
                if (ValidateOperation(operation, sendParameters))
                {
                    SendOperationResponse(operation.GetResponse(), sendParameters);
                    return;
                }
                break;

            case DiscussionOpCode.NotifyUserAccPlusMinus:
            case DiscussionOpCode.NotifyStructureChanged:
            case DiscussionOpCode.NotifyArgPointChanged:
            case DiscussionOpCode.CursorRequest:
            case DiscussionOpCode.CreateShapeRequest:
            case DiscussionOpCode.DeleteShapesRequest:
            case DiscussionOpCode.UnselectAllRequest:
            case DiscussionOpCode.DeleteSingleShapeRequest:
            case DiscussionOpCode.StateSyncRequest:
            case DiscussionOpCode.InitialSceneLoadRequest:
            case DiscussionOpCode.LinkCreateRequest:
            case DiscussionOpCode.UnclusterBadgeRequest:
            case DiscussionOpCode.ClusterBadgeRequest:
            case DiscussionOpCode.ClusterMoveRequest:
            case DiscussionOpCode.InkRequest:
            case DiscussionOpCode.DEditorReport:
            case DiscussionOpCode.ClusterStatsRequest:
            case DiscussionOpCode.LinkReportRequest:
            case DiscussionOpCode.BadgeViewRequest:
            case DiscussionOpCode.ExplanationModeSyncViewRequest:
            case DiscussionOpCode.CommentReadRequest:
            case DiscussionOpCode.AttachLaserPointerRequest:
            case DiscussionOpCode.DetachLaserPointerRequest:
            case DiscussionOpCode.LaserPointerMovedRequest:
            case DiscussionOpCode.ImageViewerManipulateRequest:
            case DiscussionOpCode.ImageViewerStateRequest:
            case DiscussionOpCode.BrowserScrollChanged:
            case DiscussionOpCode.GetBrowserScrollPos:
            case DiscussionOpCode.PdfScrollChanged:
            case DiscussionOpCode.GetPdfScrollPos:
                HandleGameOperation(operationRequest, sendParameters);
                break;

            case DiscussionOpCode.NotifyLeaveUser:
                handleOnlineStatus(_photonPer, _dbId, false, (int)DeviceType.Sticky);
                break;

            case DiscussionOpCode.StatsEvent:
                if (LogEvent(operationRequest.Parameters))
                {
                    HandleGameOperation(operationRequest, sendParameters);     // broadcast stats event
                }
                break;

            case DiscussionOpCode.ScreenshotRequest:
                HandleScreenshotRequest(operationRequest, sendParameters);
                break;
            }

            base.OnOperationRequest(operationRequest, sendParameters);
        }