public static SpriteSheetRectName TurnOff(this SpriteSheetRectName thingy) { switch (thingy) { case SpriteSheetRectName.WallLightOn_N: return(SpriteSheetRectName.WallLightOff_N); case SpriteSheetRectName.WallLightOn_W: return(SpriteSheetRectName.WallLightOff_W); case SpriteSheetRectName.Portal_E: return(SpriteSheetRectName.PortalOff_E); case SpriteSheetRectName.Portal_W: return(SpriteSheetRectName.PortalOff_W); case SpriteSheetRectName.Portal_N: return(SpriteSheetRectName.PortalOff_N); case SpriteSheetRectName.Portal_S: return(SpriteSheetRectName.PortalOff_S); default: return(thingy); } }
public static SpriteSheetRectName ReleaseFloorSwitch(this SpriteSheetRectName floorswitch) { switch (floorswitch) { case SpriteSheetRectName.ButtonPressed_E: return(SpriteSheetRectName.Button_E); } return(floorswitch); }
public static bool IsClose(this SpriteSheetRectName door) { switch (door) { case SpriteSheetRectName.WallDoorClosed_W: case SpriteSheetRectName.WallDoorClosed_N: return(true); default: return(false); } }
public static SpriteSheetRectName CloseDoor(this SpriteSheetRectName door) { switch (door) { case SpriteSheetRectName.WallDoorOpen_W: return(SpriteSheetRectName.WallDoorClosed_W); case SpriteSheetRectName.WallDoorOpen_N: return(SpriteSheetRectName.WallDoorClosed_N); } return(door); }
public static bool IsFloorSwitch(this SpriteSheetRectName spriteSheetRectName) { switch (spriteSheetRectName) { case SpriteSheetRectName.ButtonPressed_E: case SpriteSheetRectName.Button_E: return(true); default: return(false); } }
public static bool IsLight(this SpriteSheetRectName light) { switch (light) { case SpriteSheetRectName.WallLightOff_N: case SpriteSheetRectName.WallLightOff_W: case SpriteSheetRectName.WallLightOn_N: case SpriteSheetRectName.WallLightOn_W: return(true); default: return(false); } }
public static bool IsLever(this SpriteSheetRectName lever) { switch (lever) { case SpriteSheetRectName.WallSwitchOff_N: case SpriteSheetRectName.WallSwitchOff_W: case SpriteSheetRectName.WallSwitchOn_N: case SpriteSheetRectName.WallSwitchOn_W: return(true); default: return(false); } }
public static bool IsRetracted(this SpriteSheetRectName piston) { switch (piston) { case SpriteSheetRectName.PistolRetracted_N: case SpriteSheetRectName.PistolRetracted_W: case SpriteSheetRectName.PistolRetracted_S: case SpriteSheetRectName.PistolRetracted_E: return(true); default: return(false); } }
public static SpriteSheetRectName FlipSwitch(this SpriteSheetRectName swt) { switch (swt) { case SpriteSheetRectName.WallSwitchOff_W: return(SpriteSheetRectName.WallSwitchOn_W); case SpriteSheetRectName.WallSwitchOff_N: return(SpriteSheetRectName.WallSwitchOn_N); case SpriteSheetRectName.WallSwitchOn_W: return(SpriteSheetRectName.WallSwitchOff_W); case SpriteSheetRectName.WallSwitchOn_N: return(SpriteSheetRectName.WallSwitchOff_N); } return(swt); }
public static bool IsPortal(this SpriteSheetRectName portal) { switch (portal) { case SpriteSheetRectName.PortalOff_E: case SpriteSheetRectName.PortalOff_W: case SpriteSheetRectName.PortalOff_N: case SpriteSheetRectName.PortalOff_S: case SpriteSheetRectName.Portal_E: case SpriteSheetRectName.Portal_W: case SpriteSheetRectName.Portal_N: case SpriteSheetRectName.Portal_S: return(true); default: return(false); } }
public static SpriteSheetRectName RetractPiston(this SpriteSheetRectName piston) { switch (piston) { case SpriteSheetRectName.PistolExtended_N: return(SpriteSheetRectName.PistolRetracted_N); case SpriteSheetRectName.PistolExtended_W: return(SpriteSheetRectName.PistolRetracted_W); case SpriteSheetRectName.PistolExtended_S: return(SpriteSheetRectName.PistolRetracted_S); case SpriteSheetRectName.PistolExtended_E: return(SpriteSheetRectName.PistolRetracted_E); default: return(piston); } }
public static Direction GetSpriteDirection(this SpriteSheetRectName spriteSheetRectName) { var spritename = spriteSheetRectName.ToString(); var lc = spritename.Substring(spritename.Length - 1); switch (lc) { case "E": return(Direction.right); case "W": return(Direction.left); case "N": return(Direction.up); case "S": return(Direction.down); } return(Direction.none); }
public static bool IsOff(this SpriteSheetRectName swt) { switch (swt) { case SpriteSheetRectName.WallSwitchOff_W: case SpriteSheetRectName.WallSwitchOff_N: case SpriteSheetRectName.WallLightOff_W: case SpriteSheetRectName.WallLightOff_N: case SpriteSheetRectName.PortalOff_E: case SpriteSheetRectName.PortalOff_W: case SpriteSheetRectName.PortalOff_N: case SpriteSheetRectName.PortalOff_S: case SpriteSheetRectName.Button_E: return(true); default: return(false); } }
public static bool IsOn(this SpriteSheetRectName swt) { switch (swt) { case SpriteSheetRectName.WallSwitchOn_W: case SpriteSheetRectName.WallSwitchOn_N: case SpriteSheetRectName.WallLightOn_W: case SpriteSheetRectName.WallLightOn_N: case SpriteSheetRectName.Portal_E: case SpriteSheetRectName.Portal_W: case SpriteSheetRectName.Portal_N: case SpriteSheetRectName.Portal_S: case SpriteSheetRectName.ButtonPressed_E: return(true); default: return(false); } }
private static Humper.Base.RectangleF GetCollsionBox(Vector2 pos, SpriteSheetRectName spriteSheetRectName) { var result = new Humper.Base.RectangleF(); CollisionTag collisionTag = spriteSheetRectName.GetCollisionTag(); var dir = spriteSheetRectName.GetSpriteDirection(); switch (collisionTag) { case CollisionTag.DoorClosed: case CollisionTag.DoorOpened: case CollisionTag.Wall: switch (dir) { case Direction.up: result.X = pos.X - 0.3f; result.Y = pos.Y - 0.3f; result.Width = 1; result.Height = 0.3f; break; case Direction.left: result.X = pos.X - 0.3f; result.Y = pos.Y - 0.3f; result.Width = 0.3f; result.Height = 1; break; case Direction.down: result.X = pos.X - 0.3f; result.Y = pos.Y + 0.4f; result.Width = 1; result.Height = 0.3f; break; case Direction.right: result.X = pos.X + 0.4f; result.Y = pos.Y - 0.3f; result.Width = 0.3f; result.Height = 1; break; } break; case CollisionTag.Block: result.X = pos.X - 0.3f; result.Y = pos.Y - 0.3f; result.Width = 1; result.Height = 1; break; case CollisionTag.PushableBlock: result.X = pos.X; result.Y = pos.Y; result.Width = 0.3f; result.Height = 0.3f; break; case CollisionTag.FloorSwitch: result.X = pos.X - 0.1f; result.Y = pos.Y - 0.1f; result.Width = 0.5f; result.Height = 0.5f; break; case CollisionTag.Lever: result.X = pos.X - 0.1f; result.Y = pos.Y - 0.1f; result.Width = 0.5f; result.Height = 0.5f; break; case CollisionTag.Slab: break; case CollisionTag.None: result.X = pos.X - 0.3f; result.Y = pos.Y - 0.3f; result.Width = 1; result.Height = 1; break; case CollisionTag.EndPoint: result.X = pos.X - 0.3f; result.Y = pos.Y - 0.3f; result.Width = 1; result.Height = 1; break; case CollisionTag.Portal: switch (dir) { case Direction.up: result.X = pos.X - 0.1f; result.Y = pos.Y - 0.15f; result.Width = 0.5f; result.Height = 0.1f; break; case Direction.left: result.X = pos.X - 0.15f; result.Y = pos.Y - 0.1f; result.Width = 0.1f; result.Height = 0.5f; break; case Direction.down: result.X = pos.X - 0.1f; result.Y = pos.Y + 0.45f; result.Width = 0.5f; result.Height = 0.1f; break; case Direction.right: result.X = pos.X + 0.45f; result.Y = pos.Y - 0.1f; result.Width = 0.1f; result.Height = 0.5f; break; } break; case CollisionTag.PistonRetracted: switch (dir) { case Direction.up: result.X = pos.X - 0.35f; result.Y = pos.Y - 0.1f; result.Width = 0.75f; result.Height = 0.2f; break; case Direction.left: result.X = pos.X - 0.1f; result.Y = pos.Y - 0.35f; result.Width = 0.2f; result.Height = 0.75f; break; case Direction.down: result.X = pos.X - 0.2f; result.Y = pos.Y + 0.1f; result.Width = 0.75f; result.Height = 0.2f; break; case Direction.right: result.X = pos.X + 0.1f; result.Y = pos.Y - 0.2f; result.Width = 0.2f; result.Height = 0.75f; break; } break; case CollisionTag.PistonExtended: switch (dir) { case Direction.up: result.X = pos.X - 0.45f; result.Y = pos.Y + 0.35f; result.Width = 0.75f; result.Height = 0.2f; break; case Direction.left: result.X = pos.X + 0.35f; result.Y = pos.Y - 0.45f; result.Width = 0.2f; result.Height = 0.75f; break; case Direction.down: result.X = pos.X - 0.25f; result.Y = pos.Y - 0.55f; result.Width = 0.75f; result.Height = 0.2f; break; case Direction.right: result.X = pos.X - 0.55f; result.Y = pos.Y - 0.25f; result.Width = 0.2f; result.Height = 0.75f; break; } break; } return(result); }
public static CollisionTag GetCollisionTag(this SpriteSheetRectName spriteSheetRectName) { var result = CollisionTag.None; switch (spriteSheetRectName) { case SpriteSheetRectName.None: result = CollisionTag.None; break; case SpriteSheetRectName.BlockHuge_E: case SpriteSheetRectName.BlockLarge_E: result = CollisionTag.Block; break; case SpriteSheetRectName.BlockSmall_E: result = CollisionTag.PushableBlock; break; case SpriteSheetRectName.Button_E: case SpriteSheetRectName.ButtonPressed_E: result = CollisionTag.FloorSwitch; break; case SpriteSheetRectName.Floor_E: result = CollisionTag.None; break; case SpriteSheetRectName.SlabQuarter_S: result = CollisionTag.EndPoint; break; case SpriteSheetRectName.WallDoorClosed_N: case SpriteSheetRectName.WallDoorClosed_W: result = CollisionTag.DoorClosed; break; case SpriteSheetRectName.WallDoorOpen_N: case SpriteSheetRectName.WallDoorOpen_W: result = CollisionTag.DoorOpened; break; case SpriteSheetRectName.WallDoorway_N: result = CollisionTag.None; break; case SpriteSheetRectName.WallStraight_N: case SpriteSheetRectName.WallStraight_W: case SpriteSheetRectName.WallStraight_S: case SpriteSheetRectName.WallStraight_E: result = CollisionTag.Wall; break; case SpriteSheetRectName.WallSwitchOff_N: case SpriteSheetRectName.WallSwitchOff_W: case SpriteSheetRectName.WallSwitchOn_N: case SpriteSheetRectName.WallSwitchOn_W: result = CollisionTag.Lever; break; case SpriteSheetRectName.WallWindow_N: case SpriteSheetRectName.WallWindow_W: result = CollisionTag.Wall; break; case SpriteSheetRectName.Portal_N: case SpriteSheetRectName.Portal_W: case SpriteSheetRectName.Portal_S: case SpriteSheetRectName.Portal_E: case SpriteSheetRectName.PortalOff_E: case SpriteSheetRectName.PortalOff_W: case SpriteSheetRectName.PortalOff_N: case SpriteSheetRectName.PortalOff_S: result = CollisionTag.Portal; break; case SpriteSheetRectName.PistolExtended_N: case SpriteSheetRectName.PistolExtended_W: case SpriteSheetRectName.PistolExtended_S: case SpriteSheetRectName.PistolExtended_E: result = CollisionTag.PistonExtended; break; case SpriteSheetRectName.PistolRetracted_N: case SpriteSheetRectName.PistolRetracted_W: case SpriteSheetRectName.PistolRetracted_S: case SpriteSheetRectName.PistolRetracted_E: result = CollisionTag.PistonRetracted; break; case SpriteSheetRectName.Trigger: result = CollisionTag.Trigger; break; } return(result); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { string objname = string.Empty; Vector3 worldpos = Vector3.Zero; Vector2 spriteorigin = Vector2.Zero; SpriteSheetRectName tiletype = SpriteSheetRectName.None; Humper.Base.RectangleF boundingbox = Humper.Base.RectangleF.Empty; CollisionTag collisionTag = CollisionTag.None; string onactivate = string.Empty; string ondeactivate = string.Empty; object metadata = null; while (reader.Read()) { if (reader.TokenType != JsonToken.PropertyName) { break; } string propertyName = (string)reader.Value; if (!reader.Read()) { continue; } switch (propertyName) { case "Name": objname = serializer.Deserialize <string>(reader); break; case "WorldPos": worldpos = serializer.Deserialize <Vector3>(reader); break; case "SpriteOrigin": spriteorigin = serializer.Deserialize <Vector2>(reader); break; case "TiltType": tiletype = (SpriteSheetRectName)serializer.Deserialize <int>(reader); break; case "BoundingBox": boundingbox = serializer.Deserialize <Humper.Base.RectangleF>(reader); break; case "CollisionTag": collisionTag = (CollisionTag)serializer.Deserialize <int>(reader); break; case "OnActivate": onactivate = serializer.Deserialize <string>(reader); break; case "OnDeactivate": ondeactivate = serializer.Deserialize <string>(reader); break; case "Metadata": metadata = serializer.Deserialize <object>(reader); break; } } return(new Object() { Name = objname, WorldPos = worldpos, SpriteOrigin = spriteorigin, TileType = tiletype, BoundingBox = boundingbox, CollisionTag = collisionTag, OnActivate = onactivate, OnDeactivate = ondeactivate, Memory = new Stack <string>(), MetaData = metadata }); }
public Object FindObject(SpriteSheetRectName obj) { return(Objects.FirstOrDefault(x => x.Value.TileType == obj).Value); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { Map result; int width = 0, height = 0, depth = 0; SpriteSheetRectName[,] floors = null; SpriteSheetRectName[,] walls = null; List <Object> objects = new List <Object>(); Humper.Base.RectangleF[] collisions = null; List <Annotation> annotations = new List <Annotation>(); bool isWidth = false; bool isHeight = false; while (reader.Read()) { if (reader.TokenType != JsonToken.PropertyName) { break; } string propertyName = (string)reader.Value; if (!reader.Read()) { continue; } if (isWidth && isHeight && floors is null && walls is null) { floors = new SpriteSheetRectName[height, width]; walls = new SpriteSheetRectName[height, width]; } switch (propertyName) { case "Width": width = serializer.Deserialize <int>(reader); isWidth = true; break; case "Height": height = serializer.Deserialize <int>(reader); isHeight = true; break; case "Depth": depth = serializer.Deserialize <int>(reader); break; case "Floor": var t = HelperMethod.Make2DArray(serializer.Deserialize <int[]>(reader), height, width); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { floors[y, x] = (SpriteSheetRectName)t[y, x]; } } break; case "Wall": var tt = HelperMethod.Make2DArray(serializer.Deserialize <int[]>(reader), height, width); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { walls[y, x] = (SpriteSheetRectName)tt[y, x]; } } break; case "Objects": objects = serializer.Deserialize <List <Object> >(reader); break; case "Collisions": collisions = serializer.Deserialize <Humper.Base.RectangleF[]>(reader); break; case "Annotations": annotations = serializer.Deserialize <List <Annotation> >(reader); break; } } result = new Map(width, height, depth, floors, walls, objects, collisions, annotations); return(result); }