void UpdateCursor() { #if notyet if (mouseOverElement == null) { /* are we over a unit? if so, display the mag cursor */ unitUnderCursor = null; for (int i = 0; i < units.Count; i++) { Unit u = units[i]; Sprite s = u.Sprite; int sx, sy; s.GetPosition(out sx, out sy); int cursor_x = Game.Instance.Cursor.X + topleft_x; int cursor_y = Game.Instance.Cursor.Y + topleft_y; int half_width = u.Width / 2; int half_height = u.Height / 2; if (cursor_x < sx + half_width && cursor_x > sx - half_width && cursor_y < sy + half_height && cursor_y > sy - half_height) { Game.Instance.Cursor = MagCursors[MAG_CURSOR_G]; unitUnderCursor = u; break; } } } #endif }
void NavigateAlongPath() { int sprite_x, sprite_y; sprite.GetPosition(out sprite_x, out sprite_y); Console.WriteLine("starting pixel position = {0},{1}", sprite_x, sprite_y); startCurrentSegment = navigatePath[0]; navigatePath.RemoveAt(0); endCurrentSegment = navigatePath[0]; sprite.Face(ClassifyDirection(startCurrentSegment, endCurrentSegment)); int start_pixel_x = X * 4 + 4; int start_pixel_y = X * 4 + 4; dest_pixel_x = endCurrentSegment.X * 4 + 4; dest_pixel_y = endCurrentSegment.Y * 4 + 4; delta_x = dest_pixel_x - start_pixel_x; delta_y = dest_pixel_y - start_pixel_y; pixel_x = start_pixel_x; pixel_y = start_pixel_y; sprite.RunScript(AnimationType.Walking); Game.Instance.Tick += NavigateTick; }
public Sprite(Sprite parentSprite, ushort images_entry, byte[] palette) { this.parent_sprite = parentSprite; this.mpq = parentSprite.mpq; this.palette = palette; this.images_entry = images_entry; uint grp_index = GlobalResources.Instance.ImagesDat.GrpIndexes [images_entry]; grp_path = GlobalResources.Instance.ImagesTbl[(int)grp_index - 1]; grp = (Grp)mpq.GetResource("unit\\" + grp_path); this.buf = GlobalResources.Instance.IScriptBin.Contents; iscript_entry = GlobalResources.Instance.ImagesDat.IScriptIndexes [images_entry]; script_entry_offset = GlobalResources.Instance.IScriptBin.GetScriptEntryOffset(iscript_entry); Console.WriteLine("new dependent sprite: unit\\{0} (image {1}, iscript id {2}, script_entry_offset {3:X})", grp_path, images_entry, iscript_entry, script_entry_offset); /* make sure the offset points to "SCEP" */ if (Util.ReadDWord(buf, script_entry_offset) != 0x45504353) { Console.WriteLine("invalid script_entry_offset"); } int x, y; parentSprite.GetPosition(out x, out y); SetPosition(x, y); }
public Sprite (Sprite parentSprite, ushort images_entry, byte[] palette) { this.parent_sprite = parentSprite; this.mpq = parentSprite.mpq; this.palette = palette; this.images_entry = images_entry; uint grp_index = GlobalResources.Instance.ImagesDat.GrpIndexes [images_entry]; grp_path = GlobalResources.Instance.ImagesTbl[(int)grp_index-1]; grp = (Grp)mpq.GetResource ("unit\\" + grp_path); this.buf = GlobalResources.Instance.IScriptBin.Contents; iscript_entry = GlobalResources.Instance.ImagesDat.IScriptIndexes [images_entry]; script_entry_offset = GlobalResources.Instance.IScriptBin.GetScriptEntryOffset (iscript_entry); Console.WriteLine ("new dependent sprite: unit\\{0} (image {1}, iscript id {2}, script_entry_offset {3:X})", grp_path, images_entry, iscript_entry, script_entry_offset); /* make sure the offset points to "SCEP" */ if (Util.ReadDWord (buf, script_entry_offset) != 0x45504353) Console.WriteLine ("invalid script_entry_offset"); int x, y; parentSprite.GetPosition (out x, out y); SetPosition (x,y); }