示例#1
0
        private void OnPlayerRemoved(PlayerSessionData playerSessionData)
        {
            for (int i = 0; i < playerControllers.Count; i++)
            {
                if (playerControllers[i].playerIndex == playerSessionData.playerIndex)
                {
                    playerControllers[i].SetPlayerActive(false);
                    break;
                }
            }
            for (int i = 0; i < selectScreenPlayerDatas.Length; i++)
            {
                if (selectScreenPlayerDatas[i] != null)
                {
                    selectScreenPlayerDatas[i].playerReady = false;
                    csPanels[selectScreenPlayerDatas[i].playerSessionData.playerIndex].UpdatePanel(selectScreenPlayerDatas[i]);
                }
            }
            selectScreenPlayerDatas[playerSessionData.playerIndex].playerActive = false;
            selectScreenPlayerDatas[playerSessionData.playerIndex].playerReady  = false;
            audioController.PlayExit();
            csPanels[playerSessionData.playerIndex].Deactivate();

            if (inputManager.GetPlayerCount() == 0)
            {
                mainMenu.ChangeScreenToRootMainMenu();
            }
        }
    public void StartSession()
    {
        //Time.timeScale = 2;

        currentSessionData = new PlayerSessionData(0, 0, 0);
        StartCoroutine(lateUIupdate());

        GeneralGameUIHolder.Instance.otherUI.targetConditionValue          = PlayerHandler.PlayerInstance.targetPoint.GetComponentInChildren <Slider>();
        GeneralGameUIHolder.Instance.otherUI.targetConditionValue.minValue = 0;


        GeneralGameUIHolder.Instance.otherUI.changeCameraBehaviour.onClick.RemoveAllListeners();
        GeneralGameUIHolder.Instance.otherUI.changeCameraBehaviour.onClick.AddListener(() => ChangeCameraBehaviour());

        GeneralGameUIHolder.Instance.otherUI.restartButton.onClick.RemoveAllListeners();
        GeneralGameUIHolder.Instance.otherUI.restartButton.onClick.AddListener(() => Restart());

        GeneralGameUIHolder.Instance.otherUI.returnToMenuButton.onClick.RemoveAllListeners();
        GeneralGameUIHolder.Instance.otherUI.returnToMenuButton.onClick.AddListener(() => BackToMainMenu());

        PlayerHandler.PlayerInstance.truck.trucksCondition.OnZeroCondition += SaveCurrentSessionData;
        UpdatePlayerConditionValueAndSessionComplexity();
        PlayerHandler.PlayerInstance.truck.trucksCondition.OnCurrentConditionChanged += UpdatePlayerConditionValueAndSessionComplexity;

        startPostion = PlayerHandler.PlayerInstance.truck._transform.position;
        startTime    = (int)Time.time;

        StartCoroutine(WriteTimeTraveledDistances());
    }
示例#3
0
        public void CreateCharacter(PlayerSessionData psData)
        {
            if (!initialized)
            {
                return;
            }
            CharController newChar = GameObject.Instantiate(characterPrefab, spawnLocations[psData.playerIndex % spawnLocations.Count]);

            newChar.ship = shipMovement;
            newChar.outsideBehaviour.shipEjectSystem = shipEjectSystem;
            newChar.transform.parent = charactersRoot;
            newChar.Initialize(psData, spawnFloors[psData.playerIndex % spawnFloors.Count]);
            /* Attach Tool */
            if (psData.charToolType != CharToolType.None)
            {
                CharTool tool = charToolFactory.CreateCharTool(psData.charToolType);
                newChar.EquipTool(tool);
            }
            /* Cameras */
            contextCams[psData.playerIndex].SetFollowTarget(newChar.transform);
            contextCams[psData.playerIndex].Activate();
            CamZone charGameplayCamZone = gameplayCamZone.Copy();

            charGameplayCamZone.trans = newChar.transform;
            gameplaySet.camZones.Add(charGameplayCamZone);
            CamZone charCharactersCamZone = characterCamZone.Copy();

            charCharactersCamZone.trans = newChar.transform;
            charactersSet.camZones.Add(charCharactersCamZone);

            playerCharacters.Add(newChar);
        }
