コード例 #1
0
ファイル: LastCellMechanics.cs プロジェクト: agdeva8/Ludo
    IEnumerator PushBack2Home(GameObject defeatedPawn)
    {
        cellMetaData.RemovePlayer(defeatedPawn);
        PlayerMetaData defeatedPMetaData = defeatedPawn.GetComponent <PlayerMetaData>();
        GameObject     homeCell          = defeatedPMetaData.homeCell;

        GameObject currCell = defeatedPMetaData.currCell;

        while (currCell != homeCell)
        {
            Vector3 desiredPosition = CreateBoard.NewPiecePosition(currCell);
            defeatedPawn.transform.position = Vector3.Lerp(defeatedPawn.transform.position,

                                                           desiredPosition, 1);

            currCell = currCell.GetComponent <CellMetaData>().GetPrevGameObj(defeatedPMetaData.myTeam);

            if (currCell == null)
            {
                currCell = homeCell;
            }

            // wasnt able to show smooth behvaviour using progress (t) & movementspeed in lerp
            // so used this.
            yield return(new WaitForSeconds(0.05f));
        }

        // Now formally adding defeated pawn to home cell

        homeCell.GetComponent <CellMetaData>().AddPlayer(defeatedPawn);
        runningProcesses--;
    }
コード例 #2
0
        public override void OnCollision(Collision collision, PlayerMetaData sender)
        {
            if (projectile == null)
            {
                Debug.Log("<color=red>Error! Projectile was found to be null upon collision</color>");
            }
            else
            {
                if (hideOnImpact)
                {
                    foreach (Transform item in projectile.instantiatedObject.transform)
                    {
                        item.GetComponent <Renderer>().enabled = false;
                    }
                }
                if (freezeOnImpact)
                {
                    projectile.instantiatedObject.GetComponent <Rigidbody>().isKinematic = true;
                }

                if (disableColliders)
                {
                    foreach (Collider item in projectile.instantiatedObject.GetComponents <Collider>())
                    {
                        item.enabled = false;
                    }
                }

                Destroy(projectile.instantiatedObject, destroyAfter);
            }
        }
コード例 #3
0
ファイル: DataControl.cs プロジェクト: wjacquet/Recoil
    public static void NewGame()
    {
        string dataPath = BuildPath();

        PlayerMetaData player = new PlayerMetaData(
            30,
            30,
            25000,
            "Scenes/GrassyZoneScenes/Hub",
            new[] { -460f, 56f, 0f },
            new bool[SceneManager.sceneCountInBuildSettings],
            new bool[SceneManager.sceneCountInBuildSettings],
            new bool[10] {
            true, false, false, false, false, false, false, false, false, false
        },
            new int[2] {
            0, 0
        },
            0,
            false,
            false,
            false,
            "",
            0);


        BinaryFormatter binaryFormatter = new BinaryFormatter();

        using (FileStream fileStream = File.Open(dataPath, FileMode.OpenOrCreate))
        {
            binaryFormatter.Serialize(fileStream, player);
        }
    }
コード例 #4
0
    void MoveToBase()
    {
        Debug.Log("Adding player to home cell");
        Debug.Log($"Team number is {myTeam}");
        Debug.Log($"pawn number is {myPawn}");

        if (myPawn == -1)
        {
            Debug.LogError("Pawn number for this instantiate is invalid: " +
                           "must be a problem with team number");
        }

        // Setting player color according to team number
        Helper.ChangeColor(gameObject, CustomizedVars.CV.playerColors[myTeam]);

        // Referencing this object in gameobects script;
        GameObjects.GO.players[myTeam, myPawn] = gameObject;

        GameObject homeCell = ClassObjects.Gameobj.homeCells[myTeam].objects[myPawn];

        homeCell.GetComponent <CellMetaData>().players.Clear();
        homeCell.GetComponent <CellMetaData>().AddPlayer(gameObject);

        PlayerMetaData playerMetaData = GetComponent <PlayerMetaData>();

        playerMetaData.homeCell = homeCell;
        playerMetaData.currCell = homeCell;
    }
