예제 #1
0
        public void OnGotoClick()
        {
            Mascot mascot = Service.Get <MascotService>().GetMascot(questData.Mascot.name);

            Service.Get <TutorialManager>().SetTutorial(mascot.Definition.QuestReminderTutorialId, isComplete: true);
            if (mascot == null)
            {
                return;
            }
            PlayerSpawnPositionManager component = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <PlayerSpawnPositionManager>();

            if (component != null)
            {
                SpawnedAction spawnedAction = new SpawnedAction();
                spawnedAction.Quest = associatedQuest;
                if (replayQuest)
                {
                    spawnedAction.Action = SpawnedAction.SPAWNED_ACTION.ReplayQuest;
                }
                else
                {
                    spawnedAction.Action = SpawnedAction.SPAWNED_ACTION.StartQuest;
                }
                component.SpawnPlayer(new SpawnPlayerParams.SpawnPlayerParamsBuilder(mascot.Definition.SpawnPlayerNearMascotPosition).Zone(mascot.Definition.Zone).SpawnedAction(spawnedAction).Build());
            }
        }
예제 #2
0
    private void executeSpawedAction(SpawnedAction spawnedAction)
    {
        if (spawnedAction.Reward != null)
        {
            Service.Get <EventDispatcher>().DispatchEvent(new RewardServiceEvents.MyRewardEarned(RewardSource.QUICK_NOTIFICATION, "", spawnedAction.Reward));
        }
        switch (spawnedAction.Action)
        {
        case SpawnedAction.SPAWNED_ACTION.StartQuest:
            if (spawnedAction.Quest != null)
            {
                Service.Get <TutorialManager>().EndTutorial();
                Service.Get <EventDispatcher>().DispatchEvent(new QuestEvents.StartQuest(spawnedAction.Quest));
            }
            break;

        case SpawnedAction.SPAWNED_ACTION.ReplayQuest:
            if (spawnedAction.Quest != null)
            {
                Service.Get <TutorialManager>().EndTutorial();
                Service.Get <EventDispatcher>().DispatchEvent(new QuestEvents.ReplayQuest(spawnedAction.Quest));
            }
            break;
        }
    }
예제 #3
0
 private SpawnPlayerParams(Vector3 position, Quaternion rotation, ZoneDefinition zone, string sceneName, SpawnedAction spawnedAction, bool nudgePlayer, bool getOutOfSwimming, Reward pendingReward)
 {
     Position         = position;
     Rotation         = rotation;
     Zone             = zone;
     SceneName        = sceneName;
     SpawnedAction    = spawnedAction;
     NudgePlayer      = nudgePlayer;
     GetOutOfSwimming = getOutOfSwimming;
     PendingReward    = pendingReward;
 }
예제 #4
0
    private void goToLocationInZone(Vector3 location, string sceneName, CellPhoneActivityDefinition definition, Reward reward)
    {
        PlayerSpawnPositionManager component = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <PlayerSpawnPositionManager>();

        if (component != null)
        {
            SpawnedAction spawnedAction = new SpawnedAction();
            spawnedAction.Action = SpawnedAction.SPAWNED_ACTION.None;
            component.SpawnPlayer(new SpawnPlayerParams.SpawnPlayerParamsBuilder(location).SceneName(sceneName).SpawnedAction(spawnedAction).PendingReward(reward)
                                  .Build());
        }
        Service.Get <ICPSwrveService>().Action("activity_tracker", "quick_go", definition.GetType().ToString(), definition.name);
    }
        private void goToLocationInZone()
        {
            PlayerSpawnPositionManager component = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <PlayerSpawnPositionManager>();

            if (component != null)
            {
                SpawnedAction spawnedAction = new SpawnedAction();
                spawnedAction.Action = SpawnedAction.SPAWNED_ACTION.None;
                component.SpawnPlayer(new SpawnPlayerParams.SpawnPlayerParamsBuilder(widgetData.LocationInZone).SceneName(widgetData.Scene.SceneName).SpawnedAction(spawnedAction).Build());
                if (Service.Get <SceneTransitionService>().CurrentScene == widgetData.Scene.SceneName)
                {
                    Service.Get <EventDispatcher>().DispatchEvent(default(CellPhoneEvents.CellPhoneClosed));
                }
            }
            Service.Get <ICPSwrveService>().Action("activity_tracker", "go", "starting_soon", widgetData.name);
        }
