public Item(UInt32 itemID, ItemGenerator generator)
     : this(itemID)
 {
     this._itemName      = generator.name;
     this._itemBitmap    = generator.itemBitmap;
     this._itemFunctions = generator.functions;
     this._itemType      = generator.typeOfItem;
 }
 public Item(UInt32 itemID, String name, SpriteItem myBitmap, Dictionary <Stimulus, float> functions, ItemType itemType)
     : this(itemID)
 {
     this._itemName      = name;
     this._itemBitmap    = myBitmap;
     this._itemType      = itemType;
     this._itemFunctions = functions;
 }
Example #3
0
            public Sprite(PPU self_)
            {
                self = self_;

                for (int i = 0; i < list.Length; i++)
                {
                    list[i] = new SpriteItem();
                }
            }
Example #4
0
        public void AddToScene(Scene2D scene2D)
        {
            AptPalantir.Reset();

            _window = _game.LoadAptWindow("Palantir.apt");
            _root   = _window.Root;

            _game.Scene2D.AptWindowManager.PushWindow(_window);
        }
        public ItemGenerator(String givenName, SpriteItem givenBitmap, ItemType givenType, Dictionary <ItemProperty, float> givenFunctions)
        {
            this.name       = givenName;
            this.typeOfItem = givenType;
            this.functions  = givenFunctions;

            this.itemBitmap = givenBitmap;
            //this.itemBitmap.MakeTransparent(itemBitmap.GetPixel(0,0)); // am trying to modify static field?
        }