示例#4
0
    public void ShowSessionProgress(PlayerSessionData sessionData, CurrentSessionTaskData sessionTask, UnityEngine.Events.UnityAction onOKclick)
    {
        gameObject.SetActive(true);
        for (int i = 0; i < sessionTask.tasks.Length; i++)
        {
            taskViewer[i].SetActive(true);
            taskViewer[i].GetComponentInChildren <Toggle>().gameObject.SetActive(true);
            taskViewer[i].GetComponent <Text>().text = GetLocalizedTaskText(sessionTask.tasks[i].taskType, sessionTask.tasks[i].taskAmount);
            taskViewer[i].GetComponentInChildren <Toggle>().GetComponent <UnityEngine.UI.Toggle>().isOn = sessionTask.tasks[i].isDone;
            taskViewer[i].transform.GetChild(1).GetComponent <Text>().text = sessionTask.tasks[i].reward.ToString() + "$";
            switch (sessionTask.tasks[i].taskType)
            {
            case GameEnums.TaskType.DestroyEnemies:
                taskViewer[i].transform.GetChild(2).GetComponent <Text>().text = $"{sessionData.defeatedEnemies}";
                break;

            case GameEnums.TaskType.TravelDistance:
                taskViewer[i].transform.GetChild(2).GetComponent <Text>().text = $"{sessionData.traveledDistance} m";
                break;

            case GameEnums.TaskType.TravelTime:
                taskViewer[i].transform.GetChild(2).GetComponent <Text>().text = $"{sessionData.traveledTime} sec";
                break;

            default:
                break;
            }
        }
        totalRewardText.gameObject.SetActive(true);
        totalRewardText.text = GetLocalizedRewardText(sessionTask.totalReward, PlayerStaticDataHandler.RewardCoinsForSession(sessionData.defeatedEnemies, sessionData.traveledDistance));
        okButton.onClick.RemoveAllListeners();
        okButton.onClick.AddListener(() => onOKclick.Invoke());
        okButton.onClick.AddListener(() => HideWindow());
    }
示例#5
0
 public void CopyData(SelectScreenPlayerData ssPlayerData)
 {
     this.playerSessionData = ssPlayerData.playerSessionData;
     this.skinIndex         = ssPlayerData.skinIndex;
     this.devotionNameIndex = ssPlayerData.devotionNameIndex;
     this.spiritNameIndex   = ssPlayerData.spiritNameIndex;
     this.charTool          = ssPlayerData.charTool;
     this.playerActive      = ssPlayerData.playerActive;
     this.playerReady       = ssPlayerData.playerReady;
 }
