Got "transparent" boudning boxes working for objects that can be passed through.
This commit is contained in:
parent
f46379f9e6
commit
5c78f88e6a
|
@ -29,6 +29,8 @@ namespace Revitalize.Framework.Objects
|
||||||
|
|
||||||
public Color drawColor;
|
public Color drawColor;
|
||||||
|
|
||||||
|
public bool ignoreBoundingBox;
|
||||||
|
|
||||||
public BasicItemInformation() : base()
|
public BasicItemInformation() : base()
|
||||||
{
|
{
|
||||||
name = "";
|
name = "";
|
||||||
|
@ -46,7 +48,7 @@ namespace Revitalize.Framework.Objects
|
||||||
this.drawColor = Color.White;
|
this.drawColor = Color.White;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BasicItemInformation(string name, string description, string categoryName, Color categoryColor,int edibility,int fragility,bool isLamp,int price, Vector2 TileLocation,bool canBeSetOutdoors,bool canBeSetIndoors,string id, string data, Texture2D texture, Color color,int tileIndex, bool bigCraftable, Type type, CraftingData craftingData, AnimationManager animationManager,Color DrawColor):base(id,data,texture,color,tileIndex,bigCraftable,type,craftingData)
|
public BasicItemInformation(string name, string description, string categoryName, Color categoryColor,int edibility,int fragility,bool isLamp,int price, Vector2 TileLocation,bool canBeSetOutdoors,bool canBeSetIndoors,string id, string data, Texture2D texture, Color color,int tileIndex, bool bigCraftable, Type type, CraftingData craftingData, AnimationManager animationManager,Color DrawColor,bool ignoreBoundingBox):base(id,data,texture,color,tileIndex,bigCraftable,type,craftingData)
|
||||||
{
|
{
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
|
@ -82,7 +84,8 @@ namespace Revitalize.Framework.Objects
|
||||||
{
|
{
|
||||||
this.drawColor = DrawColor;
|
this.drawColor = DrawColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.ignoreBoundingBox = ignoreBoundingBox;
|
||||||
|
|
||||||
recreateDataString();
|
recreateDataString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,10 +92,27 @@ namespace Revitalize.Framework.Objects
|
||||||
this.isLamp.Value = false;
|
this.isLamp.Value = false;
|
||||||
this.fragility.Value = 0;
|
this.fragility.Value = 0;
|
||||||
|
|
||||||
this.updateDrawPosition();
|
this.updateDrawPosition(0,0);
|
||||||
|
|
||||||
this.bigCraftable.Value = false;
|
this.bigCraftable.Value = false;
|
||||||
|
|
||||||
|
|
||||||
|
if (this.info.ignoreBoundingBox)
|
||||||
|
{
|
||||||
|
this.boundingBox.Value = new Rectangle(Int32.MinValue, Int32.MinValue, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Rectangle getBoundingBox(Vector2 tileLocation)
|
||||||
|
{
|
||||||
|
if (this.info.ignoreBoundingBox)
|
||||||
|
{
|
||||||
|
return new Rectangle(Int32.MinValue, Int32.MinValue, 0, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return base.getBoundingBox(tileLocation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -195,7 +212,9 @@ namespace Revitalize.Framework.Objects
|
||||||
{
|
{
|
||||||
Game1.createItemDebris(this, Game1.player.getStandingPosition(), Game1.player.getDirection());
|
Game1.createItemDebris(this, Game1.player.getStandingPosition(), Game1.player.getDirection());
|
||||||
this.location = null;
|
this.location = null;
|
||||||
|
this.updateDrawPosition(0, 0);
|
||||||
Game1.player.currentLocation.removeObject(this.TileLocation, false);
|
Game1.player.currentLocation.removeObject(this.TileLocation, false);
|
||||||
|
this.updateDrawPosition(0, 0);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,6 +236,7 @@ namespace Revitalize.Framework.Objects
|
||||||
this.location = null;
|
this.location = null;
|
||||||
Game1.player.currentLocation.removeObject(this.TileLocation, false);
|
Game1.player.currentLocation.removeObject(this.TileLocation, false);
|
||||||
Game1.player.addItemToInventory(this);
|
Game1.player.addItemToInventory(this);
|
||||||
|
this.updateDrawPosition(0, 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -261,7 +281,7 @@ namespace Revitalize.Framework.Objects
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public override bool placementAction(GameLocation location, int x, int y, Farmer who = null)
|
public override bool placementAction(GameLocation location, int x, int y, Farmer who = null)
|
||||||
{
|
{
|
||||||
this.updateDrawPosition();
|
this.updateDrawPosition(x,y);
|
||||||
this.location = location;
|
this.location = location;
|
||||||
return base.placementAction(location, x, y, who);
|
return base.placementAction(location, x, y, who);
|
||||||
}
|
}
|
||||||
|
@ -269,9 +289,10 @@ namespace Revitalize.Framework.Objects
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates a visual draw position.
|
/// Updates a visual draw position.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void updateDrawPosition()
|
public virtual void updateDrawPosition(int x, int y)
|
||||||
{
|
{
|
||||||
this.info.drawPosition = new Vector2((float)this.boundingBox.X, (float)(this.boundingBox.Y - (this.animationManager.currentAnimation.sourceRectangle.Height * Game1.pixelZoom - this.boundingBox.Height)));
|
this.info.drawPosition = new Vector2((int)(x / Game1.tileSize), (int)(y / Game1.tileSize));
|
||||||
|
//this.info.drawPosition = new Vector2((float)this.boundingBox.X, (float)(this.boundingBox.Y - (this.animationManager.currentAnimation.sourceRectangle.Height * Game1.pixelZoom - this.boundingBox.Height)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -292,9 +313,9 @@ namespace Revitalize.Framework.Objects
|
||||||
/// <param name="alpha"></param>
|
/// <param name="alpha"></param>
|
||||||
public override void draw(SpriteBatch spriteBatch, int x, int y, float alpha = 1f)
|
public override void draw(SpriteBatch spriteBatch, int x, int y, float alpha = 1f)
|
||||||
{
|
{
|
||||||
if (x == -1)
|
if (x <= -1)
|
||||||
{
|
{
|
||||||
spriteBatch.Draw(this.info.animationManager.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.info.drawPosition), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), info.drawColor * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0);
|
spriteBatch.Draw(this.info.animationManager.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.info.drawPosition), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), info.drawColor * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, Math.Max(0f, (float)(this.TileLocation.Y*Game1.tileSize) / 10000f));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -307,14 +328,14 @@ namespace Revitalize.Framework.Objects
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
spriteBatch.Draw(this.displayTexture, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), info.drawColor * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0);
|
spriteBatch.Draw(this.displayTexture, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), info.drawColor * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, Math.Max(0f, (float)(this.TileLocation.Y*Game1.tileSize) / 10000f));
|
||||||
// Log.AsyncG("ANIMATION IS NULL?!?!?!?!");
|
// Log.AsyncG("ANIMATION IS NULL?!?!?!?!");
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Log.AsyncC("Animation Manager is working!");
|
//Log.AsyncC("Animation Manager is working!");
|
||||||
this.animationManager.draw(spriteBatch, this.displayTexture, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), info.drawColor * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0);
|
this.animationManager.draw(spriteBatch, this.displayTexture, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), info.drawColor * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, Math.Max(0f, (float)(this.TileLocation.Y*Game1.tileSize) / 10000f));
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
this.animationManager.tickAnimation();
|
this.animationManager.tickAnimation();
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace Revitalize.Framework.Objects
|
||||||
public override bool placementAction(GameLocation location, int x, int y, Farmer who = null)
|
public override bool placementAction(GameLocation location, int x, int y, Farmer who = null)
|
||||||
{
|
{
|
||||||
Revitalize.ModCore.ModMonitor.Log("SCREAMING!!!!");
|
Revitalize.ModCore.ModMonitor.Log("SCREAMING!!!!");
|
||||||
this.updateDrawPosition();
|
this.updateDrawPosition(x,y);
|
||||||
this.location = location;
|
this.location = location;
|
||||||
|
|
||||||
this.TileLocation = new Vector2((int)(x / Game1.tileSize), (int)(y / Game1.tileSize));
|
this.TileLocation = new Vector2((int)(x / Game1.tileSize), (int)(y / Game1.tileSize));
|
||||||
|
@ -87,7 +87,7 @@ namespace Revitalize.Framework.Objects
|
||||||
float num = this.Quality < 4 ? 0.0f : (float)((Math.Cos((double)Game1.currentGameTime.TotalGameTime.Milliseconds * Math.PI / 512.0) + 1.0) * 0.0500000007450581);
|
float num = this.Quality < 4 ? 0.0f : (float)((Math.Cos((double)Game1.currentGameTime.TotalGameTime.Milliseconds * Math.PI / 512.0) + 1.0) * 0.0500000007450581);
|
||||||
spriteBatch.Draw(Game1.mouseCursors, location + new Vector2(12f, (float)(Game1.tileSize - 12) + num), new Microsoft.Xna.Framework.Rectangle?(this.Quality < 4 ? new Microsoft.Xna.Framework.Rectangle(338 + (this.Quality - 1) * 8, 400, 8, 8) : new Microsoft.Xna.Framework.Rectangle(346, 392, 8, 8)), Color.White * transparency, 0.0f, new Vector2(4f, 4f), (float)(3.0 * (double)scaleSize * (1.0 + (double)num)), SpriteEffects.None, layerDepth);
|
spriteBatch.Draw(Game1.mouseCursors, location + new Vector2(12f, (float)(Game1.tileSize - 12) + num), new Microsoft.Xna.Framework.Rectangle?(this.Quality < 4 ? new Microsoft.Xna.Framework.Rectangle(338 + (this.Quality - 1) * 8, 400, 8, 8) : new Microsoft.Xna.Framework.Rectangle(346, 392, 8, 8)), Color.White * transparency, 0.0f, new Vector2(4f, 4f), (float)(3.0 * (double)scaleSize * (1.0 + (double)num)), SpriteEffects.None, layerDepth);
|
||||||
}
|
}
|
||||||
spriteBatch.Draw(this.displayTexture, location + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize * .75)), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), info.drawColor * transparency, 0f, new Vector2((float)(this.animationManager.currentAnimation.sourceRectangle.Width / 2), (float)(this.animationManager.currentAnimation.sourceRectangle.Height)), scaleSize, SpriteEffects.None, layerDepth);
|
spriteBatch.Draw(this.displayTexture, location + new Vector2((float)(Game1.tileSize / 4), (float)(Game1.tileSize * .75)), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), info.drawColor * transparency, 0f, new Vector2((float)(this.animationManager.currentAnimation.sourceRectangle.Width / 2), (float)(this.animationManager.currentAnimation.sourceRectangle.Height)), scaleSize, SpriteEffects.None, layerDepth);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Item getOne()
|
public override Item getOne()
|
||||||
|
|
|
@ -32,11 +32,11 @@ namespace Revitalize
|
||||||
|
|
||||||
private void GameLoop_SaveLoaded(object sender, StardewModdingAPI.Events.SaveLoadedEventArgs e)
|
private void GameLoop_SaveLoaded(object sender, StardewModdingAPI.Events.SaveLoadedEventArgs e)
|
||||||
{
|
{
|
||||||
MultiTiledComponent obj = new MultiTiledComponent(new BasicItemInformation("CoreObjectTest","YAY FUN!","Omegasis.Revitalize.MultiTiledComponent",Color.White,-300,0,false,100,Vector2.Zero,true,true,"Omegasis.TEST1", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet,Color.White,0,true,typeof(MultiTiledComponent),null,new AnimationManager(new Texture2DExtended(Game1.objectSpriteSheet),new Animation(new Rectangle(0,0,16,16))),Color.Red));
|
MultiTiledComponent obj = new MultiTiledComponent(new BasicItemInformation("CoreObjectTest","YAY FUN!","Omegasis.Revitalize.MultiTiledComponent",Color.White,-300,0,false,100,Vector2.Zero,true,true,"Omegasis.TEST1", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet,Color.White,0,true,typeof(MultiTiledComponent),null,new AnimationManager(new Texture2DExtended(Game1.objectSpriteSheet),new Animation(new Rectangle(0,0,16,16))),Color.Red,true));
|
||||||
MultiTiledComponent obj2 = new MultiTiledComponent(new BasicItemInformation("CoreObjectTest2", "SomeFun", "Omegasis.Revitalize.MultiTiledComponent", Color.White, -300, 0, false, 100, Vector2.Zero, true, true, "Omegasis.TEST1", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet, Color.White, 0, true, typeof(MultiTiledComponent), null, new AnimationManager(new Texture2DExtended(Game1.objectSpriteSheet), new Animation(new Rectangle(0, 16, 16, 16))), Color.Red));
|
MultiTiledComponent obj2 = new MultiTiledComponent(new BasicItemInformation("CoreObjectTest2", "SomeFun", "Omegasis.Revitalize.MultiTiledComponent", Color.White, -300, 0, false, 100, Vector2.Zero, true, true, "Omegasis.TEST1", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet, Color.White, 0, true, typeof(MultiTiledComponent), null, new AnimationManager(new Texture2DExtended(Game1.objectSpriteSheet), new Animation(new Rectangle(0, 16, 16, 16))), Color.Red,false));
|
||||||
MultiTiledComponent obj3 = new MultiTiledComponent(new BasicItemInformation("CoreObjectTest3", "NoFun", "Omegasis.Revitalize.MultiTiledComponent", Color.White, -300, 0, false, 100, Vector2.Zero, true, true, "Omegasis.TEST1", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet, Color.White, 0, true, typeof(MultiTiledComponent), null, new AnimationManager(new Texture2DExtended(Game1.objectSpriteSheet), new Animation(new Rectangle(0, 32, 16, 16))), Color.Red));
|
MultiTiledComponent obj3 = new MultiTiledComponent(new BasicItemInformation("CoreObjectTest3", "NoFun", "Omegasis.Revitalize.MultiTiledComponent", Color.White, -300, 0, false, 100, Vector2.Zero, true, true, "Omegasis.TEST1", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet, Color.White, 0, true, typeof(MultiTiledComponent), null, new AnimationManager(new Texture2DExtended(Game1.objectSpriteSheet), new Animation(new Rectangle(0, 32, 16, 16))), Color.Red,false));
|
||||||
|
|
||||||
MultiTiledObject bigObject= new MultiTiledObject(new BasicItemInformation("MultiTest", "A really big object", "Omegasis.Revitalize.MultiTiledObject", Color.Blue, -300, 0, false, 100, Vector2.Zero, true, true, "Omegasis.BigTiledTest", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet, Color.White, 0, true, typeof(MultiTiledObject), null, new AnimationManager(), Color.White));
|
MultiTiledObject bigObject= new MultiTiledObject(new BasicItemInformation("MultiTest", "A really big object", "Omegasis.Revitalize.MultiTiledObject", Color.Blue, -300, 0, false, 100, Vector2.Zero, true, true, "Omegasis.BigTiledTest", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet, Color.White, 0, true, typeof(MultiTiledObject), null, new AnimationManager(), Color.White,false));
|
||||||
bigObject.addComponent(new Vector2(0, 0), obj);
|
bigObject.addComponent(new Vector2(0, 0), obj);
|
||||||
bigObject.addComponent(new Vector2(1, 0), obj2);
|
bigObject.addComponent(new Vector2(1, 0), obj2);
|
||||||
bigObject.addComponent(new Vector2(2, 0), obj3);
|
bigObject.addComponent(new Vector2(2, 0), obj3);
|
||||||
|
|
Loading…
Reference in New Issue