コード例 #5
0
        private void GatherChanges(MinecraftVersion minBlockVersionNumber, MinecraftVersion maxBlockVersionNumber, int suggestedMaxBlockRequests,
                                   MinecraftVersion minPlayerVersionNumber, MinecraftVersion maxPlayerVersionNumber, int suggestedMaxPlayerRequests,
                                   BlockMetaData[] blocks, PlayerMetaData[] players,
                                   ref BlockMetaData[] blocksResult, ref PlayerMetaData[] playerResult,
                                   out int nBlocks, out int nPlayers,
                                   out int nBlocksLeft, out int nPlayersLeft,
                                   out MinecraftVersion lastBlockUsedVersion, out MinecraftVersion lastPlayerUsedVersion)
        {
            nBlocks = 0;
            var blockRange = new BlockEnumerateRange(blocks);

            GetRangeInfo(blockRange, minBlockVersionNumber, maxBlockVersionNumber, suggestedMaxBlockRequests, out int firstIndex, out nBlocks, out nBlocksLeft, out lastBlockUsedVersion);
            if (nBlocks > 0)
            {
                blocksResult = new BlockMetaData[nBlocks];
                Array.Copy(blocks, firstIndex, blocksResult, 0, nBlocks);
            }

            nPlayers = 0;
            var playerRange = new PlayersEnumerateRange(players);

            GetRangeInfo(playerRange, minPlayerVersionNumber, maxPlayerVersionNumber, suggestedMaxPlayerRequests, out firstIndex, out nPlayers, out nPlayersLeft, out lastPlayerUsedVersion);
            if (nPlayers > 0)
            {
                playerResult = new PlayerMetaData[nPlayers];
                Array.Copy(players, firstIndex, playerResult, 0, nPlayers);
            }
        }
コード例 #6
0
 // Start is called before the first frame update
 void Start() {
     if (PlayerMetaData.GetLastWinner() == "Player1") {
         winnerText.text = "Player 1 Wins!"; 
     }
     if (PlayerMetaData.GetLastWinner() == "Player2") {
         winnerText.text = "Player 2 Wins!"; 
     }
 }
コード例 #7
0
 public static PlayerMetaData FromPlayer(Player player)
 {
     PlayerMetaData result = new PlayerMetaData();
     result.id = player.Id;
     result.room = player.Room;
     result.floor = player.Floor;
     result.username = player.Username;
     result.utcoffset = player.UTCOffset;
     return result;
 }
コード例 #8
0
ファイル: CreateBoard.cs プロジェクト: agdeva8/Ludo
    // [MenuItem("Tools/PlacePiece")]
    private static void PlacePiecesStart()
    {
        playerPiecesParent = new GameObject("Players");
        playerPiecesParent.transform.parent = board.transform;

        playerPieces   = new GameObject[N, 4];
        startHomeCells = new GameObject[N, 4];

        GameObject startHomeCellParent = new GameObject("Start Home Cells");

        startHomeCellParent.transform.parent = board.transform;

        for (int player = 0; player < N; player++)
        {
            for (int i = 0; i < 4; i++)
            {
                playerPieces[player, i] = InstObj(new Vector3(0, 0, 0),
                                                  "PreFabs/PlayerPeice", playerPiecesParent);

                // Creating Home Cell
                startHomeCells[player, i] = InstObj(Vector3.zero, "Prefabs/StartHomeCell", startHomeCellParent);
                // Naming it for future use
                startHomeCells[player, i].name = $"StartHomeCell{player}{i}";
                // Changing its Color
                ChangeColor(startHomeCells[player, i], PlayerColors[player]);
                // Positioning it
                Vector3 origPos = startHomeCells[player, i].transform.position;
                Vector3 newPos  = startHomeCentroid[player];

                float r = 1;
                startHomeCells[player, i].transform.position = new Vector3(
                    newPos.x + r * Mathf.Cos(Mathf.PI / 2 * i),
                    0.01f,
                    newPos.z + r * Mathf.Sin(Mathf.PI / 2 * i));

                // adding meta data
                PlayerMetaData playerMetaData = playerPieces[player, i].GetComponent <PlayerMetaData>();
                playerMetaData.currCell = startHomeCells[player, i];
                playerMetaData.homeCell = startHomeCells[player, i];
                playerMetaData.myTeam   = player;
                playerMetaData.pawnNum  = i;

                startHomeCells[player, i].GetComponent <CellMetaData>().AddPlayer(playerPieces[player, i]);

                // // placing player piece
                // playerPieces[player, i].transform.position = NewPiecePosition(startHomeCells[player, i]);
                // playerPieces[player, i].transform.localRotation = Quaternion.Euler(-90, 0, 0);

                // changing primary attributes
                playerPieces[player, i].name = $"Player{player}{i}";
                ChangeColor(playerPieces[player, i], PlayerColors[player]);
            }
        }
    }