示例#6
0
    public static void SaveData(TruckData truckData, FirePointData firePointData, PlayerSessionData playerSessionData)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        string          path      = Application.persistentDataPath + "/player.data";

        FileStream stream = new FileStream(path, FileMode.Create);

        SerializablePlayerData data = new SerializablePlayerData();

        data.firePointType = (int)truckData.firePointType;
        data.truckType     = (int)truckData.truckType;

        data.gunTypes       = new int[12];
        data.locationPaths  = new int[12];
        data.trackingGroups = new int[12];
        data.gunDataTypes   = new int[12];

        for (int i = 0; i < firePointData.gunsConfigurations.Length; i++)
        {
            var config = firePointData.gunsConfigurations[i];
            data.gunTypes[i]       = (int)config.gunType;
            data.locationPaths[i]  = (int)config.locationPath;
            data.trackingGroups[i] = (int)config.trackingGroup;
            data.gunDataTypes[i]   = (int)config.gunDataType;
        }

        if (playerSessionData.traveledDistance > PlayerStaticRunTimeData.maxTraveledDistancePerSession)
        {
            data.maxTraveledDistancePerSession = playerSessionData.traveledDistance;
        }
        else
        {
            data.maxTraveledDistancePerSession = PlayerStaticRunTimeData.maxTraveledDistancePerSession;
        }
        data.traveledDistance = PlayerStaticRunTimeData.traveledDistance + playerSessionData.traveledDistance;
        if (playerSessionData.defeatedEnemies > PlayerStaticRunTimeData.maxDefeatedEnemiesPerSession)
        {
            data.maxDefeatedEnemiesPerSession = playerSessionData.defeatedEnemies;
        }
        else
        {
            data.maxDefeatedEnemiesPerSession = PlayerStaticRunTimeData.maxDefeatedEnemiesPerSession;
        }
        data.defeatedEnemies = PlayerStaticRunTimeData.defeatedEnemies + playerSessionData.defeatedEnemies;
        data.experience      = PlayerStaticRunTimeData.experience + playerSessionData.defeatedEnemies * 100 + playerSessionData.traveledDistance / 10;
        data.coins           = PlayerStaticRunTimeData.coins + playerSessionData.defeatedEnemies * 10 + +playerSessionData.traveledDistance / 10;

        formatter.Serialize(stream, data);
        stream.Close();
    }
示例#7
0
        private void OnPlayerRegistered(PlayerSessionData playerSessionData)
        {
            SelectScreenPlayerData ssPlayerData = new SelectScreenPlayerData();

            selectScreenPlayerDatas[playerSessionData.playerIndex] = ssPlayerData;
            ssPlayerData.playerSessionData = playerSessionData;
            ssPlayerData.playerActive      = true;
            ssPlayerData.playerReady       = false;
            AssignRandomNames(ssPlayerData);
            AssignRandomSkin(ssPlayerData);
            AssignRandomTool(ssPlayerData);
            csPanels[playerSessionData.playerIndex].Activate(playerSessionData.playerIndex, playerSessionData.uiInputManager);
            audioController.PlayEnter();
        }
示例#8
0
 public void ShowSessionProgress(PlayerSessionData sessionData, CurrentSessionTaskData sessionTask, UnityEngine.Events.UnityAction onOKclick)
 {
     gameObject.SetActive(true);
     for (int i = 0; i < sessionTask.tasks.Length; i++)
     {
         taskViewer[i].SetActive(true);
         taskViewer[i].GetComponentInChildren <Toggle>().gameObject.SetActive(true);
         taskViewer[i].GetComponent <Text>().text = GetLocalizedTaskText(sessionTask.tasks[i].taskType, sessionTask.tasks[i].taskAmount);
         taskViewer[i].GetComponentInChildren <Toggle>().GetComponent <UnityEngine.UI.Toggle>().isOn = sessionTask.tasks[i].isDone;
         taskViewer[i].transform.GetChild(2).GetComponent <Text>().text = sessionTask.tasks[i].reward.ToString() + "$";
     }
     totalRewardText.gameObject.SetActive(true);
     totalRewardText.text = GetLocalizedRewardText(sessionTask.totalReward, sessionData.defeatedEnemies * 10 + sessionData.traveledDistance / 10);
     okButton.onClick.RemoveAllListeners();
     okButton.onClick.AddListener(() => onOKclick.Invoke());
     okButton.onClick.AddListener(() => HideWindow());
 }
示例#9
0
        private void OnPlayerChangedIndex(PlayerSessionData playerSessionData, int oldIndex)
        {
            selectScreenPlayerDatas[playerSessionData.playerIndex].CopyData(selectScreenPlayerDatas[oldIndex]);
            selectScreenPlayerDatas[oldIndex].playerReady  = false;
            selectScreenPlayerDatas[oldIndex].playerActive = false;
            selectScreenPlayerDatas[playerSessionData.playerIndex].playerActive = true;
            for (int i = 0; i < playerControllers.Count; i++)
            {
                if (playerControllers[i].playerIndex == oldIndex)
                {
                    playerControllers[i].playerIndex = playerSessionData.playerIndex;
                }
            }

            csPanels[playerSessionData.playerIndex].UpdatePanel(selectScreenPlayerDatas[playerSessionData.playerIndex]);
            csPanels[playerSessionData.playerIndex].Activate(playerSessionData.playerIndex, playerSessionData.uiInputManager);
            csPanels[oldIndex].UpdatePanel(selectScreenPlayerDatas[oldIndex]);
            csPanels[oldIndex].Deactivate();
        }
