public void Draw_Navi_GL(NetNavi_Type Navi) { PointF S = ScreenScroll; Reset_Matrix_GL(); GL.MatrixMode(MatrixMode.Texture); GL.LoadIdentity(); GL.Scale(1f / (Navi.SpriteSheet.Width / Navi.SpriteSize.X), 1f / (Navi.SpriteSheet.Height / Navi.SpriteSize.Y), 1); GL.Translate(Navi.Sprite.X, Navi.Sprite.Y, 0); GL.BindTexture(TextureTarget.Texture2D, GLNaviTexture[(int)Navi.GLSpriteSheetName]); RectangleF r = new RectangleF(); r.X = ((Navi.Location_Last.X + Navi.Location.X) / 2f) - S.X; r.Y = ((Navi.Location_Last.Y + Navi.Location.Y) / 2f) - S.Y; r.Width = Navi.SpriteSize.X * Navi.Scale; r.Height = Navi.SpriteSize.Y * Navi.Scale; if (Navi.FaceLeft == true) { Draw_Sprite(r, true); } else { Draw_Sprite(r); } }
private void Update_Physics_GL_Top(NetNavi_Type navi) { //Top int Top = (int)(navi.Navi_Location().Top / 16); int Left = (int)(navi.Navi_Location().Left / 16); int Right = (int)(navi.Navi_Location().Right / 16); //always does hightmap on tile colleciton for (int x = Left; x <= Right; x++) { RectangleF rct = navi.Navi_Location(); if (stage.CollisionMap.ContainsKey(new Point(x, Top))) { StageCollisionTile tile = stage.CollisionMap[new Point(x, Top)]; tile.Active = true; //set to Top if (rct.Top - (Top * 16 + 16) >= -1) { navi.Set_LocationY(Top * 16 + 16 + navi.Navi_Location().Height); navi.Speed.Y = 0; navi.StepMovement.Y = 0; } } } }
private void Update_Physics_GL_Left(NetNavi_Type navi) { //Top int Top = (int)((navi.Navi_Location().Top + 2) / 16); int Bottom = (int)((navi.Navi_Location().Bottom - 2) / 16); int Left = (int)(navi.Navi_Location().Left / 16); //always does hightmap on tile colleciton for (int y = Top; y <= Bottom; y++) { RectangleF rct = navi.Navi_Location(); if (stage.CollisionMap.ContainsKey(new Point(Left, y))) { StageCollisionTile tile = stage.CollisionMap[new Point(Left, y)]; tile.Active = true; if (rct.Bottom - (y * 16 + 16 - tile.HeightRight) >= 4) { //set to Left if (rct.Left - (Left * 16 + 16) >= -1) { navi.Set_LocationX(Left * 16 + 16); navi.Speed.X = 0; navi.StepMovement.X = 0; } } } } }
public byte[] GetFromNavi(NetNavi_Type navi) { byte[] b = new byte[Navi_Main.COMPACT_BUFFER_SIZE]; int index = 0; BitConverter.GetBytes(navi.Program_Step).CopyTo(b, index); index += 8; BitConverter.GetBytes(navi.NAVIEXEID).CopyTo(b, index); index += 8; BitConverter.GetBytes((int)navi.NaviID).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Location.X).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Location.Y).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Speed.X).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Speed.Y).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Scale).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Sprite.X).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Sprite.Y).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Health).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Energy).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.Activated_Ability).CopyTo(b, index); index += 4; BitConverter.GetBytes(navi.OnGround).CopyTo(b, index); index += 1; BitConverter.GetBytes(navi.FaceLeft).CopyTo(b, index); index += 1; BitConverter.GetBytes(navi.Running).CopyTo(b, index); index += 1; BitConverter.GetBytes(navi.Jumping).CopyTo(b, index); index += 1; BitConverter.GetBytes(navi.HasJumped).CopyTo(b, index); index += 1; BitConverter.GetBytes(navi.Shooting).CopyTo(b, index); index += 1; BitConverter.GetBytes(navi.WallGrabing).CopyTo(b, index); index += 1; BitConverter.GetBytes(navi.Dashing).CopyTo(b, index); index += 1; BitConverter.GetBytes(navi.HasDashed).CopyTo(b, index); index += 1; return(b); }
private void initialiseNaviClient(Client peer, Navi_Name_ID NaviID, ulong NAVIEXEID) { NetNavi_Type navi = Navi_resources.Get_Data(NaviID, NAVIEXEID); navi.Initialised = true; navi.Program_Step = NaviData.Host_Navi.Program_Step; NaviData.Client_Navi[peer.Name] = navi; }
private void changePeerName(string name, string newName) { Client temp = peers[name]; NetNavi_Type tempNavi = NaviData.Client_Navi[name]; temp.Name = newName; peers.Remove(name); peers.Add(newName, temp); NaviData.Client_Navi.Remove(name); NaviData.Client_Navi.Add(newName, tempNavi); Console.WriteLine("Changed " + name + " to " + newName); }
private bool packet_NaviUpdate(Client peer, NetNavi_Type navi) { try { byte[] buffer = new byte[Navi_Main.COMPACT_BUFFER_SIZE]; navi.get_netBuffer().CopyTo(buffer, 0); peer.Write((byte)Headers.NaviUpdate); peer.WriteByteArray(buffer); peer.Flush(); //Console.WriteLine("Peer Update Sent to: " + peer.Name); return(true); } catch (SocketException) { Console.WriteLine("Could not send Packet"); disconnectPeer(peer); return(false); } }
private void Update_Physics_GDI_Bounds(NetNavi_Type navi) { //Bounds if (navi.FaceLeft == true) { if (navi.Navi_Location().Left <= Screen.PrimaryScreen.WorkingArea.Left) { navi.Location.X = Screen.PrimaryScreen.WorkingArea.Left - (navi.GetSize().X - navi.GetHitBox().Right); navi.Speed.X = 0; } } else { if (navi.Navi_Location().Left <= Screen.PrimaryScreen.WorkingArea.Left) { navi.Location.X = Screen.PrimaryScreen.WorkingArea.Left - navi.GetHitBox().Left; navi.Speed.X = 0; } } if (navi.FaceLeft == true) { if (navi.Navi_Location().Right >= Screen.PrimaryScreen.WorkingArea.Right) { navi.Location.X = Screen.PrimaryScreen.WorkingArea.Right - (navi.GetSize().X - navi.GetHitBox().Left); navi.Speed.X = 0; } } else { if (navi.Navi_Location().Right >= Screen.PrimaryScreen.WorkingArea.Right) { navi.Location.X = Screen.PrimaryScreen.WorkingArea.Right - navi.GetHitBox().Right; navi.Speed.X = 0; } } if (navi.Navi_Location().Bottom > Screen.PrimaryScreen.WorkingArea.Bottom) { navi.Location.Y = Screen.PrimaryScreen.WorkingArea.Bottom - navi.GetHitBox().Bottom; } if (navi.Navi_Location().Bottom == Screen.PrimaryScreen.WorkingArea.Bottom) { navi.OnGround = true; navi.Speed.Y = 0; } else { navi.OnGround = false; } }
public void Initialise(NetNavi_Type Navi) { mnuHideNavi = new ToolStripMenuItem("Hide Navi"); mnuSep1 = new ToolStripSeparator(); mnuExit = new ToolStripMenuItem("Close"); MainMenu = new ContextMenuStrip(); MainMenu.Items.AddRange(new ToolStripItem[] { mnuHideNavi, mnuSep1, mnuExit }); tray = new NotifyIcon(); tray.Icon = Navi.Icon; tray.ContextMenuStrip = MainMenu; tray.Text = Navi.Navi_Display_Name + " Tray Icon Service"; tray.Visible = true; }
private void Update_Physics_GL_Bounds(NetNavi_Type navi) { bool OnGround = false; if (navi.Navi_Location().Left < 0) { navi.Set_LocationX(0); navi.Speed.X = 0; navi.StepMovement.X = 0; } if (navi.Navi_Location().Right > stage.Bounds.Width) { navi.Set_LocationX(stage.Bounds.Width - navi.Navi_Location().Width); navi.Speed.X = 0; navi.StepMovement.X = 0; } if (navi.Navi_Location().Bottom > stage.Bounds.Height) { navi.Location.Y = stage.Bounds.Height - navi.GetHitBox().Bottom; } if (navi.Navi_Location().Bottom == stage.Bounds.Height) { OnGround = true; navi.Speed.Y = 0; navi.StepMovement.Y = 0; } //Top bounds if (navi.Navi_Location().Top < 0) { navi.Location.Y = 0 - navi.GetHitBox().Top; navi.Speed.Y = 0; navi.StepMovement.Y = 0; } //CollisionMap foreach (StageCollisionTile tile in stage.CollisionMap.Values) { tile.Active = false; } Update_Physics_GL_Left(navi); Update_Physics_GL_Right(navi); Update_Physics_GL_Top(navi); Update_Physics_GL_Bottom(navi, OnGround); }
private void Update_Physics_Projectiles_Hit_Host(Projectiles_Type p, NetNavi_Type navi) { if (p.Owner != "Host") { Point point = new Point((int)p.Location.X, (int)p.Location.Y); if (navi.Navi_Location().Contains(point)) { if (p.Speed.X < 0) { navi.Speed.X -= 15; } else { navi.Speed.X += 15; } Projectile_List.Remove(p); } } }
public Navi_Main(int Navi_Name_ID, ulong NAVIEXEID) { Host_Navi = Navi_resources.Get_Data((Navi_Name_ID)Navi_Name_ID, NAVIEXEID); }
private void Update_Physics_GL_Bottom(NetNavi_Type navi, bool OnGround) { //Bottom int Top = (int)(navi.Navi_Location().Top / 16); int Bottom = (int)(navi.Navi_Location().Bottom / 16); int Left = (int)(navi.Navi_Location().Left / 16); int Right = (int)(navi.Navi_Location().Right / 16); //always does hightmap on tile colleciton for (int y = Top; y <= Bottom; y++) { for (int x = Left; x <= Right; x++) { //int x;//, y; //x = Right;// y = Bottom; RectangleF rct = navi.Navi_Location(); if (stage.CollisionMap.ContainsKey(new Point(x, y))) { StageCollisionTile tile = stage.CollisionMap[new Point(x, y)]; tile.Active = true; //Slope collision with a center tile float point, pointL, pointR, ratioL, ratioR; point = 16; if (x != Left && x != Right) { if (tile.HeightLeft > tile.HeightRight) { point = tile.HeightLeft; } else { point = tile.HeightRight; } } else //Slope collision with leftmost or rightmost tile { pointL = 16; pointR = 16; ratioR = (navi.Navi_Location().Right - x * 16) / 16; ratioL = (navi.Navi_Location().Left - x * 16) / 16; if (ratioL >= 0 && ratioL <= 1) { pointL = tile.HeightLeft + (tile.HeightRight - tile.HeightLeft) * ratioL; } if (ratioR >= 0 && ratioR <= 1) { pointR = tile.HeightLeft + (tile.HeightRight - tile.HeightLeft) * ratioR; } if (pointL < pointR) { point = pointL; } else { point = pointR; } } //set to ground if (rct.Bottom > (y * 16) + 16 - point) { if (rct.Bottom - (y * 16) - (16 - point) <= 4) { if (navi.Navi_Location().Top < (y * 16 + (16 - point))) { navi.Set_LocationY(y * 16 + (16 - point)); navi.Speed.Y = 0; navi.StepMovement.Y = 0; OnGround = true; } } } if (navi.Navi_Location().Bottom + 1 >= (y * 16) + 16 - point) { OnGround = true; } } navi.OnGround = OnGround; } } }
private void Update_Physics_Navi(NetNavi_Type navi) { //Friction if (navi.OnGround == true) { navi.Speed.X -= navi.Speed.X * stage.GroundFriction.X; navi.Speed.Y -= navi.Speed.Y * stage.GroundFriction.Y; } else { navi.Speed.X -= navi.Speed.X * stage.AirFriction.X; navi.Speed.Y -= navi.Speed.Y * stage.AirFriction.Y; } //Gravity //if (navi.OnGround == false) //{ navi.Speed.Y = navi.Speed.Y + stage.Gravity.Y; navi.Speed.X = navi.Speed.X + stage.Gravity.X; //} //Host_Navi.Speed.Y = Host_Navi.Speed.Y + Gravity.Y //PointF vector = new PointF(navi.Speed.X * navi.Scale, navi.Speed.Y * navi.Scale); navi.StepMovement = new PointF(navi.Speed.X * navi.Scale, navi.Speed.Y * navi.Scale); float x, y; //1 by 1 movement do { if (navi.StepMovement.X > 0) { if (navi.StepMovement.X > 1) { navi.StepMovement.X--; x = 1; } else { navi.StepMovement.X = 0; x = navi.StepMovement.X; } } else if (navi.StepMovement.X < -1) { navi.StepMovement.X++; x = -1; } else { navi.StepMovement.X = 0; x = navi.StepMovement.X; } if (navi.StepMovement.Y > 0) { if (navi.StepMovement.Y > 1) { navi.StepMovement.Y--; y = 1; } else { navi.StepMovement.Y = 0; y = navi.StepMovement.Y; } } else if (navi.StepMovement.Y < -1) { navi.StepMovement.Y++; y = -1; } else { navi.StepMovement.Y = 0; y = navi.StepMovement.Y; } navi.Location.X += x; navi.Location.Y += y; if (!GLOn) { Update_Physics_GDI_Bounds(navi); } else { Update_Physics_GL_Bounds(navi); } } while (navi.StepMovement.X != 0 || navi.StepMovement.Y != 0); navi.Location_Last = navi.Location; }
public static void Set_Correct_Animation(ref NetNavi_Type Navi) { switch (Navi.NaviID) { case Navi_Name_ID.Vex: if (Navi.OnGround == true) { if (Navi.Running == true) { if (Navi.Dashing == true) { if (!(Navi.Current_Animation == Animation_Name_Enum.Vex_Dash_Start)) { Navi.set_Animation(Animation_Name_Enum.Vex_Dash_Start); } } else { Navi.HasDashed = false; if (!(Navi.Current_Animation == Animation_Name_Enum.Vex_Runing)) { Navi.set_Animation(Animation_Name_Enum.Vex_Runing); } } } else { if (Navi.HasDashed == true) { if (!(Navi.Current_Animation == Animation_Name_Enum.Vex_Dash_End)) { Navi.set_Animation(Animation_Name_Enum.Vex_Dash_End); } Navi.HasDashed = false; } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Vex_Standing)) { if (Navi.Current_Animation == Animation_Name_Enum.Vex_Dash_End) { if (Navi.Ani_Current.Finished == true) { Navi.set_Animation(Animation_Name_Enum.Vex_Standing); } } else { Navi.set_Animation(Animation_Name_Enum.Vex_Standing); } } } } } else { Navi.HasDashed = false; if (!(Navi.Current_Animation == Animation_Name_Enum.Vex_Jumping)) { Navi.set_Animation(Animation_Name_Enum.Vex_Jumping); } } break; case Navi_Name_ID.Raven: if (Navi.OnGround == true) { if (Navi.Running == true) { if (!(Navi.Current_Animation == Animation_Name_Enum.Raven_Runing)) { Navi.set_Animation(Animation_Name_Enum.Raven_Runing); } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Raven_Standing)) { Navi.set_Animation(Animation_Name_Enum.Raven_Standing); } } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Raven_Jumping)) { Navi.set_Animation(Animation_Name_Enum.Raven_Jumping); } } break; case Navi_Name_ID.Barnabus: if (Navi.OnGround == true) { if (Navi.Running == true) { if (!(Navi.Current_Animation == Animation_Name_Enum.Barnabus_Runing)) { Navi.set_Animation(Animation_Name_Enum.Barnabus_Runing); } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Barnabus_Standing)) { Navi.set_Animation(Animation_Name_Enum.Barnabus_Standing); } } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Barnabus_Jumping)) { Navi.set_Animation(Animation_Name_Enum.Barnabus_Jumping); } } break; case Navi_Name_ID.Rebel: if (Navi.OnGround == true) { if (Navi.Running == true) { if (!(Navi.Current_Animation == Animation_Name_Enum.Rebel_Runing)) { Navi.set_Animation(Animation_Name_Enum.Rebel_Runing); } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Rebel_Standing)) { Navi.set_Animation(Animation_Name_Enum.Rebel_Standing); } } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Rebel_Jumping)) { Navi.set_Animation(Animation_Name_Enum.Rebel_Jumping); } } break; case Navi_Name_ID.Zen: if (Navi.OnGround == true) { if (Navi.Running == true) { if (Navi.Dashing == true) { if (!(Navi.Current_Animation == Animation_Name_Enum.Zen_Dash)) { Navi.set_Animation(Animation_Name_Enum.Zen_Dash); } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Zen_Runing)) { Navi.set_Animation(Animation_Name_Enum.Zen_Runing); } } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Zen_Standing)) { Navi.set_Animation(Animation_Name_Enum.Zen_Standing); } } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.Zen_Jumping)) { Navi.set_Animation(Animation_Name_Enum.Zen_Jumping); } } break; case Navi_Name_ID.DC24: if (Navi.OnGround == true) { if (Navi.Running == true) { if (!(Navi.Current_Animation == Animation_Name_Enum.DC24_Runing)) { Navi.set_Animation(Animation_Name_Enum.DC24_Runing); } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.DC24_Standing)) { Navi.set_Animation(Animation_Name_Enum.DC24_Standing); } } } else { if (!(Navi.Current_Animation == Animation_Name_Enum.DC24_Jumping)) { Navi.set_Animation(Animation_Name_Enum.DC24_Jumping); } } break; } }
public static NetNavi_Type Get_Data(Navi_Name_ID Navi_Name, ulong NAVIEXEID) { NetNavi_Type N = new NetNavi_Type(); switch (Navi_Name) { case Navi_Name_ID.Junker: N.Navi_Display_Name = "Junker"; N.HitBox = new Rectangle(0, 0, 35, 27); N.SpriteSheet = Net_Navis.Resource1.Junker; N.GLSpriteSheetName = GLNaviSpriteName.Junker; N.Icon = Net_Navis.Resource1.Rebel_Icon; N.SpriteSize = new Point(35, 27); N.HealthMax = 10; N.EnergyMax = 10; N.Weight = 10; N.GroundSpeed = 0f; N.AirSpeed = 0f; N.DashSpeed = 0; N.Acrobatics = 0; break; case Navi_Name_ID.Raven: N.Navi_Display_Name = "Raven"; N.HitBox = new Rectangle(10, 22, 26, 26); N.SpriteSheet = Net_Navis.Resource1.Raven; N.GLSpriteSheetName = GLNaviSpriteName.Raven; N.Icon = Net_Navis.Resource1.Raven_Icon; N.SpriteSize = new Point(48, 48); N.HealthMax = 100; N.EnergyMax = 100; N.Weight = 50; N.GroundSpeed = 0.5f; N.AirSpeed = 0.15f; N.DashSpeed = 1; N.Acrobatics = 15; N.ShootPoint = new Point(40, 33); break; case Navi_Name_ID.Vex: N.Navi_Display_Name = "Vex"; N.HitBox = new Rectangle(11, 18, 29, 30); N.SpriteSheet = Net_Navis.Resource1.Vex; N.GLSpriteSheetName = GLNaviSpriteName.Vex; N.Icon = Net_Navis.Resource1.Vex_Icon; N.SpriteSize = new Point(48, 48); N.HealthMax = 100; N.EnergyMax = 100; N.Weight = 25; N.GroundSpeed = 0.5f; N.AirSpeed = 0.1f; N.DashSpeed = 2; N.Acrobatics = 10; N.ShootPoint = new Point(37, 34); break; case Navi_Name_ID.Barnabus: N.Navi_Display_Name = "Barnabus"; N.HitBox = new Rectangle(3, 5, 27, 27); N.SpriteSheet = Net_Navis.Resource1.Barnabus; N.GLSpriteSheetName = GLNaviSpriteName.Barabus; N.Icon = Net_Navis.Resource1.Barnabus_Icon; N.SpriteSize = new Point(32, 32); N.HealthMax = 100; N.EnergyMax = 100; N.Weight = 50; N.GroundSpeed = 0.5f; N.AirSpeed = 0.1f; N.DashSpeed = 1; N.Acrobatics = 10; break; case Navi_Name_ID.Rebel: N.Navi_Display_Name = "Rebel"; N.HitBox = new Rectangle(13, 22, 22, 26); N.SpriteSheet = Net_Navis.Resource1.Rebelpullsheet; N.GLSpriteSheetName = GLNaviSpriteName.Rebel; N.Icon = Net_Navis.Resource1.Rebel_Icon; N.SpriteSize = new Point(48, 48); N.HealthMax = 100; N.EnergyMax = 100; N.Weight = 30; N.GroundSpeed = 0.5f; N.AirSpeed = 0.1f; N.DashSpeed = 1; N.Acrobatics = 10; break; case Navi_Name_ID.Zen: N.Navi_Display_Name = "Zen"; N.HitBox = new Rectangle(15, 21, 19, 27); N.SpriteSheet = Net_Navis.Resource1.Zen; N.GLSpriteSheetName = GLNaviSpriteName.Zen; N.Icon = Net_Navis.Resource1.Zen_Icon; N.SpriteSize = new Point(48, 48); N.HealthMax = 100; N.EnergyMax = 100; N.Weight = 15; N.GroundSpeed = 0.8f; N.AirSpeed = 0.1f; N.DashSpeed = 2; N.Acrobatics = 10; N.ShootPoint = new Point(35, 37); break; case Navi_Name_ID.DC24: N.Navi_Display_Name = "DC24"; N.HitBox = new Rectangle(18, 9, 34, 49); N.SpriteSheet = Net_Navis.Resource1.DC24; N.GLSpriteSheetName = GLNaviSpriteName.DC24; N.Icon = Net_Navis.Resource1.DC24_Icon; N.SpriteSize = new Point(64, 64); N.HealthMax = 100; N.EnergyMax = 100; N.Weight = 15; N.GroundSpeed = 0.2f; N.AirSpeed = 0.1f; N.DashSpeed = 0.3f; N.Acrobatics = 10; N.ShootPoint = new Point(51, 29); break; } N.NaviID = Navi_Name; N.NAVIEXEID = NAVIEXEID; N.Location = new PointF(0, 0); N.Sprite = new Point(0, 0); return(N); }