コード例 #9
0
 void OnTriggerEnter(Collider collider)
 {
     if (collider.gameObject.GetComponent <ShipControls>().GetGamePad().ToString() == "Player1")
     {
         PlayerMetaData.SetLastWinner("Player1");
     }
     if (collider.gameObject.GetComponent <ShipControls>().GetGamePad().ToString() == "Player2")
     {
         PlayerMetaData.SetLastWinner("Player2");
     }
     SceneManager.LoadScene(2);
 }
コード例 #10
0
        public static Player ToPlayer(PlayerMetaData player)
        {
            if (player == null)
                return null;

            Player result = new Player();
            result.Id = player.id;
            result.Username = player.username;
            result.Floor = player.floor;
            result.Room = player.room;
            result.UTCOffset = player.utcoffset;
            return result;
        }
コード例 #11
0
        public async Task <PlayerMetaData[]> GetAsync()
        {
            var player = await this.StateManager.GetStateAsync <Dictionary <ActorId, PlayerMetaData> >(_playerTag);

            if (player.Count == 0)
            {
                return(null);
            }

            var resultplayer = new PlayerMetaData[player.Count];

            player.Values.CopyTo(resultplayer, 0);
            return(resultplayer);
        }
コード例 #12
0
        public override void OnCollision(Collision collision, PlayerMetaData sender)
        {
            Vector3 position = AverageCollisionPosition(collision) + offset;

            GameObject aoeColliderObject = new GameObject("--AOE Collider--");

            AOEHelper =
                aoeColliderObject.AddComponent <MonoHelper.AOEImpactable>()
                as MonoHelper.AOEImpactable;

            AOEHelper.SetSettings(this, sender);

            aoeColliderObject.transform.position = position;

            //Instantiate(aoeColliderObject, position , Quaternion.identity);
        }
コード例 #13
0
        public async Task <GenericResponse> Update(ActorId playerAgentID, PlayerMetaData playerData)
        {
            var player = await this.StateManager.GetStateAsync <Dictionary <ActorId, PlayerMetaData> >(_playerTag);

            playerData.version = MinecraftVersion.GetNext();
            if (player.ContainsKey(playerAgentID))
            {
                player[playerAgentID] = playerData;
            }
            else
            {
                player.Add(playerAgentID, playerData);
            }

            await this.StateManager.SetStateAsync(_playerTag, player);

            return(new GenericResponse());
        }
コード例 #14
0
ファイル: PlayerInit.cs プロジェクト: wjacquet/Recoil
 public static void SetPlayer(PlayerMetaData data)
 {
     SceneManager.LoadScene(data.scene);
     loadedUpgradesFound                 = data.upgradesFound;
     scenesVisited                       = data.scenesVisited;
     gunsFound                           = data.gunsFound;
     selectedGuns                        = data.selectedGuns;
     currentGunIndex                     = data.currentGunIndex;
     playerPos                           = new Vector3(data.position[0], data.position[1], data.position[2]);
     SceneManager.sceneLoaded           += OnSceneLoaded;
     PlayerHealth.maxHP                  = data.maxHP;
     PlayerHealth.currHP                 = data.currHP;
     PlayerCurrency.wealth               = data.wealth;
     PlayerAbilities.magnet              = data.magnet;
     PlayerAbilities.flower              = data.flower;
     PlayerAbilities.speed               = data.speed;
     AbilitySelection.currentAbility     = data.currentAbility;
     PlayerHealth.numberOfHealthUpgrades = data.numberOfHealthUpgrades;
 }