示例#10
0
 public void Initialize(PlayerSessionData playerSessionData, int startingFloor)
 {
     initialized                        = true;
     this.playerSessionData             = playerSessionData;
     this.charInputManager              = playerSessionData.gameplayInputManager;
     this.charAnimator.sprites          = playerSessionData.skin.sprites.ToArray();
     animator.runtimeAnimatorController = playerSessionData.skin.animatorController;
     ship.AddDependentTransform(transform);
     SetGameplayInputActive();
     insideBehaviour.Initialize(this, rb2D, charSpriteRenderer, animator, charAudio);
     outsideBehaviour.Initialize(this, rb2D, charSpriteRenderer, animator, charAudio);
     outsideBehaviour.Deactivate();
     ChangeState(CharState.Inside);
     charAudio.SetEnvironmentBasedOnFloor(startingFloor);
     animator.keepAnimatorControllerStateOnDisable = true;
     //Initialize Actions
     availableActions = new Dictionary <UseActionButton, List <UseAction> >();
     Subscribe();
 }
    public void CheckSession(PlayerSessionData sessionData)
    {
        //totalReward = 0;
        for (int i = 0; i < tasks.Length; i++)
        {
            if (!tasks[i].isDone)
            {
                switch (tasks[i].taskType)
                {
                case GameEnums.TaskType.DestroyEnemies:
                    if (sessionData.defeatedEnemies >= tasks[i].taskAmount)
                    {
                        tasks[i].isDone = true;
                        totalReward    += tasks[i].reward;
                    }
                    break;

                case GameEnums.TaskType.TravelDistance:
                    if (sessionData.traveledDistance >= tasks[i].taskAmount)
                    {
                        tasks[i].isDone = true;
                        totalReward    += tasks[i].reward;
                    }
                    break;

                case GameEnums.TaskType.TravelTime:
                    if (sessionData.traveledTime >= tasks[i].taskAmount)
                    {
                        tasks[i].isDone = true;
                        totalReward    += tasks[i].reward;
                    }
                    break;

                default:
                    break;
                }
            }
        }
    }
