Class CornerFurniture
A corner furniture is a piece of furniture that has an additional set of corner textures that it can display in various conditions. The default CornerFurniture class can be used for things like hedges, which only have a single vertical and horizontal rotation each. For objects like counters which have four distinct rotations, the subclass CornerFurniture.Counter can be used. For objects with custom connection logic, you can override ShouldConnectTo(Furniture) and GetCornerStatus(Dictionary<Direction2, Direction2>).
public class CornerFurniture : Furniture, IGenericDataHolder
- Inheritance
-
JsonTypeSafeGenericDataHolderCornerFurniture
- Implements
-
IGenericDataHolder
- Derived
- Inherited Members
-
JsonTypeSafeGenericDataHolder.GetDataKeys()
- Extension Methods
Constructors
CornerFurniture(Guid, FurnitureType, int[], Map, Vector2, float)
Creates a new furniture instance. By default, this is done using Construct<T>(int[], Map, Vector2, float, Guid?).
public CornerFurniture(Guid id, FurnitureType type, int[] colors, Map map, Vector2 pos, float floor)
Parameters
idGuidThe id to apply to the created furniture instance
typeFurnitureTypeThe type to create an instance of
colorsint[]The colors to apply to the furniture
mapMapThe map to create the furniture on
posVector2The position that the furniture should have
floorfloatThe floor that this object is on.
Methods
Draw(GameTime, object, Vector2, float, Vector2, Color?, Direction2, int[], float, bool, ParentInfo, float, List<Item>)
Draws this furniture in the world with the given settings. When overriding this method, furniture objects should use DrawColumns(Map, Vector2, float, object, Vector2, TextureRegion, Color, Vector2, Point, List<Item>, bool, ParentInfo, float, SpriteEffects, bool) for drawing their textures or alternatively manually calculate the depth to draw with using GetDepth(Vector2, float, float, bool, bool, bool). This is a more generalized version of Draw(GameTime, object, Vector2, Color?, List<Item>).
public override void Draw(GameTime time, object batch, Vector2 pos, float floor, Vector2 drawPos, Color? overrideColor, Direction2 rotation, int[] colors, float drawScale, bool pivot, ParentInfo parent, float depthOffset, List<StaticSpriteBatch.Item> items)
Parameters
timeGameTimeThe game time
batchobjectThe sprite batch to draw with, which is either a Microsoft.Xna.Framework.Graphics.SpriteBatch or MLEM.Graphics.StaticSpriteBatch.
posVector2The position, in world space, that the furniture is at
floorfloatThe floor to draw at.
drawPosVector2The position, in draw space, to draw the furniture at
overrideColorColor?An optional color to override the default colors of the furniture
rotationDirection2The rotation that the furniture should be drawn with.
colorsint[]The colors to draw the furniture with
drawScalefloatThe scale to draw the furniture with
pivotboolWhether or not to move the furniture by its texture's pivot point
parentParentInfoThe object that this furniture is latched on to, or null if there is none
depthOffsetfloatA value that is added onto the calculated depth of the object
itemsList<StaticSpriteBatch.Item>A list of sprite batch items that items should be added to if the
batchis a MLEM.Graphics.StaticSpriteBatch.
GetCornerStatus(Dictionary<Direction2, Direction2>)
A method that is used to determine the corner status that this furniture should have, based on the given neighborRotations.
The neighbor rotations are previously gathered based on the information returned for each neighbor in ShouldConnectTo(Furniture).
protected virtual Direction2 GetCornerStatus(Dictionary<Direction2, Direction2> neighborRotations)
Parameters
neighborRotationsDictionary<Direction2, Direction2>The rotations of each neighbor, where the keys are the direction that the neighbor is in, and the values are the neighbor's Rotation
Returns
- Direction2
The direction of the texture that should be used for this corner, or MLEM.Maths.Direction2 for no connection
OnNeighborChanged(Furniture)
This method gets called when any neighboring furniture changes in NotifyNeighbors(). The neighboring furniture is passed. By default, this method does nothing, so calling base is not necessary.
protected override void OnNeighborChanged(Furniture neighbor)
Parameters
neighborFurnitureThe neighbor furniture that changed
ShouldConnectTo(Furniture)
A method that determines whether this corner furniture should connect to the given neighboring furniture. If this method returns true, the neighbor's rotation is passed to GetCornerStatus(Dictionary<Direction2, Direction2>).
protected virtual bool ShouldConnectTo(Furniture neighbor)
Parameters
neighborFurnitureThe neighbor to connect to
Returns
- bool
Whether this object should connect to the neighbor furniture
Validate(AppliedMigrations)
This method is called when this object is loaded from disk. Returning false on this method causes the object to be removed from the map. By default, this method invokes OnValidated and OnEventsAttachable.
public override bool Validate(AppliedMigrations appliedMigrations)
Parameters
appliedMigrationsAppliedMigrations
Returns
- bool
false if the object is not valid, true otherwise