コード例 #15
0
        public override void OnCollision(Collider other, PlayerMetaData sender)
        {
            Vector3 playPos = other.transform.position;
            Vector3 sendPos = sender.transform.position;

            foreach (AudioClip sound in toSender)
            {
                AudioSource.PlayClipAtPoint(sound, sendPos, toSenderVolume);
            }

            foreach (AudioClip sound in toImpact)
            {
                AudioSource.PlayClipAtPoint(sound, playPos, toImpactVolume);
            }

            foreach (AudioClip sound in toHitObject)
            {
                AudioSource.PlayClipAtPoint(sound, sender.transform.position, toHitObjectVolume);
            }
        }
コード例 #16
0
ファイル: DataControl.cs プロジェクト: wjacquet/Recoil
    public static void Save()
    {
        string dataPath = BuildPath();

        bool[] newUpgradeIndexes = new bool[SceneManager.sceneCountInBuildSettings];

        Array.Copy(PlayerInit.loadedUpgradesFound, newUpgradeIndexes, PlayerInit.loadedUpgradesFound.Length);
        //print(string.Join(", ", newUpgradeIndexes));

        if (PlayerHealth.sceneIDForUpgrade != -1)
        {
            newUpgradeIndexes[PlayerHealth.sceneIDForUpgrade] = true;
        }

        PlayerMetaData player = new PlayerMetaData(
            PlayerHealth.maxHP,
            PlayerHealth.currHP,
            PlayerCurrency.wealth,
            SceneManager.GetActiveScene().name,
            FindCheckpointPos(),
            newUpgradeIndexes,
            PlayerInit.scenesVisited,
            PlayerInit.gunsFound,
            PlayerInit.selectedGuns,
            PlayerInit.currentGunIndex,
            PlayerAbilities.magnet,
            PlayerAbilities.flower,
            PlayerAbilities.speed,
            AbilitySelection.currentAbility,
            PlayerHealth.numberOfHealthUpgrades
            );

        BinaryFormatter binaryFormatter = new BinaryFormatter();

        using (FileStream fileStream = File.Open(dataPath, FileMode.OpenOrCreate))
        {
            binaryFormatter.Serialize(fileStream, player);
        }
    }
コード例 #17
0
ファイル: RoomTransition.cs プロジェクト: wjacquet/Recoil
    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.name == "obj_player")
        {
            bool[] newUpgradeIndexes = new bool[SceneManager.sceneCountInBuildSettings];

            Array.Copy(PlayerInit.loadedUpgradesFound, newUpgradeIndexes, PlayerInit.loadedUpgradesFound.Length);

            if (PlayerHealth.sceneIDForUpgrade != -1)
            {
                newUpgradeIndexes[PlayerHealth.sceneIDForUpgrade] = true;
            }

            // Build current player metadata
            PlayerMetaData player = new PlayerMetaData(
                PlayerHealth.maxHP,
                PlayerHealth.currHP,
                PlayerCurrency.wealth,
                warpScene,
                new[] { warpPosition.x, warpPosition.y, warpPosition.z },
                newUpgradeIndexes,
                PlayerInit.scenesVisited,
                PlayerInit.gunsFound,
                PlayerInit.selectedGuns,
                PlayerInit.currentGunIndex,
                PlayerAbilities.magnet,
                PlayerAbilities.flower,
                PlayerAbilities.speed,
                AbilitySelection.currentAbility,
                PlayerHealth.numberOfHealthUpgrades
                );

            // Warp player to next scene
            PlayerInit.SetPlayer(player);
        }
    }
コード例 #18
0
 public override void OnCollision(Collision collision, PlayerMetaData sender)
 {
     Spawn(collision);
 }
コード例 #19
0
 public override void OnCollision(Collider other, PlayerMetaData sender)
 {
 }
コード例 #20
0
 public override void OnCollision(Collider other, PlayerMetaData sender)
 {
     //throw new NotImplementedException();
 }