public TabsPanel(LevelEditorControl EdControl) { InitializeComponent(); this.EdControl = EdControl; images = new ImageList(); images.ColorDepth = ColorDepth.Depth32Bit; images.Images.Add(Properties.Resources.add); images.Images.Add(Properties.Resources.block); images.Images.Add(Properties.Resources.bug); images.Images.Add(Properties.Resources.door); images.Images.Add(Properties.Resources.views); images.Images.Add(Properties.Resources.zones); images.Images.Add(Properties.Resources.paths); images.Images.Add(Properties.Resources.paths_progress); tabControl1.ImageList = images; create = new CreatePanel(EdControl); objects = new ObjectEditor(EdControl); sprites = new SpriteEditor(EdControl); entrances = new EntranceEditor(EdControl); views = new ViewEditor(EdControl, EdControl.Level.Views, true); zones = new ViewEditor(EdControl, EdControl.Level.Zones, false); paths = new PathEditor(EdControl, EdControl.Level.Paths); progresspaths = new PathEditor(EdControl, EdControl.Level.ProgressPaths); controls = new Control[] {create, objects, sprites, entrances, views, zones, paths, progresspaths}; SelectNone(); }
public SpriteEditor(LevelEditorControl EdControl) { InitializeComponent(); this.EdControl = EdControl; SSTable = ROM.GetInlineFile(ROM.Data.File_Modifiers); int i = 0; foreach (string sprite in SpriteData.spriteNames) { spritelist[i] = i + ": " + sprite; i++; } if (SpriteData.spriteNames.Count == 0) { string spriteText = LanguageManager.Get("SpriteEditor", "sprite"); for (int s = 0; s < ROM.SpriteCount; s++) spritelist[s] = String.Format(spriteText, s); } for (int l = 0; l < ROM.SpriteCount; l++) curSprites.Add(l); categoryList.Items.Add(LanguageManager.Get("SpriteEditor", "All")); foreach (string cat in SpriteData.categories) categoryList.Items.Add(cat); categoryList.SelectedIndex = 0; UpdateDataEditor(); UpdateInfo(); LanguageManager.ApplyToContainer(this, "SpriteEditor"); spriteTypeUpDown.Maximum = ROM.SpriteCount - 1; }
public void loadMinimap(NSMBLevel Level, LevelEditorControl EdControl) { this.Level = Level; this.EdControl = EdControl; UnViewableBlocksBrush = new SolidBrush(Color.FromArgb(120, 255, 255, 255)); loaded = true; }
public ObjectsEditionMode(NSMBLevel Level, LevelEditorControl EdControl) : base(Level, EdControl) { tabs = new GoodTabsPanel(EdControl); SetPanel(tabs); tabs.Dock = DockStyle.Fill; }
public CreatePanel(LevelEditorControl EdControl) { InitializeComponent(); this.EdControl = EdControl; LanguageManager.ApplyToContainer(this, "CreatePanel"); }
public void render(Graphics g, LevelEditorControl ed, bool selected) { if (points.Count == 0) return; bool first = true; int lx = 0; int ly = 0; foreach (NSMBPathPoint p in points) { if (!first) g.DrawLine(NSMBGraphics.PathPen, lx, ly, p.X+8+XOffs, p.Y+8+YOffs); lx = p.X+8+XOffs; ly = p.Y+8+YOffs; first = false; } NSMBPathPoint fp = points[0]; NSMBPathPoint lp = points[points.Count - 1]; int num = 0; foreach (NSMBPathPoint p in points) { Pen pe = null; if (p == fp) pe = Pens.Green; if (p == lp) pe = Pens.Red; p.render(g, ed); num++; } }
public ToolsForm(LevelEditorControl edc) { InitializeComponent(); if (Properties.Settings.Default.mdi) this.MdiParent = MdiParentForm.instance; LanguageManager.ApplyToContainer(this, "ToolsForm"); this.EdControl = edc; }
public ObjectsEditionMode(NSMBLevel Level, LevelEditorControl EdControl) : base(Level, EdControl) { tabs = new GoodTabsPanel(EdControl); SetPanel(tabs); tabs.Dock = DockStyle.Fill; resizeHandles = Properties.Settings.Default.ShowResizeHandles; }
public PathEditor(LevelEditorControl EdControl, List<NSMBPath> l) { InitializeComponent(); this.lst = l; isProgress = l == EdControl.Level.ProgressPaths; LanguageManager.ApplyToContainer(this, "PathEditor"); this.EdControl = EdControl; UpdateList(); }
public LevelMinimap(NSMBLevel Level, LevelEditorControl EdControl) { InitializeComponent(); if (Properties.Settings.Default.mdi) this.MdiParent = MdiParentForm.instance; this.Level = Level; this.EdControl = EdControl; UnViewableBlocksBrush = new SolidBrush(Color.FromArgb(120, Color.DarkSlateGray.R, Color.DarkSlateGray.G, Color.DarkSlateGray.B)); }
public EntranceEditor(LevelEditorControl ec) { InitializeComponent(); EdControl = ec; UpdateList(); if (entranceTypeComboBox.Items.Count == 0) entranceTypeComboBox.Items.AddRange(LanguageManager.GetList("EntranceTypes").ToArray()); LanguageManager.ApplyToContainer(this, "EntranceEditor"); }
public UndoManager(ToolStripSplitButton UndoButton, ToolStripSplitButton RedoButton, LevelEditorControl editor) { undo = UndoButton; redo = RedoButton; EdControl = editor; undo.ButtonClick += new EventHandler(onUndoLast); redo.ButtonClick += new EventHandler(onRedoLast); }
public ViewEditor(LevelEditorControl EdControl, List <NSMBView> l, bool EdVi) { InitializeComponent(); this.EdControl = EdControl; this.lst = l; EditingViews = EdVi; LanguageManager.ApplyToContainer(this, "ViewEditor"); music.Items.AddRange(ROM.UserInfo.getFullList("Music").ToArray()); UpdateList(); }
public ObjectEditor(LevelEditorControl EdControl) { InitializeComponent(); LanguageManager.ApplyToContainer(this, "ObjectEditor"); tileset0picker.Initialise(EdControl.GFX, 0); tileset1picker.Initialise(EdControl.GFX, 1); tileset2picker.Initialise(EdControl.GFX, 2); this.EdControl = EdControl; UpdateInfo(); }
public SpriteEventsViewer(LevelEditorControl ed) { InitializeComponent(); this.ed = ed; spriteTable.DataSource = spriteList; LanguageManager.ApplyToContainer(this, "SpriteEvents"); this.EventID.HeaderText = LanguageManager.Get("SpriteEvents", "EventID"); this.SpriteNum.HeaderText = LanguageManager.Get("SpriteEvents", "SpriteNumber"); this.SpriteName.HeaderText = LanguageManager.Get("SpriteEvents", "SpriteName"); }
public EntranceEditor(LevelEditorControl ec) { InitializeComponent(); EdControl = ec; UpdateList(); if (entranceTypeComboBox.Items.Count == 0) { entranceTypeComboBox.Items.AddRange(LanguageManager.GetList("EntranceTypes").ToArray()); } LanguageManager.ApplyToContainer(this, "EntranceEditor"); }
public LevelMinimap(NSMBLevel Level, LevelEditorControl EdControl) { InitializeComponent(); if (Properties.Settings.Default.mdi) { this.MdiParent = MdiParentForm.instance; } this.Level = Level; this.EdControl = EdControl; UnViewableBlocksBrush = new SolidBrush(Color.FromArgb(120, Color.DarkSlateGray.R, Color.DarkSlateGray.G, Color.DarkSlateGray.B)); }
public ViewEditor(LevelEditorControl EdControl, List<NSMBView> l, bool EdVi) { InitializeComponent(); this.EdControl = EdControl; this.lst = l; EditingViews = EdVi; LanguageManager.ApplyToContainer(this, "ViewEditor"); music.Items.AddRange(ROM.UserInfo.getFullList("Music").ToArray()); lightList.Items.AddRange(LanguageManager.GetList("3DLighting").ToArray()); UpdateList(); }
public void render(Graphics g, LevelEditorControl edControl) { int EntranceArrowColour = 0; // connected pipes have the grey blob (or did, it's kind of pointless) /*if (((Type >= 3 && Type <= 6) || (Type >= 16 && Type <= 19) || (Type >= 22 && Type <= 25)) && (Settings & 8) != 0) { EntranceArrowColour = 2; }*/ // doors and pipes can be exits, so mark them as one if they're not 128 if (((Type >= 2 && Type <= 6) || (Type >= 16 && Type <= 19) || (Type >= 22 && Type <= 25)) && (Settings & 128) == 0) { EntranceArrowColour = 1; } g.DrawImage(Properties.Resources.entrances, new Rectangle(X, Y, 16, 16), new Rectangle(Math.Min(Type, 25) * 16, EntranceArrowColour * 16, 16, 16), GraphicsUnit.Pixel); }
public void render(Graphics g, LevelEditorControl edControl) { int EntranceArrowColour = 0; // connected pipes have the grey blob (or did, it's kind of pointless) /*if (((Type >= 3 && Type <= 6) || (Type >= 16 && Type <= 19) || (Type >= 22 && Type <= 25)) && (Settings & 8) != 0) { * EntranceArrowColour = 2; * }*/ // doors and pipes can be exits, so mark them as one if they're not 128 if (((Type >= 2 && Type <= 6) || (Type >= 16 && Type <= 19) || (Type >= 22 && Type <= 25)) && (Settings & 128) == 0) { EntranceArrowColour = 1; } g.DrawImage(Properties.Resources.entrances, new Rectangle(X, Y, 16, 16), new Rectangle(Math.Min(Type, 25) * 16, EntranceArrowColour * 16, 16, 16), GraphicsUnit.Pixel); }
public void render(Graphics g, LevelEditorControl ed) { Pen p = null; int num = parent.points.IndexOf(this); if (num == 0) p = Pens.Green; if (num == parent.points.Count - 1) p = Pens.Red; g.DrawImage(Properties.Resources.pathpoint, X + NSMBPath.XOffs, Y+NSMBPath.YOffs); if (p != null) { g.DrawRectangle(p, X, Y, 16, 16); g.DrawRectangle(p, X+1, Y+1, 14, 14); } g.DrawString(num.ToString(), NSMBGraphics.SmallInfoFont, Brushes.White, X, Y); }
public void render(Graphics g, LevelEditorControl ed, bool selected) { if (points.Count == 0) { return; } bool first = true; int lx = 0; int ly = 0; foreach (NSMBPathPoint p in points) { if (!first) { g.DrawLine(NSMBGraphics.PathPen, lx, ly, p.X + 8 + XOffs, p.Y + 8 + YOffs); } lx = p.X + 8 + XOffs; ly = p.Y + 8 + YOffs; first = false; } NSMBPathPoint fp = points[0]; NSMBPathPoint lp = points[points.Count - 1]; int num = 0; foreach (NSMBPathPoint p in points) { Pen pe = null; if (p == fp) { pe = Pens.Green; } if (p == lp) { pe = Pens.Red; } p.render(g, ed); num++; } }
public SpriteEditor(LevelEditorControl EdControl) { InitializeComponent(); this.EdControl = EdControl; SSTable = ROM.GetInlineFile(ROM.Data.File_Modifiers); int i = 0; foreach (string sprite in SpriteData.spriteNames) { spritelist[i] = i + ": " + sprite; i++; } if (SpriteData.spriteNames.Count == 0) { string spriteText = LanguageManager.Get("SpriteEditor", "sprite"); for (int s = 0; s < ROM.SpriteCount; s++) { spritelist[s] = String.Format(spriteText, s); } } for (int l = 0; l < ROM.SpriteCount; l++) { curSprites.Add(l); } categoryList.Items.Add(LanguageManager.Get("SpriteEditor", "All")); categoryList.Items.Add(LanguageManager.Get("SpriteEditor", "InLevel")); categoryList.Items.Add(LanguageManager.Get("SpriteEditor", "InSpriteSets")); foreach (string cat in SpriteData.categories) { categoryList.Items.Add(cat); } categoryList.SelectedIndex = 0; UpdateDataEditor(); UpdateInfo(); LanguageManager.ApplyToContainer(this, "SpriteEditor"); spriteTypeUpDown.Maximum = ROM.SpriteCount - 1; }
public GoodTabsPanel(LevelEditorControl EdControl) { InitializeComponent(); this.EdControl = EdControl; ToolTips = LanguageManager.GetList("TabText"); images = new ImageList(); images.ColorDepth = ColorDepth.Depth32Bit; images.Images.Add(Properties.Resources.config); images.Images.Add(Properties.Resources.block); images.Images.Add(Properties.Resources.bug); images.Images.Add(Properties.Resources.door); images.Images.Add(Properties.Resources.views); images.Images.Add(Properties.Resources.zones); images.Images.Add(Properties.Resources.paths); images.Images.Add(Properties.Resources.paths_progress); tabControl1.ImageList = images; objects = new ObjectEditor(EdControl); sprites = new SpriteEditor(EdControl); entrances = new EntranceEditor(EdControl); views = new ViewEditor(EdControl, EdControl.Level.Views, true); zones = new ViewEditor(EdControl, EdControl.Level.Zones, false); paths = new PathEditor(EdControl, EdControl.Level.Paths); progresspaths = new PathEditor(EdControl, EdControl.Level.ProgressPaths); config = new LevelConfig(EdControl); config.LoadSettings(); EdControl.config = config; controls = new Control[] { config, objects, sprites, entrances, views, zones, paths, progresspaths }; foreach (Control c in controls) { AddTab(c); } tabControl1.SelectedIndex = 1; //Select nothing SelectObjects(new List <LevelItem>()); }
public void render(Graphics g, LevelEditorControl ed) { Pen p = null; int num = parent.points.IndexOf(this); if (num == 0) { p = Pens.Green; } if (num == parent.points.Count - 1) { p = Pens.Red; } g.DrawImage(Properties.Resources.pathpoint, X + NSMBPath.XOffs, Y + NSMBPath.YOffs); if (p != null) { g.DrawRectangle(p, X, Y, 16, 16); g.DrawRectangle(p, X + 1, Y + 1, 14, 14); } g.DrawString(num.ToString(), NSMBGraphics.SmallInfoFont, Brushes.White, X, Y); }
public LevelConfig(LevelEditorControl EdControl) { InitializeComponent(); this.EdControl = EdControl; this.Level = EdControl.Level; tabControl1.SelectTab(0); LanguageManager.ApplyToContainer(this, "LevelConfig"); // Load lists loadList("Foregrounds", bgTopLayerComboBox); loadList("Backgrounds", bgBottomLayerComboBox); loadList("Tilesets", tilesetComboBox); // Load modifier lists ComboBox target = null; foreach (string name in LanguageManager.GetList("Modifiers")) { string trimmedname = name.Trim(); if (trimmedname == "") continue; if (trimmedname[0] == '-') { switch (trimmedname) { case "-1": target = set1ComboBox; break; case "-2": target = set2ComboBox; break; case "-3": target = set3ComboBox; break; case "-4": target = set4ComboBox; break; case "-5": target = set5ComboBox; break; case "-6": target = set6ComboBox; break; case "-7": target = set7ComboBox; break; case "-8": target = set8ComboBox; break; case "-9": target = set9ComboBox; break; case "-10": target = set10ComboBox; break; case "-16": target = set16ComboBox; break; } } else { target.Items.Add(trimmedname); } } }
public GoodTabsPanel(LevelEditorControl EdControl) { InitializeComponent(); this.EdControl = EdControl; images = new ImageList(); images.ColorDepth = ColorDepth.Depth32Bit; images.Images.Add(Properties.Resources.config); images.Images.Add(Properties.Resources.block); images.Images.Add(Properties.Resources.bug); images.Images.Add(Properties.Resources.door); images.Images.Add(Properties.Resources.views); images.Images.Add(Properties.Resources.zones); images.Images.Add(Properties.Resources.paths); images.Images.Add(Properties.Resources.paths_progress); tabControl1.ImageList = images; objects = new ObjectEditor(EdControl); sprites = new SpriteEditor(EdControl); entrances = new EntranceEditor(EdControl); views = new ViewEditor(EdControl, EdControl.Level.Views, true); zones = new ViewEditor(EdControl, EdControl.Level.Zones, false); paths = new PathEditor(EdControl, EdControl.Level.Paths); progresspaths = new PathEditor(EdControl, EdControl.Level.ProgressPaths); config = new LevelConfig(EdControl); config.LoadSettings(); EdControl.config = config; controls = new Control[] { config, objects, sprites, entrances, views, zones, paths, progresspaths }; foreach (Control c in controls) AddTab(c); tabControl1.SelectedIndex = 1; //Select nothing SelectObjects(new List<LevelItem>()); }
public void render(Graphics g, LevelEditorControl ed) { Pen p = Pens.LightSteelBlue; if (isZone) { p = Pens.PaleGreen; } g.DrawRectangle(p, X, Y, Width - 1, Height - 1); g.DrawRectangle(p, X + 1, Y + 1, Width - 3, Height - 3); Rectangle ViewablePixels = ed.ViewablePixels; int vx = ViewablePixels.X; int vy = ViewablePixels.Y; if (X + Width > vx && Y + Height > vy) { int numx = X; int numy = Y; if (numx < vx) { numx = vx; } if (numy < vy) { numy = vy; } if (isZone) { numy += 16; } g.DrawString(GetDisplayString(), NSMBGraphics.InfoFont, Brushes.White, (float)numx, (float)numy); } }
public void SetEdControl(LevelEditorControl EdControl) { this.EdControl = EdControl; this.AfterSetEdControl(); }
public EditionMode(NSMBLevel Level, LevelEditorControl EdControl) { this.Level = Level; this.EdControl = EdControl; }
public void render(Graphics g, LevelEditorControl ed) { int RenderX = X * 16, RenderX2 = RenderX; int RenderY = Y * 16, RenderY2 = RenderY; int width, height; Bitmap img = null; bool customRendered = true; switch (this.Type) { case 23: g.DrawImage(Properties.Resources.PiranhaplantTube, RenderX, RenderY - 28); break; case 24: img = Properties.Resources.PiranhaplantTube; img.RotateFlip(RotateFlipType.RotateNoneFlipY); g.DrawImage(img, RenderX, RenderY + 32); break; case 25: img = Properties.Resources.PiranhaplantTube; img.RotateFlip(RotateFlipType.Rotate90FlipNone); g.DrawImage(img, RenderX + 32, RenderY); break; case 26: img = Properties.Resources.PiranhaplantTube; img.RotateFlip(RotateFlipType.Rotate270FlipNone); g.DrawImage(img, RenderX - 28, RenderY); break; case 27: for (int l = 0; l <= Data[5] / 0x10; l++) { if (l == Data[5] / 0x10) { g.DrawImage(Properties.Resources.BulletBillCannonTop, RenderX, RenderY - 16); } else { g.DrawImage(Properties.Resources.BulletBillCannon, RenderX, RenderY); RenderY -= 16; } } break; case 28: g.DrawImage(Properties.Resources.BomOmb, RenderX, RenderY - 2); break; case 31: g.DrawImage(Properties.Resources.CheepCheep, RenderX, RenderY); break; case 32: if (Data[2] / 0x10 == 1) img = Properties.Resources.EndingFlagRed; else img = Properties.Resources.EndingFlag; g.DrawImage(img, RenderX - 29, RenderY - 119); break; case 33: if (Data[5] % 0x10 == 1) { img = Properties.Resources.SpringGiant; RenderY -= 16; RenderX -= 8; } else img = Properties.Resources.Spring; if (Data[5] / 0x10 == 1) RenderX += 8; g.DrawImage(img, RenderX, RenderY); break; case 34: if (Data[5] / 0x10 == 1) RenderX += 8; g.DrawImage(Properties.Resources.RedCoinRing, RenderX - 7, RenderY - 26); break; case 36: g.DrawImage(Properties.Resources.Thwomp, RenderX, RenderY); break; case 37: g.DrawImage(Properties.Resources.Spiny, RenderX, RenderY); break; case 38: g.DrawImage(Properties.Resources.Boo, RenderX, RenderY); break; //case 40: see 183 case 42: g.DrawImage(Properties.Resources.ChainChompLog, RenderX - 8, RenderY - 48); if (Data[5] % 0x10 == 1) g.DrawImage(Properties.Resources.ChainChomp, RenderX - 37, RenderY - 28); break; case 43: g.DrawImage(Properties.Resources.ChainChomp, RenderX - 29, RenderY - 28); break; case 48: g.DrawImage(Properties.Resources.TubeBubbles, RenderX, RenderY - 90); break; case 49: img = Properties.Resources.TubeBubbles; img.RotateFlip(RotateFlipType.RotateNoneFlipY); g.DrawImage(img, RenderX, RenderY + 32); break; case 50: img = Properties.Resources.TubeBubbles; img.RotateFlip(RotateFlipType.Rotate90FlipNone); g.DrawImage(img, RenderX + 32, RenderY); break; case 51: img = Properties.Resources.TubeBubbles; img.RotateFlip(RotateFlipType.Rotate270FlipNone); g.DrawImage(img, RenderX - 90, RenderY); break; case 52: if (Data[5] % 0x10 == 1) img = Properties.Resources.BuzzyBeetleU; else img = Properties.Resources.BuzzyBeetle; g.DrawImage(img, RenderX, RenderY); break; case 53: g.DrawImage(Properties.Resources.DryBones, RenderX, RenderY - 10); break; case 54: g.DrawImage(Properties.Resources.FireBall, RenderX, RenderY); break; case 55: g.DrawImage(Properties.Resources.BulletBill, RenderX, RenderY); break; case 56: RenderY2 = (Data[5] % 0x10) * 10; if (Data[5] / 0x10 == 1) { RenderX -= RenderY2; RenderY += RenderY2; } while (!(RenderX == RenderX2 + RenderY2 + 10)) { if (RenderX == RenderX2) g.DrawImage(Properties.Resources.FireBarMiddle, RenderX + 4, RenderY + 4); else g.DrawImage(Properties.Resources.FireBarBall, RenderX, RenderY); RenderX += 10; RenderY -= 10; } break; case 57: if (Data[5] % 0x10 != 1 && Data[5] % 0x10 != 2) { if (Data[3] / 0x10 == 1) RenderY += 8; if (Data[2] % 0x10 == 1) RenderX += 8; } if (Data[5] % 0x10 == 1) g.DrawImage(Properties.Resources.CoinInBubble, RenderX - 4, RenderY - 4); else if (Data[5] % 0x10 == 2) { g.DrawImage(Properties.Resources.CoinInBubble, RenderX - 4, RenderY - 4); g.DrawImage(Properties.Resources.CoinInBubble, RenderX + 20, RenderY - 20); g.DrawImage(Properties.Resources.CoinInBubble, RenderX + 44, RenderY - 4); } else { g.DrawImage(Properties.Resources.Coin, RenderX, RenderY); } break; case 59: g.DrawImage(Properties.Resources.HammerBro, RenderX, RenderY - 18); break; case 64: if (Data[5] % 0x10 == 1) { img = Properties.Resources.WhompL; RenderX -= 38; RenderY -= 74; } else { img = Properties.Resources.Whomp; RenderX -= 29; RenderY -= 57; } g.DrawImage(img, RenderX, RenderY); break; case 66: img = Properties.Resources.PSwitch; if (Data[5] % 0x10 == 1) img.RotateFlip(RotateFlipType.Rotate180FlipNone); else RenderY -= 2; if (Data[5] / 0x10 == 1) RenderX += 8; g.DrawImage(img, RenderX, RenderY); break; case 67: g.DrawImage(Properties.Resources.Shark, RenderX - 27, RenderY - 8); break; case 68: case 69: int dist = (Data[4] % 0x10) * 16; if (Data[3] % 0x10 == 1) dist = -dist; if (this.Type == 68) { RenderY2 -= dist; } else { RenderX2 += dist; } width = Math.Max(16 * (Data[5] % 0x10 + 1), 32) / 2; g.DrawLine(Pens.White, RenderX + width, RenderY + 8, RenderX2 + width, RenderY2 + 8); g.FillEllipse(Brushes.White, RenderX2 + width - 4, RenderY2 + 4, 7, 7); g.DrawImage(Properties.Resources.MovingPlatformLeft, RenderX, RenderY); for (int l = 0; l < Data[5] % 0x10 - 1; l++) { RenderX += 16; g.DrawImage(Properties.Resources.MovingPlatformSection, RenderX, RenderY, 16, 16); } g.DrawImage(Properties.Resources.MovingPlatformRight, RenderX + 16, RenderY); RenderX = X * 16; RenderY = Y * 16; if (RenderX != RenderX2 || RenderY != RenderY2) { g.DrawImage(Properties.Resources.MovingPlatformLeftE, RenderX2, RenderY2); for (int l = 0; l < Data[5] % 0x10 - 1; l++) { RenderX2 += 16; g.DrawImage(Properties.Resources.MovingPlatformSectionE, RenderX2, RenderY2); } g.DrawImage(Properties.Resources.MovingPlatformRightE, RenderX2 + 16, RenderY2); } break; case 70: if (Data[5] % 0x10 == 1) { g.DrawImage(Properties.Resources.SpinningLogL, RenderX - 56, RenderY); } else { g.DrawImage(Properties.Resources.SpinningLog, RenderX - 24, RenderY); } break; case 73: g.DrawImage(Properties.Resources.HangingPlatform, RenderX, RenderY); RenderX += 92; for (int l = 0; l < 6; l++) { RenderY -= 32; g.DrawImage(Properties.Resources.HangingPlatformChain, RenderX, RenderY); } break; case 74: g.DrawImage(Properties.Resources.TiltingRock, RenderX, RenderY - 8); break; case 75: g.DrawImage(Properties.Resources.SeeSaw, RenderX, RenderY); break; case 76: RenderX2 = RenderX + 16 * (Data[5] % 0x10) - 10; g.DrawImage(Properties.Resources.ScalePlatformBolt, RenderX - 2, RenderY - 10); g.DrawImage(Properties.Resources.ScalePlatformBolt, RenderX2, RenderY - 10); Pen rope = new Pen(Color.FromArgb(49, 24, 74)); g.DrawLine(Pens.White, RenderX + 8, RenderY - 9, RenderX2 + 2, RenderY - 9); g.DrawLine(rope, RenderX + 9, RenderY - 8, RenderX2 + 1, RenderY - 8); RenderY2 = RenderY + 16 * (Data[4] % 0x10) - 8; int RenderY3 = RenderY + 16 * (Data[5] / 0x10) - 8; g.DrawLine(Pens.White, RenderX - 1, RenderY, RenderX - 1, RenderY2 - 1); g.DrawLine(rope, RenderX, RenderY + 1, RenderX, RenderY2 - 1); g.DrawLine(Pens.White, RenderX2 + 9, RenderY + 3, RenderX2 + 9, RenderY3 - 1); g.DrawLine(rope, RenderX2 + 10, RenderY + 1, RenderX2 + 10, RenderY3 - 1); g.DrawImage(Properties.Resources.ScalePlatformEnd, RenderX2 - 14, RenderY3); g.DrawImage(Properties.Resources.ScalePlatformEnd, RenderX - 24, RenderY2); rope.Dispose(); break; case 77: case 78: int w = Data[5] % 0x10, s = 2; if (this.Type == 78) { w = Math.Max(0, w - 1); s = 1; RenderX -= 8; } RenderX -= (w * s + 1) * 8; g.DrawImage(Properties.Resources.MovingPlatformLeft, RenderX, RenderY); for (int l = 0; l < w * s; l++) { RenderX += 16; g.DrawImage(Properties.Resources.MovingPlatformSection, RenderX, RenderY); } g.DrawImage(Properties.Resources.MovingPlatformRight, RenderX + 16, RenderY); break; case 79: g.DrawImage(Properties.Resources.Spinning3PointedPlatform, RenderX - 28, RenderY - 34); break; case 80: img = Properties.Resources.arrow_down; if (Data[3] % 0x10 == 1) RenderY -= 16; else { RenderY += 16; img.RotateFlip(RotateFlipType.Rotate180FlipNone); } g.DrawImage(Properties.Resources.MovingPlatformLeft, RenderX, RenderY); g.DrawImage(Properties.Resources.MovingPlatformSection, RenderX + 16, RenderY); g.DrawImage(Properties.Resources.MovingPlatformSection, RenderX + 32, RenderY); g.DrawImage(Properties.Resources.MovingPlatformRight, RenderX + 48, RenderY); g.DrawImage(img, RenderX + 24, RenderY2, 16, 16); break; case 82: g.DrawImage(Properties.Resources.SpinningRectanglePlatform, RenderX - 24, RenderY - 8); break; case 86: g.DrawImage(Properties.Resources.SpinningTrianglePlatform, RenderX - 14, RenderY - 6); break; case 88: g.DrawImage(Level.GFX.Tilesets[0].Map16Buffer, RenderX, RenderY, new Rectangle(0, 0x50, 16, 16), GraphicsUnit.Pixel); g.DrawImage(Properties.Resources.PSwitch, RenderX + 2, RenderY + 1, 12, 14); break; case 89: g.DrawImage(Properties.Resources.Snailicorn, RenderX, RenderY - 16); break; case 90: if (Data[5] == 1) g.DrawImage(Properties.Resources.WigglerL, RenderX, RenderY - 44); else g.DrawImage(Properties.Resources.Wiggler, RenderX, RenderY - 14); break; case 91: g.DrawImage(Properties.Resources.MovingPlatformLeft, RenderX, RenderY + 8); g.DrawImage(Properties.Resources.MovingPlatformSection, RenderX + 16, RenderY + 8); g.DrawImage(Properties.Resources.MovingPlatformSection, RenderX + 32, RenderY + 8); g.DrawImage(Properties.Resources.MovingPlatformRight, RenderX + 48, RenderY + 8); break; case 92: if (Data[5] % 0x10 == 1) { g.DrawImage(Properties.Resources.EelNonMoving, RenderX + 3, RenderY + 7); } else if (Data[5] / 0x10 == 1) { img = Properties.Resources.Eel; img.RotateFlip(RotateFlipType.RotateNoneFlipX); g.DrawImage(img, RenderX + 45, RenderY + 3); } else if (Data[3] % 0x10 == 1) { g.DrawImage(Properties.Resources.Eel, RenderX + 12, RenderY + 3); } else { Rectangle r = new Rectangle(RenderX + 12, RenderY + 3, 104, 28); g.FillRectangle(Brushes.Black, r); g.DrawString(LanguageManager.Get("Sprites", "Eel"), NSMBGraphics.SmallInfoFont, Brushes.White, r); } break; case 93: if (Data[5] / 0x10 % 2 == 1) { img = Properties.Resources.ArrowSignRotate45; if (Data[5] % 0x10 == 1) img = Properties.Resources.ArrowSignRotate45F; } else { img = Properties.Resources.ArrowSign; if (Data[5] % 0x10 == 1) img.RotateFlip(RotateFlipType.RotateNoneFlipX); } img = RotateBitmap(img, -Data[5] / 0x20 * 90); if (Data[3] % 0x10 == 1) img = new Bitmap(img, 24, 24); if (Data[5] / 0x10 % 2 == 1) { RenderX += (img.Width / 9) * ((Data[5] / 0x10 > 4) ? 1 : -1); RenderY += (img.Width / 9) * ((Data[5] / 0x10 == 3 || Data[5] / 0x10 == 5) ? 1 : -1); } if (Data[4] / 0x10 == 1) RenderX += 8; if (Data[4] % 0x10 == 1) RenderY += 8; g.DrawImage(img, RenderX - (img.Width - 16) / 2, RenderY - (img.Height - 16)); break; case 94: if (Data[5] % 0x10 == 1) g.DrawImage(Properties.Resources.SwooperLarge, RenderX - 6, RenderY - 16); else g.DrawImage(Properties.Resources.Swooper, RenderX, RenderY); break; case 95: g.DrawImage(Properties.Resources.SpinBoard, RenderX - 6, RenderY); break; case 96: g.DrawImage(Properties.Resources.SeaWeed, RenderX - 32, RenderY - 127); break; case 99: g.DrawImage(Properties.Resources.Spinning4PointedPlatform, RenderX - 38, RenderY - 29); break; case 102: g.DrawImage(Properties.Resources.SpikeBallSmall, RenderX, RenderY); break; case 103: switch (Data[2] % 0x10) { case 1: img = Properties.Resources.Dorrie; img.RotateFlip(RotateFlipType.RotateNoneFlipX); g.DrawImage(img, RenderX - 51, RenderY - 59); break; case 2: g.DrawImage(Properties.Resources.DorrieAway, RenderX - 40, RenderY - 59); break; case 3: g.DrawImage(Properties.Resources.DorrieTowards, RenderX - 40, RenderY - 59); break; default: g.DrawImage(Properties.Resources.Dorrie, RenderX - 51, RenderY - 59); break; } break; case 104: g.DrawImage(Properties.Resources.Tornado, RenderX - 88, RenderY - 130); break; case 105: g.DrawImage(Properties.Resources.WhirlPool, RenderX - 78, RenderY - 164); break; case 106: g.DrawImage(Properties.Resources.RedCoin, RenderX, RenderY); break; case 107: img = Properties.Resources.QSwitch; if (Data[5] % 0x10 == 1) img.RotateFlip(RotateFlipType.Rotate180FlipNone); else RenderY -= 2; if (Data[5] / 0x10 == 1) RenderX += 8; g.DrawImage(img, RenderX, RenderY); break; case 108: img = Properties.Resources.RedSwitch; if (Data[5] % 0x10 == 1) img.RotateFlip(RotateFlipType.Rotate180FlipNone); else RenderY -= 2; if (Data[5] / 0x10 == 1) RenderX += 8; g.DrawImage(img, RenderX, RenderY); break; case 109: int shift = Data[5] / 0x10; if (shift == 1 || shift == 3) RenderX += 8; if (shift == 2 || shift == 3) RenderY += 8; g.DrawImage(Properties.Resources.ElectricBall, RenderX - 6, RenderY - 6); break; case 110: g.DrawImage(Level.GFX.Tilesets[0].Map16Buffer, RenderX, RenderY, new Rectangle(0, 0x50, 16, 16), GraphicsUnit.Pixel); g.DrawImage(Properties.Resources.RedSwitch, RenderX + 2, RenderY + 1, 12, 14); break; case 111: g.DrawImage(Properties.Resources.Log, RenderX - 128, RenderY - 32); break; case 113: g.DrawImage(Properties.Resources.CheepChomp, RenderX, RenderY); break; case 115: g.DrawImage(Properties.Resources.SpikeBallLarge, RenderX, RenderY - 42); break; case 114: case 118: if (this.Type == 114) img = Properties.Resources.SmallFlamethrower; else img = Properties.Resources.Flamethrower; switch (Data[5] % 0x40) { case 0: g.DrawImage(img, RenderX, RenderY); break; case 1: img.RotateFlip(RotateFlipType.Rotate180FlipNone); g.DrawImage(img, RenderX - (img.Width - 16), RenderY); break; case 2: img.RotateFlip(RotateFlipType.Rotate270FlipNone); g.DrawImage(img, RenderX, RenderY - (img.Height - 16)); break; case 3: img.RotateFlip(RotateFlipType.Rotate90FlipNone); g.DrawImage(img, RenderX, RenderY); break; } break; case 116: g.DrawImage(Properties.Resources.WaterBug, RenderX - 16, RenderY - 5); break; case 117: g.DrawImage(Properties.Resources.FlyingBlock, RenderX - 12, RenderY - 8); break; case 119: int sz = Data[2] / 0x10; if (sz == 0) sz = 1; g.DrawImage(ScaleBitmap(Properties.Resources.Pendulum, sz * 64, sz * 68), RenderX - sz * 32, RenderY - sz * 6); break; case 120: g.DrawImage(Properties.Resources.PiranhaplantGround, RenderX, RenderY + 3); break; case 122: g.DrawImage(Properties.Resources.GiantPiranhaplant, RenderX - 37, RenderY - 48); break; case 123: g.DrawImage(Properties.Resources.FirePiranhaplant, RenderX - 8, RenderY + 2); break; case 124: g.DrawImage(Properties.Resources.GiantFirePiranhaplant, RenderX - 38, RenderY - 45); break; case 126: Bitmap img2 = null; RenderX2 = RenderX - 16; for (int l = 0; l < Data[2] / 0x10; l++ ) { if (l == 0) { img = Properties.Resources.DrawBridgeEnd; img2 = Properties.Resources.DrawBridgeEnd; img2.RotateFlip(RotateFlipType.RotateNoneFlipX); } else if (l == Data[2] / 0x10 - 1) { img = Properties.Resources.DrawBridgeHinge; img2 = Properties.Resources.DrawBridgeHinge; img2.RotateFlip(RotateFlipType.RotateNoneFlipX); } else if (l == 1) { img = Properties.Resources.DrawBridgeSection; img2 = Properties.Resources.DrawBridgeSection; img2.RotateFlip(RotateFlipType.RotateNoneFlipX); } g.DrawImage(img2, RenderX, RenderY); g.DrawImage(img, RenderX2, RenderY); RenderX += 16; RenderX2 -= 16; } if (Data[2] / 0x10 == 0) g.DrawImage(Properties.Resources.DrawBridgeHinge, RenderX, RenderY); break; case 127: g.DrawImage(Properties.Resources.GiantSpinningPlatform, RenderX - 144, RenderY - 104); break; case 128: g.DrawImage(Properties.Resources.WarpCannon, RenderX - 9, RenderY - 26); int world = Data[2] / 0x10; if (world >= 5 && world <= 8) world -= 5; else world = 0; g.DrawImage(Properties.Resources.WarpWorlds, RenderX + 26, RenderY + 23, new Rectangle(world * 18, 0, 18, 19), GraphicsUnit.Pixel); break; case 130: g.DrawImage(Properties.Resources.CheepCheep, RenderX, RenderY); break; case 131: case 132: g.DrawImage(Properties.Resources.MidpointFlag, RenderX, RenderY); break; case 136: for (int l = 0; l <= Data[5]; l++) { g.DrawImage(Properties.Resources.PokeySection, RenderX, RenderY); RenderY -= 16; } g.DrawImage(Properties.Resources.PokeyHead, RenderX, RenderY - 9); break; case 141: g.DrawImage(Properties.Resources.SwellingGround, RenderX - 128, RenderY); if ((Data[2] & 0xF) == 0) { g.DrawImage(Properties.Resources.SwellingGroundOut, RenderX - 128, RenderY - 112); } else if ((Data[2] & 0xF) == 1) { g.DrawImage(Properties.Resources.SwellingGroundIn, RenderX - 128, RenderY); } break; case 142: RenderX -= 8; RenderX2 = RenderX + (Data[2] / 0x10) * 16; RenderY2 = Data[2] % 0x10; if (RenderY2 >= 8) RenderY2 -= 16; RenderY2 = RenderY - RenderY2 * 16; g.DrawLine(Pens.White, RenderX + 8, RenderY + 8, RenderX2 + 8, RenderY2 + 8); g.DrawImage(Properties.Resources.TightRopeEnd, RenderX, RenderY); g.DrawImage(Properties.Resources.TightRopeEnd, RenderX2, RenderY2); break; case 144: g.DrawImage(Properties.Resources.SpikedBlock, RenderX - 2, RenderY - 7); RenderY2 = Data[5] % 0x10; if (RenderY2 == 2) RenderY2 = 3; if (RenderY2 <= 3) g.DrawImage(Properties.Resources.FlyingQBlockOverrides, RenderX, RenderY + 1, new Rectangle(RenderY2 * 16, 0, 16, 16), GraphicsUnit.Pixel); break; case 146: g.DrawImage(Properties.Resources.StarGate, RenderX, RenderY); break; case 147: RenderX -= Data[5] * 8 + 6; g.DrawImage(Properties.Resources.BumpPlatformLeft, RenderX, RenderY); RenderX += 14; for (int l = 0; l < Data[5] - 1; l++) { g.DrawImage(Properties.Resources.BumpPlatformSection, RenderX, RenderY); RenderX += 16; } if (Data[5] > 0) g.DrawImage(Properties.Resources.BumpPlatformRight, RenderX, RenderY); break; case 148: g.DrawImage(Properties.Resources.Goomba, RenderX, RenderY - 2); break; case 149: bool inShell = Data[5] / 0x10 == 1; switch (Data[5] % 0x10) { case 1: img = inShell ? Properties.Resources.RedKoopaShell : Properties.Resources.KoopaRed; break; case 2: case 3: img = inShell ? Properties.Resources.BlueKoopaShell : Properties.Resources.KoopaBlue; break; default: img = inShell ? Properties.Resources.GreenKoopaShell : Properties.Resources.KoopaGreen; break; } if (inShell) g.DrawImage(img, RenderX, RenderY); else g.DrawImage(img, RenderX, RenderY - 13); break; case 150: switch (Data[5] % 0x10) { case 1: img = Properties.Resources.ParakoopaRed; break; case 2: img = Properties.Resources.ParakoopaBlue; break; default: img = Properties.Resources.ParakoopaGreen; break; } g.DrawImage(img, RenderX, RenderY - 16); break; case 152: g.DrawImage(Properties.Resources.SwitchBlock, RenderX, RenderY); break; case 155: Rectangle rect = this.getRect(); rect.Offset(1, 1); g.DrawRectangle(Pens.Black, rect); rect.Offset(-1, -1); g.DrawRectangle(Pens.Lime, rect); g.DrawString(LanguageManager.Get("Sprites", "Warp"), NSMBGraphics.SmallInfoFont, Brushes.Black, RenderX + 1, RenderY + 1); g.DrawString(LanguageManager.Get("Sprites", "Warp"), NSMBGraphics.SmallInfoFont, Brushes.Lime, RenderX, RenderY); break; case 157: g.DrawImage(Properties.Resources.FireBro, RenderX, RenderY - 15); break; case 158: g.DrawImage(Properties.Resources.BoomerangBro, RenderX, RenderY - 18); break; case 162: RenderY += 24; RenderX += 6; g.DrawImage(Properties.Resources.MushroomStalkTop, RenderX, RenderY); RenderY += 8; g.DrawImage(Properties.Resources.MushroomStalk, RenderX, RenderY); for (int l = 0; l <= Data[3] % 0x10; l++) { RenderY += 16; g.DrawImage(Properties.Resources.MushroomStalk, RenderX, RenderY); } RenderX = X * 16 - 16 * (Data[4] / 0x10 + 1); RenderY = Y * 16; img = Properties.Resources.MushroomEdge; g.DrawImage(img, RenderX, RenderY); RenderX += 32; for (int l = 0; l < Data[4] / 0x10; l++) { g.DrawImage(Properties.Resources.MushroomSection, RenderX, RenderY); RenderX += 32; } img.RotateFlip(RotateFlipType.RotateNoneFlipX); g.DrawImage(img, RenderX, RenderY); break; case 173: for (int l = 0; l < Data[5] % 0x10 + 4; l++) { g.DrawImage(Properties.Resources.Rope, RenderX - 3, RenderY); RenderY += 16; } break; case 174: RenderY += 24; RenderX += 6; g.DrawImage(Properties.Resources.MushroomStalkTop, RenderX, RenderY); RenderY += 8; g.DrawImage(Properties.Resources.MushroomStalk, RenderX, RenderY); g.DrawImage(Properties.Resources.MushroomStalk, RenderX, RenderY + 16); RenderX = X * 16 - 16 * (Data[4] / 0x10 + 1); RenderY = RenderY2; img = Properties.Resources.MushroomEdge; g.DrawImage(img, RenderX, RenderY); RenderX += 32; for (int l = 0; l < Data[4] / 0x10; l++) { g.DrawImage(Properties.Resources.MushroomSection, RenderX, RenderY); RenderX += 32; } img.RotateFlip(RotateFlipType.RotateNoneFlipX); g.DrawImage(img, RenderX, RenderY); break; case 175: g.DrawImage(Properties.Resources.BouncyBricks, RenderX - 40, RenderY - 48); break; case 180: if (Data[5] % 0x10 == 1) img = Properties.Resources.FenceKoopaRed; else img = Properties.Resources.FenceKoopaGreen; g.DrawImage(img, RenderX, RenderY); break; case 40: case 183: g.DrawImage(Properties.Resources.Lakitu, RenderX, RenderY - 23); break; case 186: g.DrawImage(Properties.Resources.Paragoomba, RenderX, RenderY - 12); break; case 187: g.DrawImage(Properties.Resources.ManualPlatform, RenderX, RenderY); if (Data[5] % 0x10 == 0 || Data[5] % 0x10 == 2) g.DrawImage(Properties.Resources.UpArrow, RenderX + 51, RenderY + 4); else if (Data[5] % 0x10 == 1) g.DrawImage(Properties.Resources.DownArrow, RenderX + 51, RenderY + 4); break; case 189: g.DrawImage(Properties.Resources.Pipe, RenderX, RenderY - 48); break; case 191: RenderY2 = Data[3] / 0x10; if (RenderY2 == 0) RenderY2 = 8; g.DrawImage(Properties.Resources.QBlock, RenderX, RenderY + (RenderY2 - 5) * 16); if (Data[5] % 0x10 <= 8) g.DrawImage(Properties.Resources.HangingBlockOverrides, RenderX, RenderY + (RenderY2 - 5) * 16, new Rectangle((Data[5] % 0x10) * 16, 0, 16, 16), GraphicsUnit.Pixel); g.DrawLine(Pens.White, RenderX + 7, RenderY + (RenderY2 - 5) * 16, RenderX + 7, RenderY - 80); g.DrawLine(Pens.White, RenderX + 8, RenderY + (RenderY2 - 5) * 16, RenderX + 8, RenderY - 80); break; case 193: g.DrawImage(Properties.Resources.DryBonesLarge, RenderX, RenderY - 28); break; case 194: g.DrawImage(Properties.Resources.GiantThwomp, RenderX, RenderY); break; case 197: RenderY2 = Data[4] / 0x10; //Tile number RenderY2 = RenderY2 < TileCreateNums.Length ? TileCreateNums[RenderY2] : 0x67; //Load actual number from hardcoded list width = Data[3] % 0x10; //Checkerboard pattern height = Data[4] % 0x10; //Create or destroy for (int l = 1; l <= Math.Max(1, Data[5] % 0x10); l++) { for (int m = 1; m <= Math.Max(1, Data[5] / 0x10); m++) { if (width == 0 || width == 1 && l % 2 == m % 2 || width == 2 && l % 2 != m % 2) //Checkerboard pattern { if (height == 0) g.DrawImage(Properties.Resources.DestroyTile, RenderX, RenderY); else if (RenderY2 < 0) //Negative number indicates an override tile g.DrawImage(Properties.Resources.tileoverrides, RenderX, RenderY, new Rectangle(-RenderY2, 0, 16, 16), GraphicsUnit.Pixel); else g.DrawImage(Level.GFX.Tilesets[0].Map16Buffer, RenderX, RenderY, new Rectangle(RenderY2 % 0x10 * 0x10, RenderY2 & 0xF0, 16, 16), GraphicsUnit.Pixel); } RenderX += 16; } RenderY += 16; RenderX = RenderX2; } if (height == 0) g.DrawRectangle(Pens.Black, this.getRect()); break; case 204: g.DrawImage(Properties.Resources.JumpingFlame, RenderX, RenderY - 7); break; case 205: g.DrawImage(Properties.Resources.FlameChomp, RenderX, RenderY - 27); break; case 206: g.DrawImage(Properties.Resources.GhostGoo, RenderX, RenderY - 32); break; case 207: if (Data[5] % 0x10 == 1) img = Properties.Resources.CheepCheepGiantGreen; else img = Properties.Resources.CheepCheepGiant; g.DrawImage(img, RenderX - 20, RenderY - 32); break; case 209: g.DrawImage(Properties.Resources.GiantHammerBro, RenderX, RenderY - 15); break; case 210: g.DrawImage(Properties.Resources.VSBattleStar, RenderX, RenderY); break; case 211: g.DrawImage(Properties.Resources.Blooper, RenderX, RenderY - 16); break; case 212: g.DrawImage(Properties.Resources.BlooperNanny, RenderX, RenderY - 16); break; case 213: g.DrawImage(Properties.Resources.BlooperWithMini, RenderX - 8, RenderY - 32); break; case 219: switch (Data[5] / 0x10) { case 1: g.DrawImage(Properties.Resources.SpinyBeetleLeft, RenderX - 4, RenderY); break; case 2: g.DrawImage(Properties.Resources.SpinyBeetleDown, RenderX, RenderY); break; case 3: g.DrawImage(Properties.Resources.SpinyBeetleRight, RenderX, RenderY); break; default: g.DrawImage(Properties.Resources.SpinyBeetleUp, RenderX, RenderY - 4); break; } break; case 220: g.DrawImage(Properties.Resources.BowserJr, RenderX, RenderY - 25); break; case 222: if (Data[5] / 0x10 == 1) RenderX += 8; if (Data[5] % 0x10 == 1) RenderY += 8; g.DrawImage(Properties.Resources.MiniGoomba, RenderX, RenderY); break; case 223: g.DrawImage(Properties.Resources.FlipGateSmall, RenderX, RenderY); break; case 224: g.DrawImage(Properties.Resources.FlipGateLarge, RenderX, RenderY); break; case 226: RenderY += (Data[5] & 0xF0) + 64; g.DrawLine(Pens.White, RenderX + 7, RenderY2, RenderX + 7, RenderY); g.DrawLine(Pens.White, RenderX + 8, RenderY2, RenderX + 8, RenderY); g.DrawImage(Properties.Resources.HangingScuttleBug, RenderX - 14, RenderY); break; case 227: g.DrawImage(Properties.Resources.MoneyBag, RenderX, RenderY - 5); break; case 228: g.DrawImage(Properties.Resources.RouletteBlock, RenderX, RenderY); break; case 232: g.DrawImage(Properties.Resources.QBlock, RenderX, RenderY); if (Data[5] % 0x10 < 10) g.DrawImage(Properties.Resources.HangingBlockOverrides, RenderX, RenderY, new Rectangle((Data[5] % 0x10) * 16, 0, 16, 16), GraphicsUnit.Pixel); g.DrawLine(Pens.White, RenderX + 7, RenderY - 128, RenderX + 7, RenderY); g.DrawLine(Pens.White, RenderX + 8, RenderY - 128, RenderX + 8, RenderY); break; case 233: for (int l = 0; l < Data[5] % 0x10 + 4; l++) { g.DrawImage(Properties.Resources.SwingingPole, RenderX - 3, RenderY); RenderY += 16; } g.DrawImage(Properties.Resources.LineAttachment, RenderX2 - 11, RenderY2 - 11); break; case 235: if (Data[5] / 0x10 == 1) RenderX += 8; if (Data[5] % 0x10 == 1) RenderY += 8; g.DrawImage(Properties.Resources.StarCoin, RenderX, RenderY); break; case 236: if (Data[2] / 0x10 == 1) RenderY += 8; g.DrawImage(Properties.Resources.SpinningSquarePlatform, RenderX - 16, RenderY - 16); break; case 237: g.DrawImage(Properties.Resources.Broozer, RenderX, RenderY - 15); break; case 238: g.DrawImage(Properties.Resources.MushroomStalkTop, RenderX + 6, RenderY + 24); RenderY += 32; for (int l = 0; l < 5; l++){ g.DrawImage(Properties.Resources.MushroomStalk, RenderX + 6, RenderY); RenderY += 16; } RenderX = X * 16 - 16 * (Data[5] / 0x10 + 1); RenderY = Y * 16; img = Properties.Resources.PurpleMushroomEdge; g.DrawImage(img, RenderX, RenderY); RenderX += 32; for (int l = 0; l < Data[5] / 0x10; l++) { g.DrawImage(Properties.Resources.PurpleMushroomSection, RenderX, RenderY); RenderX += 32; } img.RotateFlip(RotateFlipType.RotateNoneFlipX); g.DrawImage(img, RenderX, RenderY); break; case 239: g.DrawImage(Properties.Resources.RiseLowerMushroomStalkTop, RenderX, RenderY + 24); RenderY += 32; for (int l = 0; l <= Math.Max(Data[5] / 0x10, Data[4] % 0x10); l++) { g.DrawImage(Properties.Resources.RiseLowerMushroomStalk, RenderX, RenderY); RenderY += 16; } RenderX -= (Data[5] % 0x10 + 1) * 8; if (Data[5] / 0x10 > Data[4] % 0x10) { img = Properties.Resources.LoweringMushroomEdge; img2 = Properties.Resources.LoweringMushroomMiddle; } else { img = Properties.Resources.RisingMushroomEdge; img2 = Properties.Resources.RisingMushroomMiddle; } g.DrawImage(img, RenderX, RenderY2); for (int l = 0; l < Data[5] % 0x10; l++) { RenderX += 16; g.DrawImage(img2, RenderX, RenderY2); } img.RotateFlip(RotateFlipType.RotateNoneFlipX); g.DrawImage(img, RenderX + 16, RenderY2); break; case 241: img = Properties.Resources.RotatingCannon; img.RotateFlip(RotateFlipType.RotateNoneFlipX); for (int l = 0; l <= Math.Min(7, (int)Data[3]); l++) { if ((Data[4] & (1 << l)) > 0) g.DrawImage(Properties.Resources.RotatingCannonEmpty, RenderX + 2, RenderY); else if ((Data[5] & (1 << l)) > 0) g.DrawImage(img, RenderX - 3, RenderY); else g.DrawImage(Properties.Resources.RotatingCannon, RenderX + 1, RenderY); RenderY -= 16; } break; case 242: RenderX2 = Data[5] % 0x10; if (Data[5] / 0x10 == 1) { if (Data[4] % 0x10 == 1) g.DrawImage(Properties.Resources.ExpandedMushroomS, RenderX - 32, RenderY); else g.DrawImage(Properties.Resources.ExpandedMushroomL, RenderX - 72, RenderY); RenderX2++; RenderY2 -= 16; } else g.DrawImage(Properties.Resources.ContractedMushroom, RenderX - 8, RenderY); RenderY2 += 32; for (int l = 0; l < RenderX2; l++) { if (l == 0) g.DrawImage(Properties.Resources.ExpandMushroomStalkTop, RenderX, RenderY2); else g.DrawImage(Properties.Resources.ExpandMushroomStalk, RenderX, RenderY2); RenderY2 += 16; } break; case 243: g.DrawImage(Properties.Resources.RoofSpiny, RenderX, RenderY); break; case 244: switch (Data[5] / 0x10) { case 1: RenderX -= 8; break; case 2: RenderX += 8; break; } g.DrawImage(Properties.Resources.BouncingMushroom, RenderX - 40, RenderY); RenderY += 32; RenderX += 3; for (int l = 0; l < Data[5] % 0x10; l++) { g.DrawImage(Properties.Resources.BouncingMushroomStalk, RenderX, RenderY); RenderY += 16; } break; case 246: g.DrawImage(Properties.Resources.Barrel, RenderX - 16, RenderY - 8); break; case 247: g.DrawImage(Properties.Resources.Shark, RenderX - 27, RenderY - 8); g.DrawImage(Properties.Resources.Infinity, RenderX - 4, RenderY + 1); break; case 248: g.DrawImage(Properties.Resources.BalloonBoo, RenderX - 53, RenderY - 106); break; case 249: RenderX -= Data[5] % 0x10 * 8 + 24; RenderY += Data[4] / 0x10 * 16 + 88; int XOff = Data[5] % 0x10 * 16 + 48; for (int l = 0; l < Data[4] / 0x10 + 4; l++) { RenderY -= 16; g.DrawImage(Properties.Resources.WallJumpPlatformBlock, RenderX, RenderY); g.DrawImage(Properties.Resources.WallJumpPlatformBlock, RenderX + XOff, RenderY); } for (int l = 0; l < Data[5] % 0x10 + 2; l++){ RenderX += 16; g.DrawImage(Properties.Resources.WallJumpPlatformBlock, RenderX, RenderY); } g.DrawImage(Properties.Resources.LineAttachment, X * 16 - 3, Y * 16 + 5); break; case 250: g.DrawImage(Properties.Resources.Crow, RenderX, RenderY); break; case 252: g.DrawImage(Properties.Resources.BanzaiBillCannon, RenderX - 32, RenderY - 64); break; case 254: g.DrawImage(Properties.Resources.Kabomb, RenderX, RenderY - 3); break; case 255: g.DrawImage(Properties.Resources.Jungle, RenderX, RenderY); break; case 256: img = Properties.Resources.ThruWallPlatform; if (Data[3] / 0x10 == 0) g.DrawImage(img, RenderX - 80, RenderY); else { img.RotateFlip(RotateFlipType.RotateNoneFlipX); g.DrawImage(img, RenderX, RenderY); } break; case 265: g.DrawImage(Properties.Resources.Hand, RenderX + 8, RenderY); break; case 268: g.DrawImage(Properties.Resources.UnderwaterBounceBall, RenderX - 26, RenderY - 26); break; case 272: if (Data[5] % 0x10 == 1) g.DrawImage(Properties.Resources.SnowBranchLeft, RenderX - 31, RenderY - 12); else g.DrawImage(Properties.Resources.SnowBranchRight, RenderX + 15, RenderY - 12); break; case 273: g.DrawImage(Properties.Resources.SnowballThrower, RenderX, RenderY); break; case 274: img = Properties.Resources.SinkingSnowEdge; g.DrawImage(img, RenderX - 16, RenderY); for (int l = 0; l <= Data[5] % 0x10; l++) { g.DrawImage(Properties.Resources.SinkingSnow, RenderX, RenderY); RenderX += 16; } img.RotateFlip(RotateFlipType.RotateNoneFlipX); g.DrawImage(img, RenderX, RenderY); break; case 275: RenderY -= 14; g.DrawImage(Properties.Resources.JumpingQBlock, RenderX, RenderY); if ((Data[4] % 0x10) <= 3) g.DrawImage(Properties.Resources.JumpingQBlockOverrides, RenderX, RenderY + 3, new Rectangle((Data[4] % 0x10) * 16, 0, 16, 16), GraphicsUnit.Pixel); for (int l = 0; l < Data[5] % 0x10; l++) { RenderY -= 16; g.DrawImage(Properties.Resources.Brick, RenderX, RenderY); } break; case 277: int direction = Data[2] % 8; if (direction == 0 || direction == 2 || direction == 4 || direction == 6) img = Properties.Resources.Arrow; else img = Properties.Resources.ArrowRotate45; if (direction == 2 || direction == 3) img.RotateFlip(RotateFlipType.Rotate90FlipNone); if (direction == 4 || direction == 5) img.RotateFlip(RotateFlipType.Rotate180FlipNone); if (direction == 6 || direction == 7) img.RotateFlip(RotateFlipType.Rotate270FlipNone); g.DrawImage(img, RenderX, RenderY, 32, 32); break; case 278: g.DrawImage(ScaleBitmap(Properties.Resources.GroundpoundGoo, (Data[5] % 0x10 + 1) * 16, (Data[5] / 0x10 + 1) * 16), RenderX, RenderY); break; case 279: img = Properties.Resources.OneWayDoor; if (Data[5] == 0 || Data[5] == 1) { img.RotateFlip(RotateFlipType.RotateNoneFlipY); RenderY -= 39; } else if (Data[5] == 2 || Data[5] == 3) { RenderY += 16; } else if (Data[5] == 4 || Data[5] == 5) { img.RotateFlip(RotateFlipType.Rotate270FlipNone); RenderX += 16; } else if (Data[5] == 6 || Data[5] == 7) { img.RotateFlip(RotateFlipType.Rotate270FlipX); RenderX -= 39; } if (Data[5] == 0 || Data[5] == 2) img.RotateFlip(RotateFlipType.RotateNoneFlipX); else if (Data[5] == 4 || Data[5] == 6) img.RotateFlip(RotateFlipType.RotateNoneFlipY); g.DrawImage(img, RenderX, RenderY); break; case 281: img = Properties.Resources.PipeCaterpiller; if (Data[5] % 0x10 == 1) { img.RotateFlip(RotateFlipType.Rotate180FlipNone); g.DrawImage(img, RenderX + 10, RenderY + 16); } else g.DrawImage(img, RenderX + 10, RenderY - 15); break; case 282: RenderX -= 16; g.DrawImage(Properties.Resources.VineTop, RenderX, RenderY); for (int l = 0; l < Data[5] % 0x10 + 2; l++ ) { RenderY += 16; g.DrawImage(Properties.Resources.Vine, RenderX, RenderY); } g.DrawImage(Properties.Resources.VineBottom, RenderX, RenderY + 16); break; case 283: g.DrawImage(Properties.Resources.SpikeBass, RenderX, RenderY - 32); break; case 284: g.DrawImage(Properties.Resources.Pumpkin, RenderX, RenderY - 2); break; case 285: g.DrawImage(Properties.Resources.ScuttleBug, RenderX, RenderY - 8); break; case 289: g.DrawImage(Properties.Resources.ExpandableBlock, RenderX, RenderY); break; case 290: g.DrawImage(Properties.Resources.FlyingQBlock, RenderX - 9, RenderY - 13); if (Data[5] % 0x10 < 8) g.DrawImage(Properties.Resources.FlyingQBlockOverrides, RenderX, RenderY, new Rectangle((Data[5] % 0x10) * 16, 0, 16, 16), GraphicsUnit.Pixel); break; case 291: g.DrawImage(Level.GFX.Tilesets[0].Map16Buffer, RenderX, RenderY, new Rectangle(0, 0x50, 16, 16), GraphicsUnit.Pixel); g.DrawImage(Properties.Resources.QSwitch, RenderX + 2, RenderY + 1, 12, 14); break; case 292: g.DrawImage(Properties.Resources.Door2, RenderX, RenderY - 32); break; case 71: case 72: case 298: width = Data[5] % 0x10; int spikes = 0; if (this.Type == 298) { height = Data[5] / 0x10; spikes = Data[2] % 0x10; if (spikes == 1 || spikes == 3) { height -= 1; RenderY += 16; } if (spikes == 2 || spikes == 3) height -= 1; if (spikes == 4 || spikes == 6) width -= 1; if (spikes == 5 || spikes == 6) { width -= 1; RenderX += 16; } } else height = 0; if (width < 1) width = 1; if (height < 0) height = 0; int xp = RenderX; int yp = RenderY; if (height == 0) { g.DrawImage(Properties.Resources.StoneBlockFlatHorizLeft, RenderX, RenderY); for (int l = 0; l < width - 1; l++) { RenderX += 16; g.DrawImage(Properties.Resources.StoneBlockFlatHorizMiddle, RenderX, RenderY); } g.DrawImage(Properties.Resources.StoneBlockFlatHorizRight, RenderX + 16, RenderY); } else { g.DrawImage(Properties.Resources.StoneBlockTopLeft, RenderX, RenderY); for (int l = 0; l < width - 1; l++) { RenderX += 16; g.DrawImage(Properties.Resources.StoneBlockTop, RenderX, RenderY); } RenderX += 16; g.DrawImage(Properties.Resources.StoneBlockTopRight, RenderX, RenderY); for (int l = 0; l < height - 1; l++) { RenderY += 16; g.DrawImage(Properties.Resources.StoneBlockRight, RenderX, RenderY); } RenderY += 16; g.DrawImage(Properties.Resources.StoneBlockBottomRight, RenderX, RenderY); for (int l = 0; l < width - 1; l++) { RenderX -= 16; g.DrawImage(Properties.Resources.StoneBlockBottom, RenderX, RenderY); } RenderX -= 16; g.DrawImage(Properties.Resources.StoneBlockBottomLeft, RenderX, RenderY); for (int l = 0; l < height - 1; l++) { RenderY -= 16; g.DrawImage(Properties.Resources.StoneBlockLeft, RenderX, RenderY); } RenderX = xp; RenderY = yp; int xStart = RenderX; for (int l = 0; l < height - 1; l++) { RenderY += 16; for (int m = 0; m < width - 1; m++) { RenderX += 16; g.DrawImage(Properties.Resources.StoneBlockMiddle, RenderX, RenderY); } RenderX = xStart; } } if (spikes == 1 || spikes == 3) { RenderX = xp; RenderY = yp - 16; for (int l = 0; l <= width; l++) { g.DrawImage(Properties.Resources.StoneBlockSpikes, RenderX, RenderY); RenderX += 16; } } if (spikes == 2 || spikes == 3) { RenderX = xp; RenderY = (Y + height + 1) * 16; if (spikes == 3) RenderY += 16; Bitmap spikes2 = Properties.Resources.StoneBlockSpikes; spikes2.RotateFlip(RotateFlipType.RotateNoneFlipY); for (int l = 0; l <= Data[5] % 0x10; l++) { g.DrawImage(spikes2, RenderX, RenderY); RenderX += 16; } } if (spikes == 4 || spikes == 6) { RenderX = (X + width + 1) * 16; RenderY = yp; if (spikes == 6) RenderX += 16; Bitmap spikes2 = Properties.Resources.StoneBlockSpikes; spikes2.RotateFlip(RotateFlipType.Rotate90FlipNone); for (int l = 0; l <= Data[5] / 0x10; l++) { g.DrawImage(spikes2, RenderX, RenderY); RenderY += 16; } } if (spikes == 5 || spikes == 6) { RenderX = xp - 16; RenderY = yp; Bitmap spikes2 = Properties.Resources.StoneBlockSpikes; spikes2.RotateFlip(RotateFlipType.Rotate90FlipX); for (int l = 0; l <= height; l++) { g.DrawImage(spikes2, RenderX, RenderY); RenderY += 16; } } break; case 300: RenderY += -8 + Data[5] % 0x10; g.DrawImage(Properties.Resources.GhostPlatform, RenderX - 64, RenderY); break; case 303: g.DrawImage(Properties.Resources.SpinningSpikeBall, RenderX + 4, RenderY - 61); break; case 260: case 304: g.DrawImage(Properties.Resources.GiantSpike, RenderX, RenderY - 128); break; case 305: customRendered = false; RenderX2 = Math.Max(0, ((Data[4] >> 4) + ((Data[4] & 0xF) << 4) - 15) * 16); if (RenderX2 != 0) { g.FillRectangle(Brushes.Black, RenderX, RenderY + 6, RenderX2, 4); g.FillRectangle(Brushes.Black, RenderX + RenderX2 - 4, RenderY, 4, 10); g.FillRectangle(Brushes.White, RenderX + 1, RenderY + 7, RenderX2 - 2, 2); g.FillRectangle(Brushes.White, RenderX + RenderX2 - 3, RenderY + 1, 2, 8); } renderDefaultImg(g, RenderX, RenderY); break; case 306: customRendered = false; RenderX2 = (Data[5] & 0xF0) - 16; if (RenderX2 != 0) { g.FillRectangle(Brushes.Black, RenderX + 6, RenderY - RenderX2, 4, RenderX2 + 16); g.FillRectangle(Brushes.Black, RenderX, RenderY - RenderX2, 16, 4); g.FillRectangle(Brushes.White, RenderX + 7, RenderY - RenderX2 + 1, 2, RenderX2 + 14); g.FillRectangle(Brushes.White, RenderX + 1, RenderY - RenderX2 + 1, 14, 2); } renderDefaultImg(g, RenderX, RenderY); break; case 261: case 307: img = Properties.Resources.GiantSpike; img.RotateFlip(RotateFlipType.Rotate180FlipNone); g.DrawImage(img, RenderX, RenderY); break; case 262: case 308: img = Properties.Resources.GiantSpike; img.RotateFlip(RotateFlipType.Rotate90FlipNone); g.DrawImage(img, RenderX, RenderY); break; case 263: case 309: img = Properties.Resources.GiantSpike; img.RotateFlip(RotateFlipType.Rotate270FlipNone); g.DrawImage(img, RenderX - 128, RenderY); break; case 312: img = Properties.Resources.GreenMushroomEdge; img.RotateFlip(RotateFlipType.RotateNoneFlipX); width = Data[5] % 0x10 + 1; RenderX -= width * 8; g.DrawImage(Properties.Resources.GreenMushroomEdge, RenderX, RenderY); for (int l = 0; l <= width - 2; l++) { RenderX += 16; g.DrawImage(Properties.Resources.GreenMushroomMiddle, RenderX, RenderY); } g.DrawImage(img, RenderX + 16, RenderY); g.DrawImage(Properties.Resources.GreenMushroomStalkTop, RenderX2, RenderY + 24); for (int l = 0; l < Data[5] / 0x10; l++) { g.DrawImage(Properties.Resources.GreenMushroomStalk, RenderX2, RenderY + 49); RenderY += 16; } break; case 323: g.DrawImage(Properties.Resources.CloudLeftEdge, RenderX, RenderY); RenderX += 16; for (int l = 0; l <= Data[5]; l++) { g.DrawImage(Properties.Resources.CloudSection, RenderX, RenderY); RenderX += 32; } g.DrawImage(Properties.Resources.CloudRightEdge, RenderX, RenderY); break; default: customRendered = false; renderDefaultImg(g, RenderX, RenderY); break; } if (!Level.ValidSprites[this.Type] && customRendered) { g.FillRectangle(invalidBrush, this.getRect()); } //I dunno what's this user for. ~Dirbaio // return customRendered; }
public SpriteDataEditor(List<LevelItem> sprites, SpriteData sd, LevelEditorControl EdControl) { this.SizeChanged += new EventHandler(this_SizeChanged); updating = true; this.ColumnCount = 3; //Talbe layout panel doesn't automatically create row or column styles this.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); this.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); this.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F)); this.RowCount = sd.fields.Count; for (int l = 0; l < this.RowCount; l++) this.RowStyles.Add(new RowStyle(SizeType.Absolute)); this.AutoSize = true; this.AutoSizeMode = AutoSizeMode.GrowAndShrink; this.sprites = sprites; foreach (LevelItem obj in sprites) if (obj is NSMBSprite) { s = obj as NSMBSprite; break; } this.sd = sd; this.Dock = DockStyle.Fill; this.EdControl = EdControl; int row = 0; foreach (SpriteDataField v in sd.fields) { Control c = CreateControlFor(v); c.Anchor = AnchorStyles.Left | AnchorStyles.Right; if (c is CheckBox || c is Label) { c.Font = new System.Drawing.Font(c.Font.FontFamily, c.Font.Size * 0.9F); this.Controls.Add(c, 0, row); this.RowStyles[row].Height = 25; if (v.notes == "") this.SetColumnSpan(c, 3); else { NotesCtrl note = new NotesCtrl(); this.Controls.Add(note, 2, row); note.Text = v.notes; } } else { this.Controls.Add(c, 1, row); Label l = new Label(); l.Text = v.name; l.Font = new System.Drawing.Font(l.Font.FontFamily, l.Font.Size * 0.9F); l.TextAlign = System.Drawing.ContentAlignment.MiddleRight; l.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom; this.Controls.Add(l, 0, row); this.RowStyles[row].Height = 25; if (v.notes == "") this.SetColumnSpan(c, 2); else { NotesCtrl note = new NotesCtrl(); this.Controls.Add(note, 2, row); note.Text = v.notes; } } row++; controls.Add(v, c); } updating = false; }
public SpriteDataEditor(List <LevelItem> sprites, SpriteData sd, LevelEditorControl EdControl) { this.SizeChanged += new EventHandler(this_SizeChanged); updating = true; this.ColumnCount = 3; //Talbe layout panel doesn't automatically create row or column styles this.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); this.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); this.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F)); this.RowCount = sd.fields.Count; for (int l = 0; l < this.RowCount; l++) { this.RowStyles.Add(new RowStyle(SizeType.Absolute)); } this.AutoSize = true; this.AutoSizeMode = AutoSizeMode.GrowAndShrink; this.sprites = sprites; foreach (LevelItem obj in sprites) { if (obj is NSMBSprite) { s = obj as NSMBSprite; break; } } this.sd = sd; this.Dock = DockStyle.Fill; this.EdControl = EdControl; int row = 0; foreach (SpriteDataField v in sd.fields) { Control c = CreateControlFor(v); c.Anchor = AnchorStyles.Left | AnchorStyles.Right; if (c is CheckBox || c is Label) { c.Font = new System.Drawing.Font(c.Font.FontFamily, c.Font.Size * 0.9F); this.Controls.Add(c, 0, row); this.RowStyles[row].Height = 25; if (v.notes == "") { this.SetColumnSpan(c, 3); } else { NotesCtrl note = new NotesCtrl(); this.Controls.Add(note, 2, row); note.Text = v.notes; } } else { this.Controls.Add(c, 1, row); Label l = new Label(); l.Text = v.name; l.Font = new System.Drawing.Font(l.Font.FontFamily, l.Font.Size * 0.9F); l.TextAlign = System.Drawing.ContentAlignment.MiddleRight; l.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom; this.Controls.Add(l, 0, row); this.RowStyles[row].Height = 25; if (v.notes == "") { this.SetColumnSpan(c, 2); } else { NotesCtrl note = new NotesCtrl(); this.Controls.Add(note, 2, row); note.Text = v.notes; } } row++; controls.Add(v, c); } updating = false; }
// public void Render(Graphics g, int XOffset, int YOffset, Rectangle Clip, float zoom) public void render(Graphics g, LevelEditorControl ed) { //This method is really messy due to the quirky rendering of .NET //I need to do a lot of hacks to get objects rendered correctly with //high and low zoom. if (badObject) { g.DrawRectangle(new Pen(Color.Red, 4), new Rectangle(X * 16, Y * 16, Width * 16, Height * 16)); g.DrawLine(new Pen(Color.Red, 4), new Point(X * 16, (Y + Height) * 16), new Point((X + Width) * 16, (Y) * 16)); g.DrawLine(new Pen(Color.Red, 4), new Point((X + Width) * 16, (Y + Height) * 16), new Point((X) * 16, (Y) * 16)); return; } if (ed.zoom > 1) { RectangleF srcRect = new RectangleF(0, 0, 16, 16); RectangleF destRect = new RectangleF(X << 4, Y << 4, 16, 16); for (int xx = 0; xx < CachedObj.GetLength(0); xx++) for (int yy = 0; yy < CachedObj.GetLength(1); yy++) { int t = CachedObj[xx, yy]; if (t == -1) continue; destRect.X = (X + xx) << 4; destRect.Y = (Y + yy) << 4; srcRect.X = (t % 16) * 16 - 0.5f; srcRect.Y = (t / 16) * 16 - 0.5f; g.DrawImage(GFX.Tilesets[Tileset].Map16Buffer, destRect.X, destRect.Y, srcRect, GraphicsUnit.Pixel); if (!GFX.Tilesets[Tileset].UseOverrides) continue; int t2 = GFX.Tilesets[Tileset].Overrides[t]; if (t2 == -1) continue; if (t2 == 0) continue; srcRect.X = t2 * 16 - 0.5f; srcRect.Y = 0 - 0.5f; g.DrawImage(GFX.Tilesets[Tileset].OverrideBitmap, destRect.X, destRect.Y, srcRect, GraphicsUnit.Pixel); //int overridenum = Array.IndexOf(NSMBTileset.BehaviorOverrides, GFX.Tilesets[Tileset].TileBehaviors[t]); //if (overridenum > -1) // g.DrawImage(Properties.Resources.tileoverrides2, destRect.X, destRect.Y, new Rectangle(overridenum * 16, 0, 16, 16), GraphicsUnit.Pixel); } } else { Rectangle srcRect = new Rectangle(0, 0, 16, 16); Rectangle destRect = new Rectangle(X << 4, Y << 4, 16, 16); for (int xx = 0; xx < CachedObj.GetLength(0); xx++) for (int yy = 0; yy < CachedObj.GetLength(1); yy++) { int t = CachedObj[xx, yy]; if (t == -1) continue; destRect.X = (X + xx) << 4; destRect.Y = (Y + yy) << 4; srcRect.X = (t % 16) * 16; srcRect.Y = (t / 16) * 16; g.DrawImage(GFX.Tilesets[Tileset].Map16Buffer, destRect.X, destRect.Y, srcRect, GraphicsUnit.Pixel); if (!GFX.Tilesets[Tileset].UseOverrides) continue; int t2 = GFX.Tilesets[Tileset].Overrides[t]; if (t2 == -1) continue; if (t2 == 0) continue; srcRect.X = t2 * 16; srcRect.Y = 0; g.DrawImage(GFX.Tilesets[Tileset].OverrideBitmap, destRect.X, destRect.Y, srcRect, GraphicsUnit.Pixel); //int overridenum = Array.IndexOf(NSMBTileset.BehaviorOverrides, GFX.Tilesets[Tileset].TileBehaviors[t]); //if (overridenum > -1) // g.DrawImage(Properties.Resources.tileoverrides2, destRect.X, destRect.Y, new Rectangle(overridenum * 16, 0, 16, 16), GraphicsUnit.Pixel); } } }
public BackgroundDragEditionMode(NSMBLevel l, LevelEditorControl edc) : base(l, edc) { }
public void render(Graphics g, LevelEditorControl ed) { Pen p = Pens.LightSteelBlue; if (isZone) p = Pens.PaleGreen; g.DrawRectangle(p, X, Y, Width - 1, Height - 1); g.DrawRectangle(p, X + 1, Y + 1, Width - 3, Height - 3); Rectangle ViewablePixels = ed.ViewablePixels; int vx = ViewablePixels.X; int vy = ViewablePixels.Y; if (X + Width > vx && Y + Height > vy) { int numx = X; int numy = Y; if (numx < vx) numx = vx; if (numy < vy) numy = vy; if (isZone) numy += 16; g.DrawString(GetDisplayString(), NSMBGraphics.InfoFont, Brushes.White, (float)numx, (float)numy); } }
// public void Render(Graphics g, int XOffset, int YOffset, Rectangle Clip, float zoom) public void render(Graphics g, LevelEditorControl ed) { //This method is really messy due to the quirky rendering of .NET //I need to do a lot of hacks to get objects rendered correctly with //high and low zoom. if (badObject) { g.DrawRectangle(new Pen(Color.Red, 4), new Rectangle(X * 16, Y * 16, Width * 16, Height * 16)); g.DrawLine(new Pen(Color.Red, 4), new Point(X * 16, (Y + Height) * 16), new Point((X + Width) * 16, (Y) * 16)); g.DrawLine(new Pen(Color.Red, 4), new Point((X + Width) * 16, (Y + Height) * 16), new Point((X) * 16, (Y) * 16)); return; } if (ed.zoom > 1) { RectangleF srcRect = new RectangleF(0, 0, 16, 16); RectangleF destRect = new RectangleF(X << 4, Y << 4, 16, 16); for (int xx = 0; xx < CachedObj.GetLength(0); xx++) { for (int yy = 0; yy < CachedObj.GetLength(1); yy++) { int t = CachedObj[xx, yy]; if (t < 0) { continue; } destRect.X = (X + xx) << 4; destRect.Y = (Y + yy) << 4; srcRect.X = (t % 16) * 16 - 0.5f; srcRect.Y = (t / 16) * 16 - 0.5f; g.DrawImage(GFX.Tilesets[Tileset].Map16Buffer, destRect.X, destRect.Y, srcRect, GraphicsUnit.Pixel); if (!GFX.Tilesets[Tileset].UseOverrides) { continue; } int t2 = GFX.Tilesets[Tileset].Overrides[t]; if (t2 == -1) { continue; } if (t2 == 0) { continue; } srcRect.X = t2 * 16 - 0.5f; srcRect.Y = 0 - 0.5f; g.DrawImage(GFX.Tilesets[Tileset].OverrideBitmap, destRect.X, destRect.Y, srcRect, GraphicsUnit.Pixel); //int overridenum = Array.IndexOf(NSMBTileset.BehaviorOverrides, GFX.Tilesets[Tileset].TileBehaviors[t]); //if (overridenum > -1) // g.DrawImage(Properties.Resources.tileoverrides2, destRect.X, destRect.Y, new Rectangle(overridenum * 16, 0, 16, 16), GraphicsUnit.Pixel); } } } else { Rectangle srcRect = new Rectangle(0, 0, 16, 16); Rectangle destRect = new Rectangle(X << 4, Y << 4, 16, 16); for (int xx = 0; xx < CachedObj.GetLength(0); xx++) { for (int yy = 0; yy < CachedObj.GetLength(1); yy++) { int t = CachedObj[xx, yy]; if (t < 0) { continue; } destRect.X = (X + xx) << 4; destRect.Y = (Y + yy) << 4; srcRect.X = (t % 16) * 16; srcRect.Y = (t / 16) * 16; g.DrawImage(GFX.Tilesets[Tileset].Map16Buffer, destRect.X, destRect.Y, srcRect, GraphicsUnit.Pixel); if (!GFX.Tilesets[Tileset].UseOverrides) { continue; } int t2 = GFX.Tilesets[Tileset].Overrides[t]; if (t2 <= 0) { continue; } srcRect.X = t2 * 16; srcRect.Y = 0; g.DrawImage(GFX.Tilesets[Tileset].OverrideBitmap, destRect.X, destRect.Y, srcRect, GraphicsUnit.Pixel); //int overridenum = Array.IndexOf(NSMBTileset.BehaviorOverrides, GFX.Tilesets[Tileset].TileBehaviors[t]); //if (overridenum > -1) // g.DrawImage(Properties.Resources.tileoverrides2, destRect.X, destRect.Y, new Rectangle(overridenum * 16, 0, 16, 16), GraphicsUnit.Pixel); } } } }