public static UIElement Shape(this ObjectCategory self) { Canvas shape; switch (self) { case ObjectCategory.ThunderstruckTree: shape = new Thunderstruck(); break; case ObjectCategory.HarvestableTree: shape = new Tree(false); break; case ObjectCategory.FruitedTree: shape = new Tree(true); break; //case ObjectCategory.Uprootable: shape = new Up(); break; case ObjectCategory.ScarecrowGarden: shape = new Garden(); break; case ObjectCategory.SmallHousing: shape = new SmallHouse(); break; case ObjectCategory.Farmhouse: shape = new Farmhouse(); break; case ObjectCategory.LargeHousing: shape = new LargeHouse(); break; case ObjectCategory.HarvestablePlant: shape = new Leaf(); break; case ObjectCategory.ScarecrowFarm: shape = new Farm(); break; case ObjectCategory.HousingWorkbench: shape = new HousingWorkbench(); break; case ObjectCategory.FriendlyPlayer: shape = new PlayerShape(true); break; case ObjectCategory.EnemyPlayer: shape = new PlayerShape(false); break; case ObjectCategory.FriendlyClipper: shape = new Clipper(true); break; case ObjectCategory.EnemyClipper: shape = new Clipper(false); break; case ObjectCategory.FriendlyMerchantShip: shape = new MerchantShip(true); break; case ObjectCategory.EnemyMerchantShip: shape = new MerchantShip(false); break; case ObjectCategory.FriendlyFishingBoat: shape = new FishingShip(true); break; case ObjectCategory.EnemyFishingBoat: shape = new FishingShip(false); break; case ObjectCategory.FriendlyGalleon: shape = new Galleon(true); break; case ObjectCategory.EnemyGalleon: shape = new Galleon(false); break; case ObjectCategory.FriendlyNPC: shape = new NpcShape(true); break; case ObjectCategory.TradePack: shape = new TradePack(); break; case ObjectCategory.Treasure: shape = new Treasure(); break; case ObjectCategory.FishSchool: shape = new Fish(); break; case ObjectCategory.EnemyNPC: shape = new NpcShape(false); break; default: Ellipse dot = DrawSimpleDot(); dot.Fill = self.Color(); return dot; } //need to flip the shape because our canvas is inverted (due to game coordinate system) return Flip(shape); }
private static void ParseNpcShapes() { Shapes = new Dictionary <int, NpcShape>(); DataCenter dc = DCT.GetDataCenter(); foreach (var dcObject in dc.GetMainObjectsByName("NpcShape")) { var values = dc.GetValues(dcObject); if (!values.ContainsKey("Shape")) { continue; } foreach (var data in (List <Dictionary <string, object> >)values["Shape"]) { NpcShape shape = new NpcShape(); int id = int.Parse(data["id"].ToString()); if (data.ContainsKey("baseRunSpeed")) { shape.RunSpeed = float.Parse(data["baseRunSpeed"].ToString()); } if (data.ContainsKey("baseTurnSpeed")) { shape.TurnSpeed = float.Parse(data["baseTurnSpeed"].ToString()); } if (data.ContainsKey("baseWalkSpeed")) { shape.WalkSpeed = float.Parse(data["baseWalkSpeed"].ToString()); } if (!Shapes.ContainsKey(id)) { Shapes.Add(id, shape); } else { Console.WriteLine("Dublicate npc shape {0}", id); } } } Console.WriteLine("Loaded {0} npc shapes...", Shapes.Count); }