Exemplo n.º 1
0
        public static void Run(ZsprToRdcOptions opts)
        {
            var inputFilename  = opts.File;
            var outputFilename = Path.ChangeExtension(opts.File, "z3.rdc");

            if (!File.Exists(opts.File))
            {
                Console.Error.WriteLine($"The file {opts.File} does not exist");
            }

            using var input  = File.OpenRead(opts.File);
            using var output = File.Open(outputFilename, FileMode.Create);

            var zspr = Zspr.Parse(input);

            var meta = new MetaDataBlock(new JObject(
                                             new JProperty("title", zspr.Title),
                                             new JProperty("author", zspr.Author)));

            var sprite = new LinkSprite();

            sprite.Parse(new MemoryStream(zspr.Content));

            Rdc.Write(output, zspr.AuthorAscii, meta, sprite);
        }
Exemplo n.º 2
0
        public IProjectile CreateBoomerangItem(SpriteBatch spriteBatch, LinkSprite linkState, Vector2 dir)
        {
            IProjectile newProj = new BoomerangProjectile(spriteBatch, boomerang, linkState, dir, game, ItemConstants.BoomerangTravelDistance);

            projectiles.Add(newProj);
            RoomProjectiles.Instance.projectiles.Add(newProj);
            return(newProj);
        }
Exemplo n.º 3
0
        public void Draw(SpriteBatch spriteBatch, Vector2 parentPos)
        {
            LinkSprite s = (LinkSprite)Sprite;

            s.overlayColor = Color.White;
            Sprite         = s;
            Sprite.Draw(spriteBatch, parentPos + Position);
            for (int i = 0; i < ActiveItems.Count; i++)
            {
                if (game.lightingManager.InsideVisibleRegion(ActiveItems[i].Position + parentPos))
                {
                    ActiveItems[i].Draw(spriteBatch, parentPos);
                }
            }
        }
Exemplo n.º 4
0
        public LinkStateMachine(Game1 game, LinkSprite linkSprite, Vector2 centerPosition)
        {
            this.centerPosition = centerPosition;
            mode          = LinkMode.Still;
            linkInventory = new LinkInventory(game, this);

            currDirection = new Vector2(LinkConstants.defaultXDirection, LinkConstants.defaultYDirection);
            speed         = LinkConstants.defaultSpeed;

            this.linkSprite = linkSprite;

            totalHealth = HeartConstants.DefaultHeartCount;
            health      = totalHealth;

            remainingDamageDelay = DamageConstants.DamageDisableDelay;
            lowHealthSoundDelay  = LinkConstants.defaultSoundDelay;

            shoveDistance = LinkConstants.defaultShoveDistance;
            PauseMovement = false;
            isGrabbed     = false;
        }
Exemplo n.º 5
0
        public Link(Game1 game)
        {
            this.game = game;
            // TODO Add this into sprite factory
            Texture2D          linkTexture = game.Content.Load <Texture2D>("Link");
            Texture2D          linkDamageSequenceTexture = game.Content.Load <Texture2D>("LinkDamageSequence");
            Texture2D          linkDeathTexture          = game.Content.Load <Texture2D>("LinkDeath");
            Texture2D          rectangleTexture          = new Texture2D(game.GraphicsDevice, 1, 1);
            GenericTextureMask linkDamageMaskHandler     = new GenericTextureMask(linkTexture, linkDamageSequenceTexture, LinkConstants.DamageMaskRows, LinkConstants.DamageMaskCols, 0);
            SingleMaskHandler  linkDeathMaskHandler      = new SingleMaskHandler(linkTexture, linkDeathTexture);

            Vector2 centerPosition = new Vector2(0, 0);

            linkSprite       = new LinkSprite(game.SpriteBatch, linkTexture, rectangleTexture, LinkConstants.LinkTextureRows, LinkConstants.LinkTextureCols, linkDamageMaskHandler, linkDeathMaskHandler, centerPosition);
            linkStateMachine = new LinkStateMachine(game, linkSprite, centerPosition);
            linkInventory    = linkStateMachine.Inventory;
            linkInventory.ChangeItem(InventoryManager.ItemType.None);

            //Link's body does no damage itself
            this.collidable      = new PlayerCollidable(this, 0, game);
            isGrabbed            = false;
            remainingDamageDelay = DamageConstants.DamageDisableDelay;
        }