コード例 #1
0
        public bool ProcessRequest(IGameDataRequest <IGameData> request, out IResponse response)
        {
            ErrorMessage error;

            if (!_gameDataRequestValidator.IsValid(request, out error))
            {
                response = new GameDataResponse().SetErrorResponse(error);
                return(false);
            }

            if (!_processor.TryProcess(request, out response) && response != null)
            {
                return(false);
            }

            if (request.RequestType == RequestType.Read)
            {
                response = ReadFromState(request.Payload);
                return(true);
            }


            response = ApplyToState(request, response);
            return(true);
        }
コード例 #2
0
    private void EventGetMessageBoxCallback()
    {
        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(buffer, 4);
        EventGetMessageBoxAct(gameDataResponse);
    }
コード例 #3
0
        public bool TryProcess(IGameDataRequest <IGameData> request, out IResponse response)
        {
            switch (request.RequestType)
            {
            case RequestType.Create:
                return(TryPersistRecord(request, out response));

            case RequestType.Update:
                return(TryUpdateRecord(request, out response));

            case RequestType.Delete:
                return(TryDeleteRecord(request, out response));

            case RequestType.Read:
            {
                //There's no real processing to do here
                response = null;
                return(true);
            }

            default:
            {
                var errorMessage = new ErrorMessage(ErrorCode.RequestTypeNotSupported);
                response = new GameDataResponse().SetErrorResponse(errorMessage);
                return(false);
            }
            }
        }
コード例 #4
0
    private void EventGetDeviceAndSocialCoreDataCallback()
    {
        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(buffer, 4);
        EventGetDeviceAndSocialCoreDataAct(gameDataResponse);
    }
コード例 #5
0
    private void EventGetGamecenterDataCallback()
    {
        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(buffer, 4);
        EventGetGamecenterDataAct(gameDataResponse);
    }
コード例 #6
0
    //登录回调接口
    private void LoginDataCallback()
    {
        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(buffer, 4);

        GameDataResponse loginDataResponse = new GameDataResponse();

        if (gameDataResponse.code != 0)
        {
            loginDataResponse.code    = gameDataResponse.code;
            loginDataResponse.data    = "";
            loginDataResponse.message = "Login Failed!";
            Debug.Log("login exception : " + gameDataResponse.data);
            Debug.Log("login exception : " + gameDataResponse.message);
        }
        else
        {
            byte[] ys = new byte[2048];
            getGameConstData(ys, 2048);
            GameConstData gameConstData = new GameConstData();
            gameConstData.setData(ys, 0);

            loginDataResponse.code     = gameDataResponse.code;
            loginDataResponse.data     = CombineJsonMethod(gameConstData.userId, gameConstData.sceneId, gameConstData.token);
            loginDataResponse.message  = "Login Successful!";
            loginDataResponse.gameData = gameDataResponse.data;
            //loginDataResponse.notify = gameDataResponse.notify;
        }

        loginDataAct(loginDataResponse);
    }
コード例 #7
0
    private void EventRemoveAccountCallback()
    {
        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(buffer, 4);
        EventRemoveAccountAct(gameDataResponse);
    }
コード例 #8
0
    //调用操作id
    public GameDataResponse DoStoreOperation(string jsonData)
    {
        byte[] byteArray = System.Text.Encoding.Default.GetBytes(jsonData);
        //int len = 1024 * 2048;
        //byte[] ys = new byte[len];

        if (buffer == null)
        {
            buffer = new byte[len];
        }

        for (int i = 0; i < len; i++)
        {
            buffer[i] = 0;
        }

        Array.Copy(byteArray, buffer, byteArray.Length);
        buffer[byteArray.Length] = 0;

        doOfflineOperation(32760, buffer, len);

        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(buffer, 0);
        return(gameDataResponse);
    }
コード例 #9
0
    //-999冲突回调接口
    private void ConflictDataCallback()
    {
        GameDataResponse conflictDataResponse = new GameDataResponse();

        conflictDataResponse.setData(buffer, 4);

        //notify game to handle response.
        conflictDataAct(conflictDataResponse);
    }
コード例 #10
0
    //数据刷新函数,回调接口
    private void GameDataCallback()
    {
        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(buffer, 4);

        //notify game to handle response.
        gameDataAct(gameDataResponse);
    }
コード例 #11
0
    //调用操作id
    public GameDataResponse DoOfflineOperation(int operationCode)
    {
        byte[] ys = new byte[2048];
        doOfflineOperation(operationCode, ys, 2048);
        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(ys, 0);
        return(gameDataResponse);
    }
コード例 #12
0
        public static List <GameData> GetAllSteamGames()
        {
            string           steamGamesUrl = SteamBaseUrl + $"ISteamApps/GetAppList/v0002/?&format=json";
            GameDataResponse gameResponse  = WebApiHelper.GetModelFromRepsonce <GameDataResponse>(steamGamesUrl, WebApiHelper.EnumAcceptHeaders.Json);

            List <GameData> gameList = new List <GameData>();

            if (gameResponse.GameResponseInfo.ListGames.Count > 0)
            {
                gameList = gameResponse.GameResponseInfo.ListGames;
            }

            return(gameList);
        }