예제 #6
0
    private void goToLocationInZone()
    {
        PlayerSpawnPositionManager component = ClubPenguin.SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <PlayerSpawnPositionManager>();

        if (component != null)
        {
            CellPhoneSaleActivityDefinition.MarketPlaceSaleData marketplaceSaleDateForGoButton = getMarketplaceSaleDateForGoButton();
            SpawnedAction spawnedAction = new SpawnedAction();
            spawnedAction.Action = SpawnedAction.SPAWNED_ACTION.None;
            component.SpawnPlayer(new SpawnPlayerParams.SpawnPlayerParamsBuilder(marketplaceSaleDateForGoButton.PositionInZone).SceneName(marketplaceSaleDateForGoButton.Scene.SceneName).SpawnedAction(spawnedAction).Build());
            if (Service.Get <SceneTransitionService>().CurrentScene == marketplaceSaleDateForGoButton.Scene.SceneName)
            {
                Service.Get <EventDispatcher>().DispatchEvent(default(CellPhoneEvents.CellPhoneClosed));
            }
        }
        Service.Get <ICPSwrveService>().Action("activity_tracker", "go", "starting_soon", saleData.name);
    }
        private void goToLocationInZone()
        {
            PlayerSpawnPositionManager component = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <PlayerSpawnPositionManager>();

            if (component != null)
            {
                SpawnedAction spawnedAction = new SpawnedAction();
                spawnedAction.Action = SpawnedAction.SPAWNED_ACTION.None;
                component.SpawnPlayer(new SpawnPlayerParams.SpawnPlayerParamsBuilder(widgetData.LocationInZone).SceneName(widgetData.Scene.SceneName).SpawnedAction(spawnedAction).Build());
                if (Service.Get <SceneTransitionService>().CurrentScene == widgetData.Scene.SceneName)
                {
                    Service.Get <EventDispatcher>().DispatchEvent(default(CellPhoneEvents.CellPhoneClosed));
                }
            }
            saveWidgetAsAccessed();
            logGoThereBI((widgetData as CellPhoneFeatureActivityDefinition != null) ? "boost" : "event", widgetData.name);
        }
        private void startQuest(QuestDefinition questDefinition)
        {
            PlayerSpawnPositionManager component = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <PlayerSpawnPositionManager>();

            if (component != null)
            {
                Quest         quest         = Service.Get <QuestService>().GetQuest(questDefinition);
                SpawnedAction spawnedAction = new SpawnedAction();
                spawnedAction.Quest  = quest;
                spawnedAction.Action = SpawnedAction.SPAWNED_ACTION.StartQuest;
                component.SpawnPlayer(new SpawnPlayerParams.SpawnPlayerParamsBuilder(quest.Mascot.Definition.SpawnPlayerNearMascotPosition).Zone(quest.Mascot.Definition.Zone).SpawnedAction(spawnedAction).Build());
                if (Service.Get <SceneTransitionService>().CurrentScene == quest.Mascot.Definition.Zone.ZoneName)
                {
                    Service.Get <EventDispatcher>().DispatchEvent(default(CellPhoneEvents.CellPhoneClosed));
                }
            }
            Service.Get <ICPSwrveService>().Action("activity_tracker", "go", "adventure", $"{questDefinition.Mascot.name}_{questDefinition.ChapterNumber}_{questDefinition.QuestNumber}");
        }
예제 #9
0
 public SpawnPlayerParamsBuilder SpawnedAction(SpawnedAction spawnedAction)
 {
     this.spawnedAction = spawnedAction;
     return(this);
 }
예제 #10
0
    public void SpawnPlayer(SpawnPlayerParams spawnPlayerParams)
    {
        if (spawnPlayerParams.Zone != null || !string.IsNullOrEmpty(spawnPlayerParams.SceneName))
        {
            bool                  flag                  = false;
            PresenceData          component             = dataEntityCollection.GetComponent <PresenceData>(dataEntityCollection.LocalPlayerHandle);
            ZoneTransitionService zoneTransitionService = Service.Get <ZoneTransitionService>();
            if (spawnPlayerParams.Zone != null)
            {
                ZoneDefinition zoneBySceneName = zoneTransitionService.GetZoneBySceneName(component.Room);
                flag = (zoneBySceneName != null && string.Equals(spawnPlayerParams.Zone.ZoneName, zoneBySceneName.ZoneName));
            }
            else if (!string.IsNullOrEmpty(spawnPlayerParams.SceneName))
            {
                flag = ((!zoneTransitionService.IsInIgloo) ? string.Equals(component.Room, spawnPlayerParams.SceneName) : string.Equals(zoneTransitionService.CurrentZone.SceneName, spawnPlayerParams.SceneName));
            }
            if (!flag)
            {
                if (!dataEntityCollection.TryGetComponent(dataEntityCollection.LocalPlayerHandle, out SpawnData component2))
                {
                    component2 = dataEntityCollection.AddComponent <SpawnData>(dataEntityCollection.LocalPlayerHandle);
                }
                if (spawnPlayerParams.SpawnedAction != null)
                {
                    component2.SpawnedAction = spawnPlayerParams.SpawnedAction;
                }
                component2.Position      = spawnPlayerParams.Position;
                component2.Rotation      = spawnPlayerParams.Rotation;
                component2.PendingReward = spawnPlayerParams.PendingReward;
                if (spawnPlayerParams.Zone != null)
                {
                    zoneTransitionService.LoadZone(spawnPlayerParams.Zone, "Loading");
                }
                else
                {
                    zoneTransitionService.LoadZone(spawnPlayerParams.SceneName, "Loading");
                }
                return;
            }
        }
        if (spawnPlayerParams.PendingReward != null)
        {
            Service.Get <EventDispatcher>().DispatchEvent(new RewardServiceEvents.MyRewardEarned(RewardSource.QUICK_NOTIFICATION, "", spawnPlayerParams.PendingReward));
        }
        if (Vector3.Distance(base.transform.position, spawnPlayerParams.Position) <= 3f)
        {
            if (spawnPlayerParams.SpawnedAction != null)
            {
                executeSpawedAction(spawnPlayerParams.SpawnedAction);
            }
            return;
        }
        LocomotionTracker component3 = base.gameObject.GetComponent <LocomotionTracker>();

        if (component3.IsCurrentControllerOfType <SlideController>())
        {
            component3.SetCurrentController <RunController>();
        }
        else if (spawnPlayerParams.GetOutOfSwimming && component3.IsCurrentControllerOfType <SwimController>())
        {
            Animator component4 = base.gameObject.GetComponent <Animator>();
            component4.SetTrigger(AnimationHashes.Params.SwimToWalk);
            component3.SetCurrentController <RunController>();
        }
        Vector3 zero = Vector3.zero;

        if (spawnPlayerParams.NudgePlayer && component3.IsCurrentControllerOfType <RunController>())
        {
            zero.y = 0.5f;
        }
        base.transform.position = spawnPlayerParams.Position + zero;
        ClubPenguin.Core.SceneRefs.Get <BaseCamera>().Snap();
        if (spawnPlayerParams.NudgePlayer)
        {
            actionOnSpawned = spawnPlayerParams.SpawnedAction;
            CoroutineRunner.Start(LocomotionUtils.nudgePlayer(component3, onNudgePlayerDone), component3.gameObject, "MoveAfterJump");
        }
        else if (spawnPlayerParams.SpawnedAction != null)
        {
            executeSpawedAction(spawnPlayerParams.SpawnedAction);
        }
    }
