Beispiel #1
0
    void Start()
    {
        // TO DO RE-ADD RINGS


        _loadingScreen = GameObject.Instantiate(loadingScreenPrefab, new Vector3(8000, 8000, 8000), Quaternion.identity);
        _loadingScreen.gameObject.SetActive(false);

        stages    = Resources.LoadAll("Scriptable Objects/Stages").Select(x => (SO_StageSelect)x).ToArray();
        slotTexts = new Text[stages.Length];

        var stageSpacing = Camera.main.pixelWidth / stages.Length;

        for (int i = 0; i < slotTexts.Length; i++)
        {
            slotTexts[i] = Instantiate(templateSlot, templateSlot.transform.parent).GetComponent <Text>();
            //Pos = -half + index+1
            //slotTexts[i].rectTransform.position = new Vector3(Camera.main.pixelWidth / 2 + stageSpacing / 2 + stageSpacing * (Mathf.Ceil(-stages.Length / 2f) + i), slotTexts[i].rectTransform.position.y, slotTexts[i].rectTransform.position.z);
            slotTexts[i].gameObject.SetActive(true);
            slotTexts[i].text = "<b>" + stages[i].name + "</b> \n\n" + stages[i].description;
            slotTexts[i].GetComponentInChildren <Image>().sprite = stages[i].stageImage;
        }

        playerInfo     = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players");
        selector       = playerInfo.playerControllers[Random.Range(0, playerInfo.playerControllers.Length - 1)];
        titleText.text = "Player <b>" + (selector + 1) + "</b>, please select a stage";

        lastAnalogValue = Vector2.zero;
        currentGamePad  = new GamePadState();
        currentGamePad  = new GamePadState();
    }
Beispiel #2
0
    void Start()
    {
        _owner = GetComponent <Player>();
        var playerCount = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players").playerControllers.Length;
        int playerIndex = GameManager.Instance.Players.IndexOf(GetComponent <Player>());

        mainScore = GameObject.Find(playerCount.ToString() + " Player").transform.Find(canvasName).transform.Find("Player " + (playerIndex + 1)).GetComponentInChildren <Text>();
        _an       = mainScore.GetComponent <Animator>();

        _sighting = GetComponent <PlayerSightingHandler>();
    }
Beispiel #3
0
    void Start()
    {
        var playerCount = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players").playerControllers.Length;
        int playerIndex = GameManager.Instance.Players.IndexOf(GetComponent <Player>());
        var canv        = GameObject.Find(playerCount.ToString() + " Player").transform.Find(canvasName).transform.Find("Player" + (playerIndex + 1));

        _skillIcons[0] = canv.Find("Def").GetComponent <Image>();
        _skillIcons[1] = canv.Find("Comp1").GetComponent <Image>();
        _skillIcons[2] = canv.Find("Comp2").GetComponent <Image>();

        GameManager.Instance.OnResetRound  += ResetRound;
        GameManager.Instance.OnChangeScene += ResetRound;
    }
