Beispiel #1
0
        private PartyGameMessageEvent partyGameMessageEventFromProps(ISFSObject props)
        {
            PartyGameMessageEvent result = default(PartyGameMessageEvent);

            result.sessionId = props.GetInt("id");
            result.type      = props.GetInt("type");
            result.message   = props.GetUtfString("message");
            return(result);
        }
            public void EndSession(long userSessionId)
            {
                timer.Stop();
                JsonService jsonService = Service.Get <JsonService>();

                PartyGameSessionMessages.TubeRacePlayerResult tubeRacePlayerResult = new PartyGameSessionMessages.TubeRacePlayerResult();
                tubeRacePlayerResult.CompletionTimeInMilliseconds = timer.ElapsedMilliseconds;
                tubeRacePlayerResult.OverallScore  = raceDefinition.StartingPoints - timer.ElapsedMilliseconds * raceDefinition.PointsDeductedPerSecond / 1000 + userScores[userSessionId];
                tubeRacePlayerResult.PlayerId      = userSessionId;
                tubeRacePlayerResult.ScoreModifier = userScores[userSessionId];
                PartyGameSessionMessages.TubeRacePlayerResult objectToSerialize = tubeRacePlayerResult;
                PartyGameMessageEvent partyGameMessageEvent = default(PartyGameMessageEvent);

                partyGameMessageEvent.sessionId = sessionId;
                partyGameMessageEvent.type      = 13;
                partyGameMessageEvent.message   = jsonService.Serialize(objectToSerialize);
                PartyGameMessageEvent partyGameMessageEvent2 = partyGameMessageEvent;

                processEvent(GameServerEvent.PARTY_GAME_MESSAGE, partyGameMessageEvent2);
                if (Service.Get <IGameData>().Get <Dictionary <int, PartyGameDefinition> >().TryGetValue(cpItem.gameTemplateId, out var value))
                {
                    foreach (PartyGameDefinition.PartyGameReward reward in value.Rewards)
                    {
                        if (reward.Placement == PartyGameEndPlacement.FIRST)
                        {
                            Dictionary <string, RewardJsonReader> dictionary = new Dictionary <string, RewardJsonReader>();
                            dictionary.Add(userSessionId.ToString(), jsonService.Deserialize <RewardJsonReader>(jsonService.Serialize(RewardJsonWritter.FromReward(reward.Reward.ToReward()))));
                            SignedResponse <RewardedUserCollectionJsonHelper> signedResponse = new SignedResponse <RewardedUserCollectionJsonHelper>();
                            signedResponse.Data = new RewardedUserCollectionJsonHelper
                            {
                                rewards  = dictionary,
                                source   = RewardSource.MINI_GAME,
                                sourceId = sessionId.ToString()
                            };
                            SignedResponse <RewardedUserCollectionJsonHelper> arg = signedResponse;
                            processEvent(GameServerEvent.RECEIVED_REWARDS_DELAYED, arg);
                            break;
                        }
                    }
                }
                CoroutineRunner.StartPersistent(finishEndSession(), this, "finishEndSession");
            }
            public void StartSession()
            {
                PartyGameStartEventV2 partyGameStartEventV = default(PartyGameStartEventV2);

                partyGameStartEventV.sessionId  = sessionId;
                partyGameStartEventV.templateId = cpItem.gameTemplateId;
                partyGameStartEventV.playerData = TubeRaceWorldObject.getPlayerData(userScores.Keys);
                processEvent(GameServerEvent.PARTY_GAME_START_V2, partyGameStartEventV);
                PartyGameMessageEvent partyGameMessageEvent = default(PartyGameMessageEvent);

                partyGameMessageEvent.sessionId = sessionId;
                partyGameMessageEvent.type      = 10;
                partyGameMessageEvent.message   = "{\"ModifierLayoutId\":" + UnityEngine.Random.Range(0, 3) + "}";
                processEvent(GameServerEvent.PARTY_GAME_MESSAGE, partyGameMessageEvent);
                foreach (long key in userScores.Keys)
                {
                    PlayerLocomotionStateEvent playerLocomotionStateEvent = default(PlayerLocomotionStateEvent);
                    playerLocomotionStateEvent.SessionId = key;
                    playerLocomotionStateEvent.State     = LocomotionState.Racing;
                    processEvent(GameServerEvent.USER_LOCO_STATE_CHANGED, playerLocomotionStateEvent);
                }
                timer.Start();
            }
        private void onPartyGameMessage(GameServerEvent gameServerEvent, object data)
        {
            PartyGameMessageEvent partyGameMessageEvent = (PartyGameMessageEvent)data;

            Service.Get <EventDispatcher>().DispatchEvent(new PartyGameServiceEvents.PartyGameSessionMessage(partyGameMessageEvent.sessionId, partyGameMessageEvent.type, partyGameMessageEvent.message));
        }