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); }
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); }
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); } } }
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; }
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; }