Beispiel #4
0
    void Start()
    {
        _loadingScreen = GameObject.Instantiate(loadingScreenPrefab, new Vector3(8000, 8000, 8000), Quaternion.identity);
        _loadingScreen.gameObject.SetActive(false);

        playerInfo = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players");

        LoadPlayers();
        ApplyTexts();
        ActivateCamera(true);

        fader.gameObject.SetActive(true);

        _inputsAllowed = true;
    }
    void OnGUI()
    {
        if (titleStyle == null)
        {
            titleStyle = new GUIStyle();
        }
        titleStyle.fontStyle = FontStyle.Bold;

        if (reg == null)
        {
            //RegisteredPlayers
            reg = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players");
            if (reg == null || reg.fileRegVersion < RegisteredPlayers.latestRegVersion)
            {
                reg = new RegisteredPlayers();
            }
            else
            {
                regPlayers = reg.playerControllers.ToList();

                allModes = Resources.LoadAll <SO_GameRules>("Scriptable Objects").Select(a => a.name.Substring(9)).ToArray();
                int sceneCount = SceneManager.sceneCountInBuildSettings;
                allStages = new string[sceneCount];
                for (int i = 0; i < sceneCount; i++)
                {
                    allStages[i] = System.IO.Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));
                }

                allStages = allStages.Where(a => a.Split('_')[0] == "Stage").Select(a => a.Split('_')[1]).ToArray();

                currentModeIndex = Mathf.Max(System.Array.IndexOf(allModes, reg.gameMode), 0);
                //currentStageIndex = Mathf.Max(System.Array.IndexOf(allStages, reg.stage.Split('_')[1]), 0);
            }
        }

        EditorGUILayout.LabelField("Game Configuration", titleStyle);
        EditorGUILayout.LabelField("Current Reg version: " + RegisteredPlayers.latestRegVersion);
        if (GUILayout.Button("Show Help"))
        {
            showRegHelp = !showRegHelp;
        }
        if (showRegHelp)
        {
            EditorGUILayout.HelpBox("This is the Game Configuration Window. Here, you can edit the amount of players and their respective controllers, as well as the game mode. Please remember that, when setting up the controllers, you must substract 1 from the actual controller number. For example, write 0 for controller 1", MessageType.Info);
        }
        if (regPlayers == null)
        {
            regPlayers = new List <int> {
                0, 0
            }
        }
        ;
        for (int i = 0; i < regPlayers.Count; i++)
        {
            EditorGUILayout.BeginHorizontal();
            regPlayers[i] = EditorGUILayout.IntField("Player " + (i + 1) + " Controller", regPlayers[i]);
            if (regPlayers.Count > 2)
            {
                if (GUILayout.Button("Remove"))
                {
                    regPlayers.RemoveAt(i);
                }
            }
            EditorGUILayout.EndHorizontal();
        }
        if (regPlayers.Count < 4)
        {
            if (GUILayout.Button("Add"))
            {
                regPlayers.Add(0);
            }
        }

        if (allModes == null)
        {
            allModes = Resources.LoadAll <SO_GameRules>("Scriptable Objects").Select(a => a.name.Substring(9)).ToArray();
        }
        if (modeIndexes == null)
        {
            modeIndexes = new int[allModes.Length];
            for (int i = 0; i < modeIndexes.Length; i++)
            {
                modeIndexes[i] = i;
            }
        }

        currentModeIndex = EditorGUILayout.IntPopup("Mode:", currentModeIndex, allModes, modeIndexes);

        if (allStages == null)
        {
            int sceneCount = SceneManager.sceneCountInBuildSettings;
            allStages = new string[sceneCount];
            for (int i = 0; i < sceneCount; i++)
            {
                allStages[i] = System.IO.Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));
            }

            allStages = allStages.Where(a => a.Split('_')[0] == "Stage").Select(a => a.Split('_')[1]).ToArray();
        }
        if (stageIndexes == null)
        {
            stageIndexes = new int[allStages.Length];
            for (int i = 0; i < stageIndexes.Length; i++)
            {
                stageIndexes[i] = i;
            }
        }

        currentStageIndex = EditorGUILayout.IntPopup("Stage:", currentStageIndex, allStages, stageIndexes);
        Debug.Log("stage: " + currentStageIndex);

        if (GUILayout.Button("Save Game Configuration"))
        {
            reg.playerControllers = new int[regPlayers.Count];
            for (int i = 0; i < regPlayers.Count; i++)
            {
                reg.playerControllers[i] = regPlayers[i];
            }
            reg.gameMode = allModes[currentModeIndex];
            //Fix
            //reg.stage = "Stage_" + allStages[currentStageIndex];

            Serializacion.SaveJsonToDisk(reg, "Registered Players");
        }
    }
}
Beispiel #6
0
    void Awake()
    {
        if (!Application.isEditor)
        {
            Cursor.visible   = false;
            Cursor.lockState = CursorLockMode.Locked;
        }

        _loadingScreen = GameObject.Instantiate(loadingScreenPrefab, new Vector3(8000, 8000, 8000), Quaternion.identity);
        _loadingScreen.gameObject.SetActive(false);

        _winPopup = GameObject.Instantiate(winPopupPrefab, Vector3.zero, Quaternion.identity);
        _winPopup.gameObject.SetActive(false);

        spawns = StageManager.instance.transform.Find("SpawnPoints").GetComponentsInChildren <Transform>().Where(x => x.name != "SpawnPoints").ToArray();

        playerInfo             = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players");
        playerInfo.playerStats = new PlayerStats[playerInfo.playerControllers.Length];
        playerCameras[playerInfo.playerControllers.Length - 2].SetActive(true);
        if (playerInfo.playerControllers.Length == 2)
        {
            for (int i = 0; i < 2; i++)
            {
                Camera c = GameObject.Find("Camera_P" + (i + 1)).GetComponent <Camera>();
                cameraTexturesForTwoPlayers[i].width = 1280;
                c.rect = new Rect(0, 0, 2, 1);
            }
        }
        else
        {
            for (int i = 0; i < 2; i++)
            {
                Camera c = GameObject.Find("Camera_P" + (i + 1)).GetComponent <Camera>();
                cameraTexturesForTwoPlayers[i].width = 640;
                c.rect = new Rect(0, 0, 1, 1);
            }
        }

        //Setting the mode!
        gameRules = Resources.Load("Scriptable Objects/GameMode_" + playerInfo.gameMode) as SO_GameRules;

        //get all the cameras
        var allCams = GameObject.FindObjectsOfType <CamFollow>().ToList();

        Utility.KnuthShuffle(spawns);

        for (int i = 0; i < playerInfo.playerControllers.Length; i++)
        {
            var URLs = Serializacion.LoadJsonFromDisk <CharacterURLs>("Player " + (playerInfo.playerControllers[i] + 1));

            //Dejo los objetos ccomo children del body por cuestiones de carga de los scripts. Assembler no debería generar problemas, ya que su parent objetivo sería el mismo.
            var player = Instantiate(Resources.Load <GameObject>("Prefabs/Bodies/" + URLs.bodyURL), spawns[i].transform.position, Quaternion.identity).GetComponent <Player>();
            var weapon = Instantiate(Resources.Load <GameObject>("Prefabs/Weapons/" + URLs.weaponURL), player.transform.position, Quaternion.identity, player.transform);
            var comp1  = Instantiate(Resources.Load <GameObject>("Prefabs/Skills/Complementary/" + URLs.complementaryURL[0]), player.transform.position, Quaternion.identity, player.transform);
            var comp2  = Instantiate(Resources.Load <GameObject>("Prefabs/Skills/Complementary/" + URLs.complementaryURL[1]), player.transform.position, Quaternion.identity, player.transform);
            var def    = Instantiate(Resources.Load <GameObject>("Prefabs/Skills/Defensive/" + URLs.defensiveURL), player.transform.position, Quaternion.identity, player.transform);

            CharacterAssembler.Assemble(player.gameObject, def, comp1, comp2, weapon);
            player.transform.forward = spawns[i].forward;

            comp1.GetComponent <ComplementarySkillBase>().RegisterInput(0);
            comp2.GetComponent <ComplementarySkillBase>().RegisterInput(1);

            player.gameObject.layer = LayerMask.NameToLayer("Player" + (playerInfo.playerControllers[i] + 1));
            player.gameObject.tag   = "Player " + (playerInfo.playerControllers[i] + 1);
            foreach (Transform t in player.transform)
            {
                t.gameObject.layer = LayerMask.NameToLayer("Player" + (playerInfo.playerControllers[i] + 1));
                t.gameObject.tag   = "Player " + (playerInfo.playerControllers[i] + 1);
            }

            player.Stats.Score  = 0;
            player.lockedByGame = true;

            player.LightsModule.SetPlayerColor(playerColors[playerInfo.playerControllers[i]]);

            CamFollow cam = allCams.Where(x => x.name == "Camera_P" + (i + 1)).First();
            allCams.Remove(cam);

            if (player.ControlModule.playerType == PlayerControlModule.PlayerType.DRONE)
            {
                cam.AssignTarget(player, player.GetCameraOffset());
            }
            else
            {
                var castedControlModule = player.ControlModule as QuadrupedControlModule;
                cam.AssignTarget(player, player.GetCameraOffset(), castedControlModule.HardcodeForCameraForward);
            }
        }

        //disable cams that are not being used
        foreach (var item in allCams)
        {
            item.gameObject.SetActive(false);
        }

        AddEvents();
        UIManager.Instance.Initialize(Players, StartFirstRound, gameRules.pointsToWin[playerInfo.playerControllers.Length - 2]);
    }
