public void DrawPoison() { byte poisoncount = 0; if (Poison != PoisonType.None) { if (Poison.HasFlag(PoisonType.Green)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.Green); poisoncount++; } if (Poison.HasFlag(PoisonType.Red)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.Red); poisoncount++; } if (Poison.HasFlag(PoisonType.Bleeding)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.DarkRed); poisoncount++; } if (Poison.HasFlag(PoisonType.Slow)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.Purple); poisoncount++; } if (Poison.HasFlag(PoisonType.Stun) || Poison.HasFlag(PoisonType.Dazed)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.Yellow); poisoncount++; } if (Poison.HasFlag(PoisonType.Blindness)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.MediumVioletRed); poisoncount++; } if (Poison.HasFlag(PoisonType.Frozen)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.Blue); poisoncount++; } if (Poison.HasFlag(PoisonType.Paralysis) || Poison.HasFlag(PoisonType.LRParalysis)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.Gray); poisoncount++; } if (Poison.HasFlag(PoisonType.DelayedExplosion)) { DXManager.Draw(DXManager.PoisonDotBackground, new Rectangle(0, 0, 6, 6), new Vector3((float)(DisplayRectangle.X + 7 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 21), 0.0F), Color.Black); DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 4, 4), new Vector3((float)(DisplayRectangle.X + 8 + (poisoncount * 5)), (float)(DisplayRectangle.Y - 20), 0.0F), Color.Orange); poisoncount++; } } }
private void OnBeforeDraw() { if (!Parent.Visible) { return; } MouseMove -= UpdateBigMapCoordinates; BigMapRecord currentRecord; if (!GameScene.MapInfoList.TryGetValue(ParentDialog.TargetMapIndex, out currentRecord)) { return; } ParentDialog.CurrentRecord = currentRecord; int index = currentRecord.MapInfo.BigMap; if (index <= 0) { return; } MouseMove += UpdateBigMapCoordinates; Size = Libraries.MiniMap.GetSize(index); Rectangle viewRect = new Rectangle(0, 0, Math.Min(568, Size.Width), Math.Min(380, Size.Height)); viewRect.X = 14 + (568 - viewRect.Width) / 2; viewRect.Y = 52 + (380 - viewRect.Height) / 2; Location = viewRect.Location; Size = viewRect.Size; BigMap_MouseCoordsProcessing_OffsetX = DisplayLocation.X; BigMap_MouseCoordsProcessing_OffsetY = DisplayLocation.Y; ScaleX = Size.Width / (float)currentRecord.MapInfo.Width; ScaleY = Size.Height / (float)currentRecord.MapInfo.Height; viewRect.Location = new Point( (int)(ScaleX * MapObject.User.CurrentLocation.X) - viewRect.Width / 2, (int)(ScaleY * MapObject.User.CurrentLocation.Y) - viewRect.Height / 2); if (viewRect.Right >= Size.Width) { viewRect.X = Size.Width - viewRect.Width; } if (viewRect.Bottom >= Size.Height) { viewRect.Y = Size.Height - viewRect.Height; } if (viewRect.X < 0) { viewRect.X = 0; } if (viewRect.Y < 0) { viewRect.Y = 0; } Libraries.MiniMap.Draw(index, DisplayLocation, Size, Color.FromArgb(255, 255, 255)); int startPointX = (int)(viewRect.X / ScaleX); int startPointY = (int)(viewRect.Y / ScaleY); var map = GameScene.Scene.MapControl; if (ParentDialog.TargetMapIndex == map.Index) { float x; float y; for (int i = MapControl.Objects.Count - 1; i >= 0; i--) { MapObject ob = MapControl.Objects[i]; if (ob.Race == ObjectType.Item || ob.Dead || ob.Race == ObjectType.Spell || ob.ObjectID == MapObject.User.ObjectID) { continue; } x = ((ob.CurrentLocation.X - startPointX) * ScaleX) + DisplayLocation.X; y = ((ob.CurrentLocation.Y - startPointY) * ScaleY) + DisplayLocation.Y; Color colour; if (GroupDialog.GroupList.Contains(ob.Name) || ob.Name.EndsWith(string.Format("({0})", MapObject.User.Name))) { colour = Color.FromArgb(0, 0, 255); } else if (ob is PlayerObject) { colour = Color.FromArgb(255, 255, 255); } else if (ob is NPCObject || ob.AI == 6) { colour = Color.FromArgb(0, 255, 50); } else { colour = Color.FromArgb(255, 0, 0); } DXManager.Draw(DXManager.RadarTexture, new Rectangle(0, 0, 2, 2), new Vector3((float)(x - 0.5), (float)(y - 0.5), 0.0F), colour); } x = MapObject.User.CurrentLocation.X * ScaleX; y = MapObject.User.CurrentLocation.Y * ScaleY; var s = UserRadarDot.Size; UserRadarDot.Location = new Point((int)x - s.Width / 2, (int)y - s.Height / 2); } foreach (var record in ParentDialog.CurrentRecord.MovementButtons) { var movementInfo = record.Key; var button = record.Value; float x = movementInfo.Location.X * ScaleX; float y = movementInfo.Location.Y * ScaleY; var s = Libraries.MapLinkIcon.GetSize(button.Index); button.Location = new Point((int)x - s.Width / 2, (int)y - s.Height / 2); } if (ParentDialog.SelectedNPC != null && SelectedNPCIcon.Visible) { float x = ParentDialog.SelectedNPC.Info.Location.X * ScaleX; float y = ParentDialog.SelectedNPC.Info.Location.Y * ScaleY; var s = Libraries.MapLinkIcon.GetSize(SelectedNPCIcon.Index); SelectedNPCIcon.Location = new Point((int)x - s.Width / 2, (int)y - s.Height / 2); } }