示例#12
0
    public static void SaveData(TruckData truckData, PlayerSessionData playerSessionData)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        string          path      = Application.persistentDataPath + "/player.data";

        FileStream stream = new FileStream(path, FileMode.Create);

        PlayerSerializableData data = new PlayerSerializableData();

        data.firePointType = (int)truckData.firePointType;
        data.truckType     = (int)truckData.truckType;

        data.gunTypes       = new int[12];
        data.battleTypes    = new int[12];
        data.locationPaths  = new int[12];
        data.trackingGroups = new int[12];
        data.gunDataTypes   = new int[12];

        for (int i = 0; i < truckData.firePointData.gunsConfigurations.Length; i++)
        {
            var config = truckData.firePointData.gunsConfigurations[i];
            data.gunTypes[i]       = (int)config.gunType;
            data.battleTypes[i]    = (int)config.battleType;
            data.locationPaths[i]  = (int)config.locationPath;
            data.trackingGroups[i] = (int)config.trackingGroup;
            data.gunDataTypes[i]   = (int)config.gunDataType;
        }

        if (playerSessionData.traveledDistance > PlayerStaticRunTimeData.maxTraveledDistancePerSession)
        {
            data.maxTraveledDistancePerSession = playerSessionData.traveledDistance;
            GooglePlayServicesHandler.Instance.SaveProgressToLeaderboard(playerSessionData.traveledDistance, GoogleDataHolder.PlayServicesData.LeaderBoards.MaxTraveledDistanceInOneSession_ID);
        }
        else
        {
            data.maxTraveledDistancePerSession = PlayerStaticRunTimeData.maxTraveledDistancePerSession;
        }
        if (playerSessionData.defeatedEnemies > PlayerStaticRunTimeData.maxDefeatedEnemiesPerSession)
        {
            data.maxDefeatedEnemiesPerSession = playerSessionData.defeatedEnemies;
            GooglePlayServicesHandler.Instance.SaveProgressToLeaderboard(playerSessionData.defeatedEnemies, GoogleDataHolder.PlayServicesData.LeaderBoards.MaxDefeatedEnemiesInOneSession_ID);
        }
        else
        {
            data.maxDefeatedEnemiesPerSession = PlayerStaticRunTimeData.maxDefeatedEnemiesPerSession;
        }
        if (playerSessionData.traveledTime > PlayerStaticRunTimeData.maxTraveledTimePerSession)
        {
            data.maxTraveledTimePerSession = playerSessionData.traveledTime;
        }
        else
        {
            data.maxTraveledTimePerSession = PlayerStaticRunTimeData.maxTraveledTimePerSession;
        }
        if (playerSessionData.traveledDistance_1Minute > PlayerStaticRunTimeData.maxTraveledDistance_1Minute)
        {
            data.maxTraveledDistance_1Minute = playerSessionData.traveledDistance_1Minute;
            GooglePlayServicesHandler.Instance.SaveProgressToLeaderboard(playerSessionData.traveledDistance_1Minute, GoogleDataHolder.PlayServicesData.LeaderBoards.MaxTraveledDistanceIn_1_Minute_ID);
        }
        else
        {
            data.maxTraveledDistance_1Minute = PlayerStaticRunTimeData.maxTraveledDistance_1Minute;
        }
        if (playerSessionData.traveledDistance_3Minutes > PlayerStaticRunTimeData.maxTraveledDistance_3Minutes)
        {
            data.maxTraveledDistance_3Minutes = playerSessionData.traveledDistance_3Minutes;
            GooglePlayServicesHandler.Instance.SaveProgressToLeaderboard(playerSessionData.traveledDistance_3Minutes, GoogleDataHolder.PlayServicesData.LeaderBoards.MaxTraveledDistanceIn_3_Minute_ID);
        }
        else
        {
            data.maxTraveledDistance_5Minutes = PlayerStaticRunTimeData.maxTraveledDistance_5Minutes;
        }
        if (playerSessionData.traveledDistance_5Minutes > PlayerStaticRunTimeData.maxTraveledDistance_5Minutes)
        {
            data.maxTraveledDistance_5Minutes = playerSessionData.traveledDistance_5Minutes;
            GooglePlayServicesHandler.Instance.SaveProgressToLeaderboard(playerSessionData.traveledDistance_5Minutes, GoogleDataHolder.PlayServicesData.LeaderBoards.MaxTraveledDistanceIn_5_Minute_ID);
        }
        else
        {
            data.maxTraveledDistance_5Minutes = PlayerStaticRunTimeData.maxTraveledDistance_5Minutes;
        }

        data.totalTraveledDistance = PlayerStaticRunTimeData.totalTraveledDistance + playerSessionData.traveledDistance;
        data.totalTraveledTime     = PlayerStaticRunTimeData.totalTraveledTime + playerSessionData.traveledTime;
        data.totalDefeatedEnemies  = PlayerStaticRunTimeData.totalDefeatedEnemies + playerSessionData.defeatedEnemies;

        data.experience = PlayerStaticRunTimeData.experience + RewardCoinsForSession(playerSessionData.defeatedEnemies, playerSessionData.traveledDistance);
        data.coins      = PlayerStaticRunTimeData.coins + RewardCoinsForSession(playerSessionData.defeatedEnemies, playerSessionData.traveledDistance);

        formatter.Serialize(stream, data);
        stream.Close();
    }