Beispiel #7
0
    void LoadPlayers()
    {
        var playerInfo = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players");
        var playerControllersOrdered = playerInfo.playerControllers.OrderByDescending(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].Score).ToArray();
        var playerScoresOrdered      = playerInfo.playerStats.OrderByDescending(y => y.Score).ToArray();

        _players = new GameObject[playerControllersOrdered.Length];

        for (int i = 0; i < playerControllersOrdered.Length; i++)
        {
            var URLs = Serializacion.LoadJsonFromDisk <CharacterURLs>("Player " + (playerControllersOrdered[i] + 1));

            //Dejo los objetos como children del body por cuestiones de carga de los scripts. Assembler no debería generar problemas, ya que su parent objetivo sería el mismo.
            var player = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Bodies/" + URLs.bodyURL), spawnPos[i].position, Quaternion.identity);
            var weapon = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Weapons/" + URLs.weaponURL), player.transform.position, Quaternion.identity, player.transform);
            var comp1  = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Skills/Complementary/" + URLs.complementaryURL[0]), player.transform.position, Quaternion.identity, player.transform);
            var comp2  = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Skills/Complementary/" + URLs.complementaryURL[1]), player.transform.position, Quaternion.identity, player.transform);
            var def    = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Skills/Defensive/" + URLs.defensiveURL), player.transform.position, Quaternion.identity, player.transform);
            var tx     = Instantiate(playerText, player.transform.position, Quaternion.identity, player.transform);

            tx.transform.Rotate(transform.up, 180);

            CharacterAssembler.Assemble(player.gameObject, def, comp1, comp2, weapon);

            player.gameObject.layer = LayerMask.NameToLayer("Player" + (playerControllersOrdered[i] + 1));
            player.gameObject.tag   = "Player " + (playerControllersOrdered[i] + 1);
            foreach (Transform t in player.transform)
            {
                t.gameObject.layer = LayerMask.NameToLayer("Player" + (playerControllersOrdered[i] + 1));
                t.gameObject.tag   = "Player " + (playerControllersOrdered[i] + 1);
            }

            tx.gameObject.layer      = LayerMask.NameToLayer("P1ONLY");
            player.transform.forward = spawnPos[i].forward;
            _players[i] = player;
        }

        _winner = _players.First();

        var l = _players.Length;

        _resetInputs     = new bool[l];
        playerIndexes    = new PlayerIndex[l];
        previousGamePads = new GamePadState[l];
        currentGamePads  = new GamePadState[l];
        for (int i = 0; i < currentGamePads.Length; i++)
        {
            playerIndexes[i]   = (PlayerIndex)playerControllersOrdered[i];
            currentGamePads[i] = GamePad.GetState(playerIndexes[i]);
        }

        for (int i = 0; i < _players.Length; i++)
        {
            var score = playerScoresOrdered[i].Score;
            EndgamePlayerText(_players[i], _players[i].gameObject.tag, score.ToString(), i);
            _resetInputs[i] = false;
        }

        //award, award amount, player, desc
        var awards = FList.Create(Tuple.Create("", 0f, 0, ""));

        mostKills = playerInfo.playerControllers.OrderByDescending(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].Kills).First();
        var killAmount = playerInfo.playerStats.OrderByDescending(y => y.Kills).First().Kills;

        awards += Tuple.Create("Most Kills", (float)killAmount, Array.IndexOf(playerControllersOrdered, mostKills), " kills");

        mostSurvived = playerInfo.playerControllers.OrderByDescending(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].Survived).First();
        var survivedAmount = playerInfo.playerStats.OrderByDescending(y => y.Survived).First().Survived;

        awards += Tuple.Create("Most Survived", (float)survivedAmount, Array.IndexOf(playerControllersOrdered, mostSurvived), "survived");

        mostDamageDealt = playerInfo.playerControllers.OrderByDescending(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].DamageDealt).First();
        var damageDealtAmount = playerInfo.playerStats.OrderByDescending(y => y.DamageDealt).First().DamageDealt;

        awards += Tuple.Create("Most Damage Dealt", damageDealtAmount, Array.IndexOf(playerControllersOrdered, mostDamageDealt), " dmg dealt");

        leastDamageTaken = playerInfo.playerControllers.OrderBy(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].DamageTaken).First();
        var damageTakenAmount = playerInfo.playerStats.OrderBy(y => y.DamageTaken).First().DamageTaken;

        awards += Tuple.Create("Bulletproof", damageTakenAmount, Array.IndexOf(playerControllersOrdered, leastDamageTaken), " dmg taken");

        print("Psycho Killer Award goes to: Player " + (mostKills + 1) + " with " + killAmount + " kills");
        print("Survivor Award goes to: Player " + (mostSurvived + 1) + " with " + survivedAmount + " rounds survived");
        print("Dealer Award goes to: Player " + (mostDamageDealt + 1) + " with " + damageDealtAmount + " damage dealt");
        print("Bulletproof Award goes to: Player " + (leastDamageTaken + 1) + " with " + damageTakenAmount + " damage taken");

        for (int i = 0; i < playerScoresOrdered.Length; i++)
        {
            var playList = awards.Skip(1).Where(x => x.Item3 == i).ToList();
            if (playList.Any())
            {
                foreach (var item in playList)
                {
                    SetAwardsOnPedestal(item);
                }
            }
        }

        HideUnusedPedestals();
    }