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); } } }