Beispiel #1
0
        void Start()
        {
            base.Init();


            ourTransform        = transform.parent;
            CurrentHealthPoints = CurrentPlayer.Instance.HealthPoints;
            WaitHalfSecond      = new WaitForSeconds(WaitTimeForDig);
            invulCD             = new WaitForSeconds(invulTime);

            for (int i = 0; i < theEquipments.Count; i++)
            {
                if (theEquipments[i] is SmallBombData)
                {
                    TheCurrentItem = theEquipments[i];
                }
            }

            UiHolder theHolder = GameObject.Find("GameSceneController").GetComponent <UiHolder>();

            ourPlayerHealthBar = GetComponent <HealthBar>();

            HP            = theHolder.HP;
            NumberOfBombs = theHolder.AmountOfBombs;
            BombType      = theHolder.TypeOfBomb;
            UpdateUI(TheCurrentItem);
            //UpdateHealth(CurrentHealthPoints);
            if (this.player_id == DarkRiftAPI.id)
            {
                StartCoroutine(UpdatePosition());
            }

            tilePosBlocker = new Vector2(-1, -1);
        }
        void ReceiveData(ushort senderID, byte tag, ushort subject, object data)
        {
            //When any data is received it will be passed here,
            //we then need to process it if it's got a tag of 0 and, if
            //so, create an object. This is where you'd handle most adminy
            //stuff like that.

            //Ok, if data has a Controller tag then it's for us
            if (tag == NetworkingTags.Controller)
            {
                //If a player has joined tell them to give us a player
                //Also internally increase the amount of players.
                if (subject == NetworkingTags.ControllerSubjects.JoinMessage)
                {
                    CurrentPlayer.Instance.AmountOfPlayers++;
                    int color = (int)data;
                    MinersBombMinersServerPlugin.MinersBombMinersServerPlugin.PlayerType player = (MinersBombMinersServerPlugin.MinersBombMinersServerPlugin.PlayerType)color;
                    if (ourColor == MinersBombMinersServerPlugin.MinersBombMinersServerPlugin.PlayerType.None)
                    {
                        ourColor = player;
                    }
                    if (senderID != DarkRiftAPI.id)
                    {
                        DarkRiftAPI.SendMessageToID(senderID, NetworkingTags.Controller, NetworkingTags.ControllerSubjects.ReplyToJoin, ourColor);
                    }
                    else
                    {
                        DarkRiftAPI.SendMessageToServer(NetworkingTags.Server, NetworkingTags.ServerSubjects.GetMoneyForPlayer, DarkRiftAPI.id);
                    }
                    color -= 1;

                    KillTrackSystem.Instance.AddPlayer(senderID, new PlayerStats());
                    ConnectDisconnect.instance.AddPlayer(color, senderID);
                    int ThisPlayerColor = ConnectDisconnect.instance.GetPlayerColor(DarkRiftAPI.id);
                    if (ThisPlayerColor != -1)
                    {
                        CurrentPlayer.Instance.HPIconSprite = StartingSprite[ThisPlayerColor];
                    }
                    CurrentPlayer.Instance.UpdateHealthPointInGame();
                }

                else if (subject == NetworkingTags.ControllerSubjects.SpawnPlayer)
                {
                }
                else if (subject == NetworkingTags.ControllerSubjects.ReadyToStartGame)
                {
                    PlayerReady++;
                }
                else if (subject == NetworkingTags.ControllerSubjects.ReplyToJoin)
                {
                    CurrentPlayer.Instance.AmountOfPlayers++;
                    MinersBombMinersServerPlugin.MinersBombMinersServerPlugin.PlayerType player = (MinersBombMinersServerPlugin.MinersBombMinersServerPlugin.PlayerType)data;
                    int color = (int)player;
                    color -= 1;
                    ConnectDisconnect.instance.AddPlayer(color, senderID);
                    KillTrackSystem.Instance.AddPlayer(senderID, new PlayerStats());
                }
                else if (subject == NetworkingTags.ControllerSubjects.YouWin)
                {
                    CheckWinLose(WinLoseDraw.Win);
                }
                else if (subject == NetworkingTags.ControllerSubjects.Draw)
                {
                    CheckWinLose(WinLoseDraw.Draw);
                }
                else if (subject == NetworkingTags.ControllerSubjects.YouLose)
                {
                    CheckWinLose(WinLoseDraw.Lose);
                }
                else if (subject == NetworkingTags.ControllerSubjects.GameOver)
                {
                    RestartButton.SetActive(true);
                }
                else if (subject == NetworkingTags.ControllerSubjects.GetMoneyForPlayer)
                {
                    CurrentPlayer.Instance.Money = (int)data;
                }
                else if (subject == NetworkingTags.ControllerSubjects.StartGame)
                {
                    List <MinersBombMinersServerPlugin.PacketUseTypeID> PacketPlayerData = (List <MinersBombMinersServerPlugin.PacketUseTypeID>)data;
                    for (int i = 0; i < PacketPlayerData.Count; i++)
                    {
                        Vector2 SpawnPoint = Vector2.zero;
                        RuntimeAnimatorController theColoredPlayer = PlayerAnimators[0];
                        switch (PacketPlayerData[i].thePlayerType)
                        {
                        case 1:
                            theColoredPlayer = PlayerAnimators[0];
                            SpawnPoint       = new Vector2(1, 1);
                            break;

                        case 2:
                            SpawnPoint       = new Vector2(theTileMap.size_x - 2, theTileMap.size_z - 2);
                            theColoredPlayer = PlayerAnimators[1];
                            break;

                        case 3:
                            SpawnPoint       = new Vector2(theTileMap.size_x - 2, 1);
                            theColoredPlayer = PlayerAnimators[2];
                            break;

                        case 4:
                            SpawnPoint       = new Vector2(1, theTileMap.size_z - 2);
                            theColoredPlayer = PlayerAnimators[3];
                            break;

                        default:
                            Debug.LogWarning("No such player type found! Logged " + PacketPlayerData[i].thePlayerType);
                            break;
                        }
                        GameObject clone;
                        if (PacketPlayerData[i].client_id == DarkRiftAPI.id)
                        {
                            clone = Lean.LeanPool.Spawn(PlayerPrefab, theTileMap.ConvertTileToWorld(SpawnPoint), Quaternion.identity);
                            Player thePlayer = clone.GetComponentInChildren <Player>();
                            thePlayer.player_id              = PacketPlayerData[i].client_id;
                            thePlayer.theController          = this;
                            thePlayer.theEquipments          = CurrentPlayer.Instance.AmountOfEquipments;
                            CurrentPlayer.Instance.ThePlayer = thePlayer;
                            UiHolder  theHolder = GetComponent <UiHolder>();
                            HealthBar healthBar = clone.GetComponentInChildren <HealthBar>();
                            healthBar.damageImage = theHolder.DamageHealth;
                        }
                        else
                        {
                            clone = Lean.LeanPool.Spawn(PlayerDummy, theTileMap.ConvertTileToWorld(SpawnPoint), Quaternion.identity);
                            DummyPlayer thePlayer = clone.GetComponentInChildren <DummyPlayer>();
                            thePlayer.id = PacketPlayerData[i].client_id;
                        }
                        clone.GetComponentInChildren <Animator>().runtimeAnimatorController = theColoredPlayer;
                    }
                    StartCoroutine(StartCountdown());
                }
                else if (subject == NetworkingTags.ControllerSubjects.DisconnectYou)
                {
                    DarkRiftAPI.Disconnect();
                }
            }
            else if (tag == NetworkingTags.Server)
            {
                if (subject == NetworkingTags.ServerSubjects.PlayerRestarting)
                {
                    Debug.Log("Here data is " + data);
                }
            }
        }