コード例 #13
0
    public GameDataResponse DoOfflineOperationByKey(string key, string val)
    {
        Encoding e = Encoding.GetEncoding("UTF-8");

        e.Clone();
        byte[] pKey     = e.GetBytes(key);
        byte[] pTempKey = new byte[pKey.Length + 10];
        int    jj       = 0;

        for (jj = 0; jj < pKey.Length; jj++)
        {
            pTempKey[jj] = pKey[jj];
        }
        pTempKey[jj] = 0;

        Encoding ee = Encoding.GetEncoding("UTF-8");

        ee.Clone();
        byte[] pVal     = ee.GetBytes(val);
        byte[] pTempVal = new byte[pVal.Length + 10];
        int    ii       = 0;

        for (ii = 0; ii < pVal.Length; ii++)
        {
            pTempVal[ii] = pVal[ii];
        }
        pTempVal[ii] = 0;

        if (buffer == null)
        {
            buffer = new byte[len];
        }

        //byte[] ys = new byte[2048 * 1024];
        for (int i = 0; i < len; i++)
        {
            buffer[i] = 0;
        }

        GameDataResponse gameDataResponse = new GameDataResponse();

        doOfflineOperationByKey(pTempKey, pTempVal, buffer);
        gameDataResponse.setData(buffer, 0);
        return(gameDataResponse);
    }
コード例 #14
0
    //加载游戏数据,id默认为-1
    public GameDataResponse LoadGameData()
    {
        if (buffer == null)
        {
            buffer = new byte[len];
        }

        for (int i = 0; i < len; i++)
        {
            buffer[i] = 0;
        }
        //byte[] ys = new byte[1024 * 2048];
        doOfflineOperation(-1, buffer, 1024 * 2048);
        GameDataResponse gameDataResponse = new GameDataResponse();

        gameDataResponse.setData(buffer, 0);
        return(gameDataResponse);
    }
コード例 #15
0
 private void HandleLoginDataAct(GameDataResponse data)
 {
     if (data.code == 0)
     {
         var jsonData = JsonMapper.ToObject(data.data.Trim());
         UserID  = jsonData["userId"].ToString();
         Token   = jsonData["token"].ToString();
         SceneID = jsonData["sceneId"].ToString();
         logged  = true;
         Debug.Log("login complete json:" + data.data);
         //同步存档数据 data.gameData
         PlayerDataMgr.singleton.SyncServerData(data.gameData);
         loginCallback?.Invoke(true);
     }
     else
     {
         loginCallback?.Invoke(false);
     }
 }
コード例 #16
0
        public static void Build(JSONObject response)
        {
            ResponseEvent responseEvent = Spil.MonoInstance.gameObject.AddComponent <ResponseEvent>();

            responseEvent.eventName = response.GetField("name").str;

            if (response.HasField("type"))
            {
                responseEvent.type = response.GetField("type").str;
            }

            if (response.HasField("action"))
            {
                responseEvent.action = response.GetField("action").str;
            }

            if (response.HasField("data"))
            {
                responseEvent.data = response.GetField("data");
            }

            if (responseEvent.type != null)
            {
                switch (responseEvent.type.ToLower().Trim())
                {
                case "advertisement":
                    AdvertisementResponse.ProcessAdvertisementResponse(responseEvent);
                    break;

                case "overlay":
                    OverlayResponse.ProcessOverlayResponse(responseEvent);
                    break;

                case "gameconfig":
                    ConfigResponse.ProcessConfigResponse(responseEvent);
                    break;

                case "packages":
                    PackagesResponse.ProcessPackagesResponse(responseEvent);
                    break;

                case "notification":
                    break;

                case "gamedata":
                    GameDataResponse.ProcessGameDataResponse(responseEvent);
                    break;

                case "promotions":
                    PromotionsResponse.ProcessPromotionResponse(responseEvent);
                    break;

                case "userdata":
                    UserDataResponse.ProcessUserDataResponse(responseEvent);
                    break;

                case "playerdata":
                    PlayerDataResponse.ProcessPlayerDataResponse(responseEvent);
                    break;

                case "gamestate":
                    GameStateResponse.ProcessGameStateResponse(responseEvent);
                    break;

                case "reward":
                    RewardResponse.ProcessRewardResponse(responseEvent);
                    break;

                case "liveevent":
                    LiveEventResponse.ProcessLiveEventResponse(responseEvent);
                    break;

                case "authentication":
                    SocialLoginResponse.ProcessSocialLoginResponse(responseEvent);
                    break;
                }
            }
            GameObject.Destroy(responseEvent);
        }