예제 #11
0
    private void spawnLocalPlayerInZone()
    {
        if (Service.Get <ZoneTransitionService>().CurrentZone.AlwaysSpawnPlayerAtDefaultLocation)
        {
            spawnNearDefaultLocation();
            return;
        }
        actionOnSpawned = null;
        Quaternion   rotation   = Quaternion.identity;
        PositionData component3 = default(PositionData);

        if (playerDataHandle.Handle == dataEntityCollection.LocalPlayerHandle)
        {
            Vector3   vector = Vector3.zero;
            bool      flag   = false;
            SpawnData component2;
            if (dataEntityCollection.TryGetComponent(dataEntityCollection.LocalPlayerHandle, out PausedStateData component))
            {
                if (component.ShouldSkipResume)
                {
                    component.ShouldSkipResume = false;
                }
                else
                {
                    vector = component.Position;
                    flag   = true;
                }
            }
            else if (dataEntityCollection.TryGetComponent(dataEntityCollection.LocalPlayerHandle, out component2))
            {
                vector                 = component2.Position;
                rotation               = component2.Rotation;
                actionOnSpawned        = component2.SpawnedAction;
                actionOnSpawned.Reward = component2.PendingReward;
                flag = true;
                dataEntityCollection.RemoveComponent <SpawnData>(dataEntityCollection.LocalPlayerHandle);
            }
            if (flag && dataEntityCollection.TryGetComponent(dataEntityCollection.LocalPlayerHandle, out component3))
            {
                component3.Position     = vector;
                localPlayerSpawnPostion = vector;
                base.transform.SetPositionAndRotation(vector, rotation);
                if (actionOnSpawned != null && (actionOnSpawned.Action != 0 || actionOnSpawned.Reward != null))
                {
                    eventDispatcher.AddListener <HudEvents.HudInitComplete>(onHudInitCompleted);
                }
                return;
            }
        }
        if (isSpawnNearPlayer())
        {
            Service.Get <EventDispatcher>().AddListener <FriendsServiceEvents.FriendLocationInRoomReceived>(onFriendLocationReceived);
            Service.Get <EventDispatcher>().AddListener <FriendsServiceEvents.FriendNotInRoom>(onFriendNotInRoom);
            Service.Get <INetworkServicesManager>().FriendsService.GetFriendLocationInRoom(dataEntityCollection.GetComponent <SpawnAtPlayerData>(playerDataHandle.Handle).PlayerSWID);
            return;
        }
        bool flag2 = false;

        component3 = dataEntityCollection.GetComponent <PositionData>(playerDataHandle.Handle);
        if (!flag2 && component3 != null && component3.Position != Vector3.zero)
        {
            LocomotionActionEvent action = default(LocomotionActionEvent);
            action.Type      = LocomotionAction.Move;
            action.Position  = component3.Position;
            action.Direction = Vector3.zero;
            Service.Get <INetworkServicesManager>().PlayerActionService.LocomotionAction(action);
            flag2 = true;
        }
        if (!flag2)
        {
            spawnAtSceneLocation();
        }
    }