Esempio n. 1
0
        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
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
		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);
		}