/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { UI.LoadContent(Content, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight); UIClass.LoadContent(Content); UpgradeSystem.LoadContent(Content, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight); WeaponList.LoadContent(Content); ChopperList.LoadContent(Content); EffectsList.LoadContent(Content); EnemyMaker.LoadContent(Content); // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); Level level = new Level(500, 500); Player player = new Player(ChopperList.GetChopper(ChopperType.Training), new Vector2(500, 2000)); //Player player = new Player(ChopperList.GetChopper(0), new Vector2(0, 0)); hud = new Hud(Content.Load <SpriteFont>("hudFont")); camera = new Camera(); //camera.Position = player.PlayerSpriteCenter; camera.Position = player.PlayerCenter; gameManager = new GameManager(level, player); List <Sprite> listOfEnemies = new List <Sprite>(); listOfEnemies.Add(EnemyMaker.GetTurret(TurretType.MGun, new Vector2(0, 0), 0, 0)); listOfEnemies.Add(EnemyMaker.GetTurret(TurretType.MGun, new Vector2(0, 700), 0, 0)); listOfEnemies.Add(EnemyMaker.GetTurret(TurretType.MGun, new Vector2(700, 700), 0, 0)); listOfEnemies.Add(EnemyMaker.GetTurret(TurretType.MGun, new Vector2(700, 0), 0, 0)); listOfEnemies.Add(EnemyMaker.GetTurret(TurretType.Rocket, new Vector2(350, 350), 0, 0)); listOfEnemies.Add(EnemyMaker.GetTurret(TurretType.RocketHoming, new Vector2(800, 800), 0, 0)); listOfEnemies.Add(EnemyMaker.GetTurret(TurretType.ShotGun, new Vector2(500, 500), 3, 1)); listOfEnemies.Add(EnemyMaker.GetTurret(TurretType.ShotGun, new Vector2(250, 450), 5, 0.5f)); level.AddEntity(listOfEnemies, true, true, true); listOfEnemies.Clear(); listOfEnemies.Add(new Building(Content.Load <Texture2D>("building"), new Vector2(1000, 1000))); List <Helipad> listOfHelipads = new List <Helipad>(); listOfHelipads.Add(new Helipad(Content.Load <Texture2D>("Allies\\helipad"), new Vector2(500, 2000))); level.AddLandingPad(listOfHelipads); level.AddEntity(listOfEnemies, true, true, false); missionScreen = new MissionScreen(1, "GameTest", "Yarrr mission is to blow up\nevery turret. Then return\nto the base\n\nWASD - Move \nLeft\\Right arrow - rotate\nSpace - fire \nX and L - land\\lift \nU - upgrade (on helipad)\nP- developer stats\n+ and - - zoom ", graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight, Color.SaddleBrown); GameData.menuState = MenuState.MissionMenu; // TODO: use this.Content to load your game content here }
public virtual void SpawnEntity() { Level.AddEntity(this); var addEntity = McpeAddEntity.CreateObject(); addEntity.entityType = EntityTypeId; addEntity.entityId = EntityId; addEntity.x = KnownPosition.X; addEntity.y = KnownPosition.Y; addEntity.z = KnownPosition.Z; addEntity.yaw = KnownPosition.Yaw; addEntity.pitch = KnownPosition.Pitch; addEntity.metadata = GetMetadata(); addEntity.speedX = (float)Velocity.X; addEntity.speedY = (float)Velocity.Y; addEntity.speedZ = (float)Velocity.Z; Level.RelayBroadcast(addEntity); IsSpawned = true; //McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject(); //mcpeSetEntityData.entityId = EntityId; //mcpeSetEntityData.metadata = GetMetadata(); //Level.RelayBroadcast(mcpeSetEntityData); }
public void Update() { switch (state) { case GameState.LOADING: { if (loadingTask.IsCompleted) { state = GameState.GAME; } } break; case GameState.GAME: { bg.Update(); level.Update(); if (Input.wasPressed(Key.Q)) { Console.WriteLine("Eyo"); level = Levels.CreateLevel1(); level.AddEntity(new Player(bg)); } } break; } }
public override void SpawnEntity() { Level.AddEntity(this); Random random = Level.Random; //double f = 0.7; //float xr = (float)(random.NextDouble() * f + (1.0 - f) * 0.5); //float yr = (float)(random.NextDouble() * f + (1.0 - f) * 0.5); //float zr = (float)(random.NextDouble() * f + (1.0 - f) * 0.5); float xr = 0; float yr = 0; float zr = 0; McpeAddItemEntity mcpeAddItemEntity = McpeAddItemEntity.CreateObject(); mcpeAddItemEntity.entityId = EntityId; mcpeAddItemEntity.item = GetMetadataSlot(); mcpeAddItemEntity.x = KnownPosition.X + xr; mcpeAddItemEntity.y = KnownPosition.Y + yr; mcpeAddItemEntity.z = KnownPosition.Z + zr; mcpeAddItemEntity.speedX = (float)Velocity.X; mcpeAddItemEntity.speedY = (float)Velocity.Y; mcpeAddItemEntity.speedZ = (float)Velocity.Z; Level.RelayBroadcast(mcpeAddItemEntity); IsSpawned = true; }
/// <summary> /// Constructor to use when pipe with plant. /// </summary> /// <param name="texture"> Texture of the pipe.</param> /// <param name="source"> Location of the image.</param> /// <param name="position"> Position in the level</param> /// <param name="level"> The level the pipe is in.</param> /// <param name="content"> The content loader of the game.</param> public Pipe(Texture2D texture, Rectangle source, Vector2 position, Level level, ContentManager content) : base(texture, source, position, 16, 16, true, level) { PlungerEnemy plungerEnemy = new PlungerEnemy(new Vector2(position.X, position.Y - 20), 16, 21, content, level); level.AddEntity(plungerEnemy); }
public override void SpawnEntity() { Level.AddEntity(this); IsSpawned = true; BroadcastSetEntityData(); SpawnToAll(); }
public override void Attack(GameTime gameTime, Level level, bool attackButton, Vector2 direction) { if (Parent == null) { return; } if (!attackButton && direction == Vector2.Zero) { _currentAttackButton = attackButton; level.RemoveEntity(this); return; } if (!level.ContainsEntity(this)) { level.AddEntity(this); } Position = Parent.CenterPosition; direction *= (OptionsManager.CurrentOptions.InvertAim ? 1 : -1); if (direction == Vector2.Zero) { direction = Parent.CurrentDirection * -1; } Angle = (float)(Math.Atan2(direction.X, -direction.Y) + _spriteAngle); if (attackButton && !_currentAttackButton && Parent.Arrows > 0) { Parent.Arrows.Quantity--; SoundManager.PlaySound("bow"); LastShotArrow = new Arrow(direction.Normalized() * -1) { Position = Parent.CenterPosition, Parent = Parent }; level.AddEntity(LastShotArrow); _lastShootDate = gameTime.TotalGameTime; } _currentAttackButton = attackButton; }
public void DeployAttack(SpecialAttack attack) { var direction = Vector2Extension.AngleToVector2(Rotation); attack.Position = Position + direction * Size / 2; attack.ApplyForce(direction * attack.MaxSpeed, instantaneous: true); ApplyForce(-direction * attack.Mass, instantaneous: true); Level.AddEntity(attack); }
/// <summary> /// Drop powerup from hud if there is one. /// </summary> public void DropPowerUp() { if (_powerUp != null) { _powerUp.Position = new Vector2(((_camera.Position.X / _scale) + (SuperPlatformerGame.RESOLUTION_X * 0.5f)), _camera.Position.Y / _scale); _powerUp.OnDrop(); _level.AddEntity(_powerUp); _powerUp = null; } }
public override void Attack(GameTime gameTime, Level level, bool attackButton, Vector2 direction) { var isOnMap = level.ContainsEntity(this); if (!isOnMap) { if (attackButton) { if (direction == Vector2.Zero) { direction = Parent.CurrentDirection; } direction.Normalize(); _maxFlyTime = TimeSpan.FromSeconds(0.5); SoundManager.PlaySound("boomerang"); _flyingBack = false; _direction = direction; _startTime = gameTime.TotalGameTime; Position = Parent.CenterPosition + _direction; level.AddEntity(this); } } else if (Parent != null && direction != Vector2.Zero) { if (_startTime + _maxFlyTime < gameTime.TotalGameTime) { if (Parent.Magic > 1 && !_flyingBack) { _maxFlyTime = TimeSpan.FromSeconds(0.2); Parent.Magic.Quantity--; _startTime = gameTime.TotalGameTime; _flyingBack = false; } else { _flyingBack = true; } } else { _flyingBack = false; } if (!_flyingBack) { _direction = direction; _direction.Normalize(); } } }
public void Drop(Level level, float x, float y, int quantity) { for (var i = 0; i < quantity; i++) { var dropItem = (ItemEntity)ENTITIES.ITEM.Construct(); dropItem.Item = this; dropItem.SpeedX = Rise.Rnd.Next(-50, 50) / 10f; dropItem.SpeedY = Rise.Rnd.Next(-50, 50) / 10f; level.AddEntity(dropItem); dropItem.SetPosition(x, y); } }
public Game(Task loadingTask) { renderer = Renderer.Instance; state = GameState.LOADING; this.loadingTask = loadingTask; loadingTask.Wait(); bg = new Background(2); level = Levels.CreateLevel1(); level.Player = new Player(bg); level.AddEntity(level.Player); }
public override void SpawnEntity() { Level.AddEntity(this); foreach (var i in Level.OnlinePlayers) { var SpawnedBy = i.Wrapper; new SpawnObject(SpawnedBy) { EntityId = EntityId, X = KnownPosition.X, Y = KnownPosition.Y, Z = KnownPosition.Z, Type = ObjectType.ActivatedTNT, Data = 0 }.Write(); } }
public override void Attack(GameTime gameTime, Level level, bool attackButton, Vector2 direction) { if (Parent == null) { return; } direction = Parent.CurrentDirection; if (Math.Abs(direction.X) > Math.Abs(direction.Y)) { if (direction.X > 0) { direction = new Vector2(1, 0); } else { direction = new Vector2(-1, 0); } } else { if (direction.Y > 0) { direction = new Vector2(0, 1); } else { direction = new Vector2(0, -1); } } if (attackButton && !_oldAttackButton && Parent.Magic > 0) { Parent.Magic.Quantity--; SoundManager.PlaySound("fireball"); level.AddEntity(new FireBall(direction) { Position = Parent.CenterPosition, Parent = Parent, MaxFlyTime = MaxFireBallFlyTime }); } _oldAttackButton = attackButton; }
public override void SpawnEntity() { Level.AddEntity(this); foreach (var i in Level.OnlinePlayers) { var SpawnedBy = i.Wrapper; new SpawnObject(SpawnedBy) { EntityId = EntityId, X = KnownPosition.X, Y = KnownPosition.Y, Z = KnownPosition.Z, Type = ObjectType.Snowball, Data = Shooter.EntityId, Pitch = (byte)KnownPosition.Pitch, Yaw = (byte)KnownPosition.Yaw }.Write(); } }
public override void SpawnEntity() { Ttl = 9999999; Level.AddEntity(this); var addEntity = new SpawnObject(Shooter.Wrapper) { EntityId = EntityId, X = KnownPosition.X, Y = KnownPosition.Y, Z = KnownPosition.Z, Type = ObjectType, Info = Shooter.EntityId, Pitch = (byte)KnownPosition.Pitch, Yaw = (byte)KnownPosition.Yaw, VelocityX = (short)Velocity.X, VelocityY = (short)Velocity.Y, VelocityZ = (short)Velocity.Z, }; Level.BroadcastPacket(addEntity); }
public async Task <bool> FireLaser(CancellationToken cancellation) { if (MainWeaponAmmo.IsEmpty) { return(false); } var direction = Vector2Extension.AngleToVector2(Rotation); var laser = new Laser(this, Momentum, Position, direction); laser.ApplyAcceleration(direction * laser.MaxSpeed, instantaneous: true); ApplyForce(-direction * laser.Mass, instantaneous: true); MainWeaponAmmo.Quantity--; SoundManager.PlaySound("Shoot01"); Level.AddEntity(laser); await UpdateContext.Delay(MainWeaponDelay); return(true); }
public void NewLevel(int width, int height, int enemies) { level = new Level(width, height, levelNumber + 2); level.AddEntity(player); level.Player = player; player.Health++; player.Position = new Vector2(3 * Tile.Size + (player.Width / 2), 3 * Tile.Size - (player.Height / 2) + Tile.Size / 2); player.Bullets.Clear(); camera = new Camera(this); camera.Focus = player; camera.Bounds = new Rectangle(0, 0, level.Width * Tile.Size, level.Height * Tile.Size); level.Camera = camera; level.Initialize(); for (int y = 3; y < 5; y++) { for (int x = 3; x < 5; x++) { level.Tiles[x + y * width].Color = Color.SaddleBrown; } } }
public override void SpawnEntity() { lock (_spawnSync) { if (IsSpawned) { throw new Exception("Invalid state. Tried to spawn projectile more than one time."); } Level.AddEntity(this); IsSpawned = true; if (BroadcastMovement) { //LastUpdatedTime = DateTime.UtcNow; BroadcastMoveAndMotion(); } } }
public override bool DoStage(Level level) { if (count > 0) { cooldown -= Time.DeltaTime; if (cooldown <= 0.0f) { Enemy e = Enemies.CreateEnemy(name); left = !left; if (left) { e.transform.position = new Vector2(0, 0); dest = new Vector2(dest); } else { e.transform.position = new Vector2(1, 0); dest = new Vector2(dest); cooldown = 0.5f; } e.transform.Rotate(180); dest = new Vector2(dest); dest.Sub(0, 0.1f); e.SetState(new FlyInState(new SpinState(), dest, 1.0f)); level.AddEntity(e); count--; } return(false); } else { return(true); } }
public override void SpawnEntity() { Level.AddEntity(this); foreach (var i in Level.GetOnlinePlayers) { var spawnedBy = i.Wrapper; new SpawnObject(spawnedBy) { EntityId = EntityId, X = KnownPosition.X, Y = KnownPosition.Y, Z = KnownPosition.Z, Type = ObjectType.ItemStack }.Write(); new EntityMetadata(spawnedBy) { EntityId = EntityId, Type = ObjectType.ItemStack, Data = Item }.Write(); } }
public void Load(string filename) { Player = PlayerEntity.Load("adccda30-36f7-4574-ae18-9a2eb48fe271.player"); //Player = PlayerEntity.Load(Player); var fileStream = new FileStream(filename, FileMode.Open); var formatter = new BinaryFormatter(); try { // The player is not loaded from the level file. Level = (Level)formatter.Deserialize(fileStream); Level.AddEntity(Player); Console.WriteLine($"Level loaded from '{filename}'."); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { fileStream.Close(); } }
private void HandlePlayerDropItem(McpeDropItem message) { if (!Inventory.HasItem(message.item)) { return; } ItemStack itemStack = message.item.Value; Item item = ItemFactory.GetItem(itemStack.Id, itemStack.Metadata); var itemEntity = new ItemEntity(Level, item) { KnownPosition = { X = KnownPosition.X, Y = KnownPosition.Y, Z = KnownPosition.Z }, Count = itemStack.Count }; Level.AddEntity(itemEntity); }
public override void SpawnEntity() { lock (_spawnSync) { if (IsSpawned) { throw new Exception("Invalid state. Tried to spawn projectile more than one time."); } Level.AddEntity(this); IsSpawned = true; if (Shooter == null) { var addEntity = McpeAddEntity.CreateObject(); addEntity.entityType = EntityTypeId; addEntity.entityId = EntityId; addEntity.x = KnownPosition.X; addEntity.y = KnownPosition.Y; addEntity.z = KnownPosition.Z; addEntity.yaw = KnownPosition.Yaw; addEntity.pitch = KnownPosition.Pitch; addEntity.metadata = GetMetadata(); addEntity.speedX = (float)Velocity.X; addEntity.speedY = (float)Velocity.Y; addEntity.speedZ = (float)Velocity.Z; Level.RelayBroadcast(addEntity); McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject(); mcpeSetEntityData.entityId = EntityId; mcpeSetEntityData.metadata = GetMetadata(); Level.RelayBroadcast(mcpeSetEntityData); } else { { var addEntity = McpeAddEntity.CreateObject(); addEntity.entityType = EntityTypeId; addEntity.entityId = EntityId; addEntity.x = KnownPosition.X; addEntity.y = KnownPosition.Y; addEntity.z = KnownPosition.Z; addEntity.yaw = KnownPosition.Yaw; addEntity.pitch = KnownPosition.Pitch; addEntity.metadata = GetMetadata(); addEntity.speedX = (float)Velocity.X; addEntity.speedY = (float)Velocity.Y; addEntity.speedZ = (float)Velocity.Z; Level.RelayBroadcast(Shooter, addEntity); McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject(); mcpeSetEntityData.entityId = EntityId; mcpeSetEntityData.metadata = GetMetadata(); Level.RelayBroadcast(Shooter, mcpeSetEntityData); } { MetadataDictionary metadata = GetMetadata(); metadata[17] = new MetadataLong(0); var addEntity = McpeAddEntity.CreateObject(); addEntity.entityType = EntityTypeId; addEntity.entityId = EntityId; addEntity.x = KnownPosition.X; addEntity.y = KnownPosition.Y; addEntity.z = KnownPosition.Z; addEntity.yaw = KnownPosition.Yaw; addEntity.pitch = KnownPosition.Pitch; addEntity.metadata = metadata; addEntity.speedX = (float)Velocity.X; addEntity.speedY = (float)Velocity.Y; addEntity.speedZ = (float)Velocity.Z; Shooter.SendPackage(addEntity); McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject(); mcpeSetEntityData.entityId = EntityId; mcpeSetEntityData.metadata = metadata; Shooter.SendPackage(mcpeSetEntityData); } } } }
void ClientUpdate() { Packet p = client.GetNextReceived(); switch (clientState) { case ClientState.CONNECTING: { if (!client.Connected) { Debug.WriteLine("Sending connecting"); client.Send(new Connecting()); } else { if (p != null) { if (p.Code == Code.LevelGenerationData) { LevelGenData data = (LevelGenData)p; seed = data.Seed; level = new LevelGenerator(seed, data.Size, false); //Create Player player = new Player(0, 0, key); //Create UI ui = new PlayerUI(player); //Add Player level.AddEntity(player); //Init level level.Init(); client.Send(new AddOtherPlayer(player.GetX(), player.GetY())); clientState = ClientState.ENTITY_EXCHANGE; } else { Debug.WriteLine("Failed connection!"); //Go back to menu if (Frame.CanGoBack) { Frame.GoBack(); } } } } break; } case ClientState.ENTITY_EXCHANGE: { while (p != null) { if (p.Code == Code.OtherPlayerCreationData) { AddOtherPlayer otherPlayer = (AddOtherPlayer)p; OtherPlayer other = new OtherPlayer(otherPlayer.X, otherPlayer.Y, artificial); level.AddEntity(other); p = client.GetNextReceived(); if (p.Code != Code.OtherPlayerID) { Debug.WriteLine("Something is extremely wrong"); } else { other.AddID(((OtherPlayerID)p).ID); } } else if (p.Code == Code.OtherPlayerID) { OtherPlayerID playerID = (OtherPlayerID)p; player.AddID(playerID.ID); clientState = ClientState.READY; } p = client.GetNextReceived(); } break; } case ClientState.READY: { while (p != null) { if (p.Code == Code.Pong) { gotpong = true; Pong po = (Pong)p; Debug.WriteLine("Last ping: " + (watch.ElapsedMilliseconds - po.Time) + " ms"); } else if (p.Code == Code.EntityXYCorrection) { level.AddCorrection((EntityCorrection)p); } else if (p.Code == Code.Input) { artificial.Update((Input)p); } p = client.GetNextReceived(); } client.Send(new Input(key.up, key.down, key.left, key.right)); break; } } }
public override void SpawnEntity() { Level.AddEntity(this); if (Shooter == null) { var addEntity = McpeAddEntity.CreateObject(); addEntity.entityType = EntityTypeId; addEntity.entityId = EntityId; addEntity.x = KnownPosition.X; addEntity.y = KnownPosition.Y; addEntity.z = KnownPosition.Z; addEntity.yaw = KnownPosition.Yaw; addEntity.pitch = KnownPosition.Pitch; //addEntity.metadata = GetMetadata(); addEntity.speedX = (float)Velocity.X; addEntity.speedY = (float)Velocity.Y; addEntity.speedZ = (float)Velocity.Z; Level.RelayBroadcast(addEntity); IsSpawned = true; McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject(); mcpeSetEntityData.entityId = EntityId; mcpeSetEntityData.metadata = GetMetadata(); Level.RelayBroadcast(mcpeSetEntityData); } else { { var addEntity = McpeAddEntity.CreateObject(); addEntity.entityType = EntityTypeId; addEntity.entityId = EntityId; addEntity.x = KnownPosition.X; addEntity.y = KnownPosition.Y; addEntity.z = KnownPosition.Z; addEntity.yaw = KnownPosition.Yaw; addEntity.pitch = KnownPosition.Pitch; //addEntity.metadata = GetMetadata(); addEntity.speedX = (float)Velocity.X; addEntity.speedY = (float)Velocity.Y; addEntity.speedZ = (float)Velocity.Z; Level.RelayBroadcast(Shooter, addEntity); McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject(); mcpeSetEntityData.entityId = EntityId; mcpeSetEntityData.metadata = GetMetadata(); Level.RelayBroadcast(Shooter, mcpeSetEntityData); } { MetadataDictionary metadata = GetMetadata(); metadata[17] = new MetadataLong(0); var addEntity = McpeAddEntity.CreateObject(); addEntity.entityType = EntityTypeId; addEntity.entityId = EntityId; addEntity.x = KnownPosition.X; addEntity.y = KnownPosition.Y; addEntity.z = KnownPosition.Z; addEntity.yaw = KnownPosition.Yaw; addEntity.pitch = KnownPosition.Pitch; //addEntity.metadata = metadata; addEntity.speedX = (float)Velocity.X; addEntity.speedY = (float)Velocity.Y; addEntity.speedZ = (float)Velocity.Z; Shooter.SendPackage(addEntity); McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject(); mcpeSetEntityData.entityId = EntityId; mcpeSetEntityData.metadata = metadata; Shooter.SendPackage(mcpeSetEntityData); } } }
public static void Update() { while ((incmsg = Client.ReadMessage()) != null) { switch (incmsg.MessageType) { case NetIncomingMessageType.Data: { byte headStringMessage = incmsg.ReadByte(); switch (headStringMessage) { case (byte)NetworkAction.Connect: //CONNECT { recbytespersecond += incmsg.LengthBytes; int arraylength = incmsg.ReadInt32(); EntityPacket receiveE = EntityPacket.Deserialize(incmsg.ReadBytes(arraylength)); Player e = new Player(); if (level.getClientPlayer().ID == 0 || level.getClientPlayer().ID == receiveE.ID.Value) { break; } e.ApplyPacket(receiveE); Debug.WriteLine(receiveE.Name.Value); level.AddEntity(e); Global.chat.WriteLine(new graphics.ui.ChatMessage("Network", Color.Blue, receiveE.Name.Value + " joined!", Color.Gray)); } break; case (byte)NetworkAction.ConnectResponse: //CONNECT { int id = incmsg.ReadInt32(); level.getClientPlayer().ID = id; Game1.online = true; Global.chat.WriteLine(new graphics.ui.ChatMessage("Network", Color.Blue, "Connected to server with ID: " + id, Color.Gray)); } break; case (byte)NetworkAction.Disconnect: //Disconnect { int id = incmsg.ReadInt32(); //TODO REMOVE ENTITY foreach (var e in level.mobs) { if (e != level.getClientPlayer() && e.ID == id) { Global.chat.WriteLine(new graphics.ui.ChatMessage("Network", Color.Blue, e.name + " left!", Color.Gray)); level.remEntity(e); break; } } } break; case (byte)NetworkAction.Deny: //CONNECTION DENY { //EMPTY } break; case (byte)NetworkAction.Chat: //CHAT { recbytespersecond += incmsg.LengthBytes; int id = incmsg.ReadInt32(); string message = incmsg.ReadString(); foreach (var e in level.mobs) { if (e.ID == id) { message = Global.CheckChars(Global.PixelFont, message); Global.chat.WriteLine(new ChatMessage(e.name, Color.Blue, message, Color.White)); e.Say(message); break; } } } break; case (byte)NetworkAction.AddEntity: //ADDENTITY { recbytespersecond += incmsg.LengthBytes; int arraylength = incmsg.ReadInt32(); EntityPacket receiveE = EntityPacket.Deserialize(incmsg.ReadBytes(arraylength)); Entity e = (Entity)Activator.CreateInstance(receiveE.EntityType.Value); e.ApplyPacket(receiveE); level.AddEntity(e); } break; case (byte)NetworkAction.RefreshEntity: //REFRESHENTITY { int arraylength = incmsg.ReadInt32(); EntityPacket receiveE = EntityPacket.Deserialize(incmsg.ReadBytes(arraylength)); if (receiveE.ID.Value == level.getClientPlayer().ID) //CLIENT PLAYER { break; } foreach (var e in level.entities) { if (e.ID == receiveE.ID.Value) //FIND ENTITY { //receiveE.Position.Value = e.Position; //TEMPORARY SOLUTION TO NOT SYNC POSITION DIRECTLY e.ApplyPacket(receiveE); break; } } } break; case (byte)NetworkAction.RefreshEntities: //ADDENTITY { recbytespersecond += incmsg.LengthBytes; level.clearEntities(); int counter = incmsg.ReadInt32(); //ENTITIES COUNT for (int i = 0; i < counter; i++) { int length = incmsg.ReadInt32(); //ARRAYLENGTH byte[] packetbytes = incmsg.ReadBytes(length); EntityPacket entitypacket = EntityPacket.Deserialize(packetbytes); if (entitypacket.ID.Value == level.getClientPlayer().ID) { continue; } Entity ent = (Entity)Activator.CreateInstance(entitypacket.EntityType.Value); ent.ApplyPacket(entitypacket); level.AddEntity(ent); } } break; } } break; case NetIncomingMessageType.DiscoveryResponse: { string ip = incmsg.SenderEndPoint.ToString(); string name = incmsg.ReadString(); string players = incmsg.ReadString(); Debug.WriteLine(("Found server at " + ip + " name: " + name)); foreach (var server in servers) { if (server.ip == ip) { return; } } servers.Add(new ListMenuElement(name, ip, players)); break; } } recbytespersecond += incmsg.LengthBytes; Client.Recycle(incmsg); } //INCOMING MESSAGES if (!Game1.online) { return; } outmsg = Client.CreateMessage(); outmsg.Write((byte)NetworkAction.RefreshEntity); //REFRESH CLIENT PLAYER EntityPacket packet = new EntityPacket(level.getClientPlayer(), level.getClientPlayer().EntityPacket); packet.MoveTo.Value = level.getClientPlayer().Position; byte[] objectArray = packet.Serialize(true); //Convert Object to bytearray outmsg.Write(objectArray.Length); //SEND LENGTH OF ARRAY outmsg.Write(objectArray); //SEND ARRAY ITSELF semdcbytespersecond += outmsg.LengthBytes; Client.SendMessage(outmsg, NetDeliveryMethod.ReliableOrdered); start = DateTime.Now.TimeOfDay; if (start >= end) { RecievingBytesPerSecond = recbytespersecond; SendingBytesPerSecond = semdcbytespersecond; semdcbytespersecond = 0; recbytespersecond = 0; end = start + TimeSpan.FromSeconds(1); } }
public virtual void Destroy() { Level.RemoveEntity(this); Level.AddEntity(new Explosion(this.Position, Level, 1, 1000f, Color)); }
public virtual void SpawnEntity() { Level.AddEntity(this); IsSpawned = true; }
public virtual void SpawnEntity() { Level.AddEntity(this); }