public override void Fire() { base.Fire(); //if can fire if (FireTimer <= 0) { BombInstance b = new BombInstance(Owner.UID, Owner.AimAngle, Owner.Core + Helper.PolarToVector2(BombThrowRadius, Owner.AimAngle, 1, 1)); MainGame.dm.Projectiles.Add(b); MainGame.dm.Mailman.SendBombCreate(b); Gui.CrosshairFireExpand = CrosshairFireExpand; //two kinds of recoil MainGame.Camera.Center += Helper.PolarToVector2(CameraRecoil * MainGame.rand.Next(CameraRecoilRandMin, CameraRecoilRandMax), Owner.AimAngle + (float)Math.PI, 1, 1); ((ClientPlayer)Owner).holdDistance = ArmRecoil; Ammo--; //auto reload if (Ammo == 0) if (ReloadTimer < 0) ReloadTimer = ReloadSpeed; FireTimer = FireSpeed; } }
public override void Fire() { base.Fire(); //if can fire if (FireTimer <= 0) { BombInstance b = new BombInstance(Owner.UID, Owner.AimAngle, Owner.Core + Helper.PolarToVector2(BombThrowRadius, Owner.AimAngle, 1, 1)); MainGame.dm.Projectiles.Add(b); MainGame.dm.Mailman.SendBombCreate(b); Gui.CrosshairFireExpand = CrosshairFireExpand; //two kinds of recoil MainGame.Camera.Center += Helper.PolarToVector2(CameraRecoil * MainGame.rand.Next(CameraRecoilRandMin, CameraRecoilRandMax), Owner.AimAngle + (float)Math.PI, 1, 1); ((ClientPlayer)Owner).holdDistance = ArmRecoil; Ammo--; //auto reload if (Ammo == 0) { if (ReloadTimer < 0) { ReloadTimer = ReloadSpeed; } } FireTimer = FireSpeed; } }
public void SendBombCreate(BombInstance b) { NetOutgoingMessage outGoingMessage = client.CreateMessage(); outGoingMessage.Write("BOMB"); outGoingMessage.Write(b.Pos.X); outGoingMessage.Write(b.Pos.Y); outGoingMessage.Write(b.Angle); client.SendMessage(outGoingMessage, NetDeliveryMethod.ReliableOrdered); }
private void HandleBombCreate(BombInstance b, long uid) { Actor shooter = ((Actor)dm.GetPlayerWithUID(uid)); MainGame.dm.Projectiles.Add(b); }
private void HandleAGameMessage(NetIncomingMessage msg) { string messageType = msg.ReadString(); switch (messageType) { case "LIFE": long UID_LIFE = msg.ReadInt64(); int hp = msg.ReadInt32(); HandleLifeMessage(UID_LIFE, hp); break; case "NAME": long UID_NAME = msg.ReadInt64(); string newName = msg.ReadString(); HandleNameMessage(UID_NAME, newName); break; case "POS": //Update a player's position long UID_POS = msg.ReadInt64(); float xPos = msg.ReadFloat(); float yPos = msg.ReadFloat(); int facing = msg.ReadInt32(); float aimAngle = msg.ReadFloat(); HandlePosMessage(UID_POS, xPos, yPos, facing, aimAngle); break; case "JOIN": //Add a player long UID_JOIN = msg.ReadInt64(); HandleJoinMessage(UID_JOIN); break; case "CHAT": //Add chat long UID_CHAT = msg.ReadInt64(); string message = msg.ReadString(); HandleChatMessage(UID_CHAT, message); break; case "PART": //Remove a player long UID_PART = msg.ReadInt64(); HandlePartMessage(UID_PART); break; case "INFO": //Recieved when server has completed sending all newbie initialization break; case "BULLET": long UID_BULLET = msg.ReadInt64(); float xBULLET = msg.ReadFloat(); float yBULLET = msg.ReadFloat(); float BULLETangle = msg.ReadFloat(); Bullet b = new Bullet(UID_BULLET, BULLETangle, new Vector2f(xBULLET, yBULLET)); HandleBulletCreate(b, UID_BULLET); break; case "RESPAWN": long UID_RESPAWN = msg.ReadInt64(); HandleRespawnMessage(UID_RESPAWN); break; case "COIN": //long UID_COIN = msg.ReadInt64(); float xCOIN = msg.ReadFloat(); float yCOIN = msg.ReadFloat(); int countCOIN = msg.ReadInt32(); HandleCoinCreate(countCOIN, xCOIN, yCOIN); break; case "SWITCHWEAPON": long UID_WEPSWITCH = msg.ReadInt64(); int WEAPONID = msg.ReadInt32(); HandleNetPlayerWeaponSwitch(UID_WEPSWITCH, WEAPONID); break; case "KILLER": long UID_VICTIM = msg.ReadInt64(); long UID_KILLER = msg.ReadInt64(); HandleKillerMessage(UID_VICTIM, UID_KILLER); break; case "LOOT": Console.WriteLine("LOOT Recieved"); int LOOTseed = msg.ReadInt32(); Console.WriteLine(LOOTseed); Random rand = new Random(LOOTseed); MainGame.dm.GameObjects.Add(new TreasureBox(new Vector2f(rand.Next(40, 1600), 180))); break; case "EMOTE": long UID_EMOTE = msg.ReadInt64(); string EMOTE_TYPE = msg.ReadString(); MainGame.dm.GameObjects.Add(new EmoteBubble(EMOTE_TYPE, MainGame.dm.GetPlayerWithUID(UID_EMOTE))); ; break; case "BOMB": long UID_EXPLOSIVE = msg.ReadInt64(); float xEXP = msg.ReadFloat(); float yEXP = msg.ReadFloat(); float EXPangle = msg.ReadFloat(); BombInstance bomb = new BombInstance(UID_EXPLOSIVE, EXPangle, new Vector2f(xEXP, yEXP)); HandleBombCreate(bomb, UID_EXPLOSIVE); break; case "TIME": float TIME_MESSAGE = msg.ReadFloat(); HandleTimeMessage(TIME_MESSAGE); break; case "MODEL": Console.WriteLine("Model"); long UID_MODEL = msg.ReadInt64(); string MODEL_STR = msg.ReadString(); Console.WriteLine(MODEL_STR); HandleModel(UID_MODEL, MODEL_STR); break; case "GOLDCOUNT": long UID_GOLDCOUNT = msg.ReadInt64(); int goldCount = msg.ReadInt32(); HandleGoldCountMessage(UID_GOLDCOUNT, goldCount); break; case "LANDMINE": long UID_MINEOWNER = msg.ReadInt64(); float xMINE = msg.ReadFloat(); float yMINE = msg.ReadFloat(); int MINE_ID = msg.ReadInt32(); HandleLandMineMessage(UID_MINEOWNER, xMINE, yMINE, MINE_ID); break; case "LANDMINE_TRIGGER": int LANDMINEID = msg.ReadInt32(); HandleLandMineTriggerMessage(LANDMINEID); break; case "GENERATOR": long UID_GENOWNER = msg.ReadInt64(); float xGEN = msg.ReadFloat(); float yGEN = msg.ReadFloat(); int type = msg.ReadInt32(); DateTime when = new DateTime(msg.ReadInt64()); HandleGeneratorMessage(xGEN, yGEN, type, when); break; default: Console.WriteLine("Unrecognized Game Message Recieved: {0}\n{1}", msg.ToString(), messageType); break; } }
private void HandleAGameMessage(NetIncomingMessage msg) { string messageType = msg.ReadString(); switch (messageType) { case "LIFE": long UID_LIFE = msg.ReadInt64(); int hp = msg.ReadInt32(); HandleLifeMessage(UID_LIFE, hp); break; case "NAME": long UID_NAME = msg.ReadInt64(); string newName = msg.ReadString(); HandleNameMessage(UID_NAME, newName); break; case "POS": //Update a player's position long UID_POS = msg.ReadInt64(); float xPos = msg.ReadFloat(); float yPos = msg.ReadFloat(); int facing = msg.ReadInt32(); float aimAngle = msg.ReadFloat(); HandlePosMessage(UID_POS, xPos, yPos, facing, aimAngle); break; case "JOIN": //Add a player long UID_JOIN = msg.ReadInt64(); HandleJoinMessage(UID_JOIN); break; case "CHAT": //Add chat long UID_CHAT = msg.ReadInt64(); string message = msg.ReadString(); HandleChatMessage(UID_CHAT, message); break; case "PART": //Remove a player long UID_PART = msg.ReadInt64(); HandlePartMessage(UID_PART); break; case "INFO": //Recieved when server has completed sending all newbie initialization break; case "BULLET": long UID_BULLET = msg.ReadInt64(); float xBULLET = msg.ReadFloat(); float yBULLET = msg.ReadFloat(); float BULLETangle = msg.ReadFloat(); Bullet b = new Bullet(UID_BULLET, BULLETangle, new Vector2f(xBULLET, yBULLET)); HandleBulletCreate(b, UID_BULLET); break; case "RESPAWN": long UID_RESPAWN = msg.ReadInt64(); HandleRespawnMessage(UID_RESPAWN); break; case "COIN": //long UID_COIN = msg.ReadInt64(); float xCOIN = msg.ReadFloat(); float yCOIN = msg.ReadFloat(); int countCOIN = msg.ReadInt32(); HandleCoinCreate(countCOIN, xCOIN, yCOIN); break; case "SWITCHWEAPON": long UID_WEPSWITCH = msg.ReadInt64(); int WEAPONID = msg.ReadInt32(); HandleNetPlayerWeaponSwitch(UID_WEPSWITCH, WEAPONID); break; case "KILLER": long UID_VICTIM = msg.ReadInt64(); long UID_KILLER = msg.ReadInt64(); HandleKillerMessage(UID_VICTIM, UID_KILLER); break; case "LOOT": Console.WriteLine("LOOT Recieved"); int LOOTseed = msg.ReadInt32(); Console.WriteLine(LOOTseed); Random rand = new Random(LOOTseed); MainGame.dm.GameObjects.Add(new TreasureBox(new Vector2f(rand.Next(40, 1600), 180))); break; case "EMOTE": long UID_EMOTE = msg.ReadInt64(); string EMOTE_TYPE = msg.ReadString(); MainGame.dm.GameObjects.Add(new EmoteBubble(EMOTE_TYPE, MainGame.dm.GetPlayerWithUID(UID_EMOTE)));; break; case "BOMB": long UID_EXPLOSIVE = msg.ReadInt64(); float xEXP = msg.ReadFloat(); float yEXP = msg.ReadFloat(); float EXPangle = msg.ReadFloat(); BombInstance bomb = new BombInstance(UID_EXPLOSIVE, EXPangle, new Vector2f(xEXP, yEXP)); HandleBombCreate(bomb, UID_EXPLOSIVE); break; case "TIME": float TIME_MESSAGE = msg.ReadFloat(); HandleTimeMessage(TIME_MESSAGE); break; case "MODEL": Console.WriteLine("Model"); long UID_MODEL = msg.ReadInt64(); string MODEL_STR = msg.ReadString(); Console.WriteLine(MODEL_STR); HandleModel(UID_MODEL, MODEL_STR); break; case "GOLDCOUNT": long UID_GOLDCOUNT = msg.ReadInt64(); int goldCount = msg.ReadInt32(); HandleGoldCountMessage(UID_GOLDCOUNT, goldCount); break; case "LANDMINE": long UID_MINEOWNER = msg.ReadInt64(); float xMINE = msg.ReadFloat(); float yMINE = msg.ReadFloat(); int MINE_ID = msg.ReadInt32(); HandleLandMineMessage(UID_MINEOWNER, xMINE, yMINE, MINE_ID); break; case "LANDMINE_TRIGGER": int LANDMINEID = msg.ReadInt32(); HandleLandMineTriggerMessage(LANDMINEID); break; case "GENERATOR": long UID_GENOWNER = msg.ReadInt64(); float xGEN = msg.ReadFloat(); float yGEN = msg.ReadFloat(); int type = msg.ReadInt32(); DateTime when = new DateTime(msg.ReadInt64()); HandleGeneratorMessage(xGEN, yGEN, type, when); break; default: Console.WriteLine("Unrecognized Game Message Recieved: {0}\n{1}", msg.ToString(), messageType); break; } }