public static void HandleGameEvent(byte eventID, Packet p, NetworkPlayer player)
{
switch ((GameEvents)eventID)
{
case GameEvents.Player_Drop_Item:
ServerItem inHand = player.Inventory.GetPlayerItemInHand();
if (inHand == null)
break;
player.DropItem();
break;
case GameEvents.Player_Use_Item:
short x = p.ReadShort();
short y = p.ReadShort();
ServerItem itemInHand = player.Inventory.GetPlayerItemInHand();
if (itemInHand == null) break;
itemInHand.OnItemUsed(x, y, player);
break;
case GameEvents.Player_Use_Block:
x = p.ReadShort();
y = p.ReadShort();
Block b = GetBlockAt(x, y).Block;
b.OnBlockUsed(x, y, player);
break;
case GameEvents.Player_Pickup_Block:
x = p.ReadShort();
y = p.ReadShort();
if (player.PClass is PlayerClassDestroyer) {
if (Math.Abs(player.EntityPosition.X / BlockSize - (float)(x)) < 2 && Math.Abs(player.EntityPosition.Y / BlockSize - (float)(y)) < 2)
((PlayerClassDestroyer)player.PClass).PickupBlock(new Vector2(x, y));
}
break;
case GameEvents.Player_Place_Block:
if (player.PClass is PlayerClassDestroyer)
{
((PlayerClassDestroyer)player.PClass).PlaceBlock();
}
break;
case GameEvents.Player_Inventory_Selection_Change:
player.SetPlayerEquippedSlot(p.ReadByte());
player.SendEquippedItemUpdate();
break;
case GameEvents.Player_Chat:
bool teamChat = p.ReadBool();
string chatText = p.ReadString();
ServerConsole.Log(player.PlayerName + ": " + chatText);
Packet1SCGameEvent pack = new Packet1SCGameEvent(GameEvents.Player_Chat, (byte)player.PlayerID, (bool)teamChat, chatText);
ServerNetworkManager.SendPacket(pack);
break;
case GameEvents.Player_Change_Name:
string newName = p.ReadString();
if (newName.Length > 0)
{
player.PlayerName = newName;
pack = new Packet1SCGameEvent(GameEvents.Player_Change_Name, (byte)player.PlayerID, newName);
ServerNetworkManager.SendPacket(pack);
}
break;
case GameEvents.Player_Choose_Team:
int team = p.ReadByte();
if (team != 0 && team != 1) return;
if (team == player.PlayerTeam) return;
player.PlayerTeam = team;
GameMode.OnPlayerChooseTeam(player, team);
player.HurtPlayer(10000);
Packet newP = new Packet1SCGameEvent(GameEvents.Player_Choose_Team, (byte)player.PlayerID, (byte)team);
ServerNetworkManager.SendPacket(newP);
break;
}
}