Example #6
0
 public WrappedDisplayItem(Character character, AptContext context, SpriteItem parent)
 {
     Visible = true;
     Item    = AddDisposable <DisplayItem>(character switch
     {
         Playable _ => new SpriteItem(),
         Button _ => new ButtonItem(),
         _ => new RenderItem(),
     });
Example #7
0
        public static Sprite GetSprite(string name)
        {
            SpriteItem item;
            if (!Sprites.ContainsKey(name))
            {
                item = new SpriteItem(SpriteBank.Game);
                item.AssetName = name;
                Sprites.Add(name, item);
            }
            else
                item = Sprites[name];

            return item.Sprite;
        }
Example #8
0
    void DrawToggleSpriteItem(UISprite sprite, bool toggle)
    {
        SpriteItem spriteItem = new SpriteItem(sprite, toggle);

        spriteItem.SetChangeAtlas(selectAtlas);
        spriteItem.SetIsShowName(isNeedChangeName);
        spriteItem.SetIsShowPos(isNeedChangeTs);
        spriteItem.DrawItem();

        //DrawButton("输出颜色", () =>
        //{
        //    var RgbColor = sprite.color;
        //    var HSBColor = RGBConvertToHSV(RgbColor);
        //    Debug.LogError(string.Format("RGB:{0},HSV{1}", sprite.color, HSBColor));
        //}, 50, 20);
    }
Example #9
0
 public bool on_scanline(SpriteItem sprite)
 {
     if (sprite.x > 256 && (sprite.x + sprite.width() - 1) < 512)
     {
         return false;
     }
     int height = (regs.interlace == false ? (int)sprite.height() : (int)(sprite.height() >> 1));
     if (t.y >= sprite.y && t.y < (sprite.y + height))
     {
         return true;
     }
     if ((sprite.y + height) >= 256 && t.y < ((sprite.y + height) & 255))
     {
         return true;
     }
     return false;
 }
Example #10
0
        public Sprite(GameObject baseObject, Vector3 position, int spriteIndex, Texture2D texture, IDictionary <int, SpriteItem> spriteDictionary)
        {
            var item = new SpriteItem(SpriteType.Car);

            //Bus
            //item.Sprite = 10;
            //item.Model = 11;
            //item.Remap = 4;

            //Cop
            //item.Sprite = 11;
            //item.Model = 12;
            //item.Remap = 36;

            item.SpriteId = 10;
            //item.Model = 10;
            //item.Remap = -1;

            var sourceRectangle = spriteDictionary[item.SpriteId].Rectangle;

            Width       = sourceRectangle.Width / 64f; //1 Unit = 64px
            Height      = sourceRectangle.Height / 64f;
            _widthHalf  = Width / 2;
            _heightHalf = Height / 2;

            SetNeutralPosition(position);


            SpriteIndex = spriteIndex;

            //Texture
            double pixelPerWidth  = 1f / texture.Width;
            double pixelPerHeight = 1f / texture.Height;

            TexturePositionTopLeft     = new Vector2((float)((sourceRectangle.X + 1) * pixelPerWidth), (float)((sourceRectangle.Y + 1) * pixelPerHeight));
            TexturePositionTopRight    = new Vector2((float)((sourceRectangle.X + sourceRectangle.Width - 1) * pixelPerWidth), (float)((sourceRectangle.Y + 1) * pixelPerHeight));
            TexturePositionBottomRight = new Vector2((float)((sourceRectangle.X + sourceRectangle.Width - 1) * pixelPerWidth), (float)((sourceRectangle.Y + sourceRectangle.Height - 1) * pixelPerHeight));
            TexturePositionBottomLeft  = new Vector2((float)((sourceRectangle.X + 1) * pixelPerWidth), (float)((sourceRectangle.Y + sourceRectangle.Height - 1) * pixelPerHeight));
        }
Example #11
0
        public bool loadDat(string filename, UInt32 signature)
        {
            FileStream fileStream = new FileStream(filename, FileMode.Open);

            try
            {
                using (BinaryReader reader = new BinaryReader(fileStream))
                {
                    UInt32 datSignature = reader.ReadUInt32();
                    if (signature != 0 && datSignature != signature)
                    {
                        Trace.WriteLine(String.Format("Plugin: Bad signature, dat signature is {0} and signature is {0}", datSignature, signature));
                        return(false);
                    }

                    //get max id
                    UInt16 itemCount = reader.ReadUInt16();
                    Trace.WriteLine(String.Format("Plugin: itemCount is {0}", itemCount));
                    UInt16 creatureCount = reader.ReadUInt16();
                    UInt16 effectCount   = reader.ReadUInt16();
                    UInt16 distanceCount = reader.ReadUInt16();

                    UInt16 minclientID = 100; //items starts at 100
                    UInt16 maxclientID = itemCount;

                    UInt16 id = minclientID;
                    while (id <= maxclientID)
                    {
                        SpriteItem item = new SpriteItem();
                        item.id   = id;
                        items[id] = item;

                        // read the options until we find 0xff
                        byte optbyte;
                        do
                        {
                            optbyte = reader.ReadByte();
                            //Trace.WriteLine(String.Format("{0:X}", optbyte));

                            switch (optbyte)
                            {
                            case 0x00:     //groundtile
                            {
                                item.groundSpeed = reader.ReadUInt16();
                                item.type        = ItemType.Ground;
                            } break;

                            case 0x01:     //all OnTop
                            {
                                item.alwaysOnTop      = true;
                                item.alwaysOnTopOrder = 1;
                            } break;

                            case 0x02:     //can walk trough (open doors, arces, bug pen fence)
                            {
                                item.alwaysOnTop      = true;
                                item.alwaysOnTopOrder = 2;
                            } break;

                            case 0x03:     //can walk trough (arces)
                            {
                                item.alwaysOnTop      = true;
                                item.alwaysOnTopOrder = 3;
                            } break;

                            case 0x04:     //container
                            {
                                item.type = ItemType.Container;
                            } break;

                            case 0x05:     //stackable
                            {
                                item.isStackable = true;
                                break;
                            }

                            case 0x06:     //unknown
                            {
                            } break;

                            case 0x07:     //useable
                            {
                                item.hasUseWith = true;
                            } break;

                            case 0x08:     //read/write-able
                            {
                                item.isReadable = true;
                                //item.isWriteable = true;
                                item.maxReadWriteChars = reader.ReadUInt16();
                            } break;

                            case 0x09:     //readable
                            {
                                item.isReadable   = true;
                                item.maxReadChars = reader.ReadUInt16();
                            } break;

                            case 0x0A:     //fluid containers
                            {
                                item.type = ItemType.Fluid;
                            } break;

                            case 0x0B:     //splashes
                            {
                                item.type = ItemType.Splash;
                            } break;

                            case 0x0C:     //blocks solid objects (creatures, walls etc)
                            {
                                item.blockObject = true;
                            } break;

                            case 0x0D:     //not moveable
                            {
                                item.isMoveable = false;
                            } break;

                            case 0x0E:     //blocks missiles (walls, magic wall etc)
                            {
                                item.blockProjectile = true;
                            } break;

                            case 0x0F:     //blocks pathfind algorithms (monsters)
                            {
                                item.blockPathFind = true;
                            } break;

                            case 0x10:     // no move animation
                            {
                                // item.noMoveAnimation = true;
                            } break;

                            case 0x11:     //blocks monster movement (flowers, parcels etc)
                            {
                                item.isPickupable = true;
                            } break;

                            case 0x12:     //hangable objects (wallpaper etc)
                            {
                                item.isHangable = true;
                            } break;

                            case 0x13:     //horizontal wall
                            {
                                item.isHorizontal = true;
                            } break;

                            case 0x14:     //vertical wall
                            {
                                item.isVertical = true;
                            } break;

                            case 0x15:     //rotatable
                            {
                                item.isRotatable = true;
                            } break;

                            case 0x16:     //light info
                            {
                                item.lightLevel = reader.ReadUInt16();
                                item.lightColor = reader.ReadUInt16();
                            } break;

                            case 0x17:     //unknown
                            {
                            } break;

                            case 0x18:     //changes floor
                            {
                            } break;

                            case 0x19:     //unknown
                            {
                                reader.BaseStream.Seek(4, SeekOrigin.Current);
                            } break;

                            case 0x1A:
                            {
                                item.hasHeight = true;
                                UInt16 height = reader.ReadUInt16();
                            } break;

                            case 0x1B:     //unknown
                            {
                            } break;


                            case 0x1C:     //unknown
                            {
                            } break;

                            case 0x1D:     //minimap color
                            {
                                item.minimapColor = reader.ReadUInt16();
                                break;
                            }

                            case 0x1E:     //in-game help info
                            {
                                UInt16 opt = reader.ReadUInt16();
                                if (opt == 1112)
                                {
                                    item.isReadable = true;
                                }
                            } break;

                            case 0x1F:     //full tile
                            {
                                item.walkStack = true;
                            } break;

                            case 0x20:     //look through (borders)
                            {
                                item.lookThrough = true;
                            } break;

                            case 0x21:     //unknown
                            {
                                reader.ReadUInt16();
                            } break;

                            case 0x22:                             //market
                            {
                                reader.ReadUInt16();               // category
                                item.wareId = reader.ReadUInt16(); // trade as
                                reader.ReadUInt16();               // show as
                                var size = reader.ReadUInt16();
                                item.name = new string(reader.ReadChars(size));

                                reader.ReadUInt16();         // profession
                                reader.ReadUInt16();         // level
                            }
                            break;

                            case 0xFF:     //end of attributes
                            {
                            } break;

                            default:
                            {
                                Trace.WriteLine(String.Format("Plugin: Error while parsing, unknown optbyte 0x{0:X} at id {1}", optbyte, id));
                                return(false);
                            }
                            }
                        } while (optbyte != 0xFF);

                        item.width  = reader.ReadByte();
                        item.height = reader.ReadByte();
                        if ((item.width > 1) || (item.height > 1))
                        {
                            reader.BaseStream.Position++;
                        }

                        item.frames          = reader.ReadByte();
                        item.xdiv            = reader.ReadByte();
                        item.ydiv            = reader.ReadByte();
                        item.zdiv            = reader.ReadByte();
                        item.animationLength = reader.ReadByte();
                        item.isAnimation     = item.animationLength > 1;

                        item.numSprites =
                            (UInt32)item.width * (UInt32)item.height *
                            (UInt32)item.frames *
                            (UInt32)item.xdiv * (UInt32)item.ydiv * item.zdiv *
                            (UInt32)item.animationLength;

                        // Read the sprite ids
                        for (UInt32 i = 0; i < item.numSprites; ++i)
                        {
                            var    spriteId = reader.ReadUInt32();
                            Sprite sprite;
                            if (!sprites.TryGetValue(spriteId, out sprite))
                            {
                                sprite            = new Sprite();
                                sprite.id         = spriteId;
                                sprites[spriteId] = sprite;
                            }
                            item.spriteList.Add(sprite);
                        }
                        ++id;
                    }
                }
            }
            finally
            {
                fileStream.Close();
            }
            return(true);
        }
        public ItemGenerator(String givenName, SpriteItem givenBitmap, ItemType givenType, Dictionary<Stimulus, float> givenFunctions)
        {
            this.name = givenName;
            this.typeOfItem = givenType;
            this.functions = givenFunctions;

            this.itemBitmap = givenBitmap;
            //this.itemBitmap.MakeTransparent(itemBitmap.GetPixel(0,0)); // am trying to modify static field?
        }
Example #13
0
        public void AddSprite( string name, SpriteData spriteData )
        {
            SpriteItem item    = new SpriteItem( spriteData,
                                                 CurrentAnimationDirection,
                                                 CurrentAnimationName,
                                                 CurrentFrame );

            mSpriteList.Add( item );
            mSpriteTable.Add( name, item );
        }
Example #14
0
 public SpriteEventArgs(SpriteItem sprite)
 {
     Sprite = sprite;
 }
Example #15
0
        public void ImportFrames(IEnumerable <string> fileNames, int padding)
        {
            var sprites = fileNames.Select(x =>
            {
                var item = new SpriteItem
                {
                    Name   = Path.GetFileNameWithoutExtension(x),
                    Sprite = new BitmapImage(new Uri(x))
                };
                item.AreaSize = item.Sprite.PixelWidth * item.Sprite.PixelHeight;
                return(item);
            })
                          .OrderByDescending(x => x.AreaSize)
                          .ThenByDescending(x => x.Sprite.PixelWidth)
                          .ToArray();

            int  width = 64, height = 64;
            bool increaser = false;

            bool failed = true;

            do
            {
                failed = false;
                var packer = new ArevaloRectanglePacker(width, height);
                foreach (var item in sprites)
                {
                    int spriteWidth  = item.Sprite.PixelWidth;
                    int spriteHeight = item.Sprite.PixelHeight;

                    Sizei size = new Sizei
                    {
                        Width  = spriteWidth + padding,
                        Height = spriteHeight + padding
                    };

                    if (!packer.TryPack(size.Width, size.Height, out var origin))
                    {
                        failed = true;
                        break;
                    }

                    item.Rectangle = Recti.FromSize(origin.X, origin.Y, spriteWidth, spriteHeight);
                }

                if (failed)
                {
                    if (increaser)
                    {
                        height *= 2;
                    }
                    else
                    {
                        width *= 2;
                    }
                    increaser = !increaser;
                }
            } while (failed);

            var dicFrames     = Frames.ToDictionary(x => x.Name, x => x);
            var newFramesList = new List <Frame>(Frames.Capacity);

            foreach (var sprite in sprites)
            {
                if (dicFrames.TryGetValue(sprite.Name, out var frame))
                {
                    frame.Left   = sprite.Rectangle.Left;
                    frame.Top    = sprite.Rectangle.Top;
                    frame.Right  = sprite.Rectangle.Right;
                    frame.Bottom = sprite.Rectangle.Bottom;
                }
                else
                {
                    frame = new Frame()
                    {
                        Name    = sprite.Name,
                        Left    = sprite.Rectangle.Left,
                        Top     = sprite.Rectangle.Top,
                        Right   = sprite.Rectangle.Right,
                        Bottom  = sprite.Rectangle.Bottom,
                        CenterX = sprite.Rectangle.Width / 2,
                        CenterY = sprite.Rectangle.Height / 2
                    };
                }
                newFramesList.Add(frame);
            }

            var drawingVisual = new DrawingVisual();

            using (var drawingContext = drawingVisual.RenderOpen())
            {
                foreach (var sprite in sprites)
                {
                    drawingContext.DrawImage(sprite.Sprite, new Rect()
                    {
                        X      = sprite.Rectangle.X,
                        Y      = sprite.Rectangle.Y,
                        Width  = sprite.Rectangle.Width,
                        Height = sprite.Rectangle.Height
                    });
                }
            }

            var renderTargetBitmap = new RenderTargetBitmap(width, height, 96.0f, 96.0f, PixelFormats.Pbgra32);

            renderTargetBitmap.Render(drawingVisual);

            Texture = renderTargetBitmap;
            Frames.Clear();
            Frames.AddRange(newFramesList.OrderBy(x => x.Name));
        }
 public Item(UInt32 itemID, String name, SpriteItem myBitmap, Dictionary<Stimulus, float> functions, ItemType itemType, Inventory parent)
     : this(itemID, name, myBitmap, functions, itemType)
 {
     this._parent = parent;
 }
 public Item(UInt32 itemID, String name, SpriteItem myBitmap, Dictionary<Stimulus, float> functions, ItemType itemType)
     : this(itemID)
 {
     this._itemName = name;
     this._itemBitmap = myBitmap;
     this._itemType = itemType;
     this._itemFunctions = functions;
 }
 public Item(UInt32 itemID, ItemGenerator generator)
     : this(itemID)
 {
     this._itemName = generator.name;
     this._itemBitmap = generator.itemBitmap;
     this._itemFunctions = generator.functions;
     this._itemType = generator.typeOfItem;
 }
Example #19
0
 public void Register(SpriteBatchType type, Vector2 position, Vector2i tile, bool flip_u, Vector2 scale)
 {
     if(SpriteItemLists[(int)type]==null) {
         SpriteItemLists[(int)type] = new List<SpriteItem>();
     }
     var list = SpriteItemLists[(int)type];
     var item = new SpriteItem();
     item.position = position;
     item.tile = tile;
     item.flip_u = flip_u;
     item.scale = scale;
     list.Add(item);
 }
 public Item(UInt32 itemID, String name, SpriteItem myBitmap, Dictionary <Stimulus, float> functions, ItemType itemType, Inventory parent)
     : this(itemID, name, myBitmap, functions, itemType)
 {
     this._parent = parent;
 }