public void LoadToolTips(WzImage mapImage, Board mapBoard) { WzSubProperty tooltipsParent = (WzSubProperty)mapImage["ToolTip"]; if (tooltipsParent == null) { return; } WzImage tooltipsStringImage = (WzImage)Program.WzManager.String["ToolTipHelp.img"]; if (!tooltipsStringImage.Parsed) { tooltipsStringImage.ParseImage(); } WzSubProperty tooltipStrings = (WzSubProperty)tooltipsStringImage["Mapobject"][mapBoard.MapInfo.id.ToString()]; if (tooltipStrings == null) { return; } for (int i = 0; true; i++) { string num = i.ToString(); WzSubProperty tooltipString = (WzSubProperty)tooltipStrings[num]; WzSubProperty tooltipProp = (WzSubProperty)tooltipsParent[num]; WzSubProperty tooltipChar = (WzSubProperty)tooltipsParent[num + "char"]; if (tooltipString == null && tooltipProp == null) { break; } if (tooltipString == null ^ tooltipProp == null) { continue; } string title = InfoTool.GetOptionalString(tooltipString["Title"]); string desc = InfoTool.GetOptionalString(tooltipString["Desc"]); int x1 = InfoTool.GetInt(tooltipProp["x1"]); int x2 = InfoTool.GetInt(tooltipProp["x2"]); int y1 = InfoTool.GetInt(tooltipProp["y1"]); int y2 = InfoTool.GetInt(tooltipProp["y2"]); Microsoft.Xna.Framework.Rectangle tooltipPos = new Microsoft.Xna.Framework.Rectangle(x1, y1, x2 - x1, y2 - y1); ToolTipInstance tt = new ToolTipInstance(mapBoard, tooltipPos, title, desc, i); mapBoard.BoardItems.ToolTips.Add(tt); if (tooltipChar != null) { x1 = InfoTool.GetInt(tooltipChar["x1"]); x2 = InfoTool.GetInt(tooltipChar["x2"]); y1 = InfoTool.GetInt(tooltipChar["y1"]); y2 = InfoTool.GetInt(tooltipChar["y2"]); tooltipPos = new Microsoft.Xna.Framework.Rectangle(x1, y1, x2 - x1, y2 - y1); ToolTipChar ttc = new ToolTipChar(mapBoard, tooltipPos, tt); mapBoard.BoardItems.CharacterToolTips.Add(ttc); } } }
private List <string> SearchMapWzForObj(string l2) { List <string> result = new List <string>(); foreach (WzDirectory mapDir in ((WzDirectory)Program.WzManager["map"]["Map"]).WzDirectories) { foreach (WzImage mapImg in mapDir.WzImages) { bool fastForwardToNext = false; bool parsed = mapImg.Parsed; if (!parsed) { mapImg.ParseImage(); } foreach (WzImageProperty layer in mapImg.WzProperties) { if (layer.Name.Length != 1 || !char.IsDigit(layer.Name[0])) { continue; } WzImageProperty prop = layer["obj"]; if (prop == null) { continue; } foreach (WzImageProperty obj in prop.WzProperties) { if (InfoTool.GetOptionalString(obj["oS"]) == UserObjectsManager.oS && InfoTool.GetOptionalString(obj["l0"]) == Program.APP_NAME && InfoTool.GetOptionalString(obj["l1"]) == UserObjectsManager.l1 && InfoTool.GetOptionalString(obj["l2"]) == l2) { result.Add(WzInfoTools.RemoveExtension(mapImg.Name)); fastForwardToNext = true; break; } } if (fastForwardToNext) { break; } } if (!parsed) { mapImg.UnparseImage(); } } } return(result); }
public void LoadLife(WzImage mapImage, Board mapBoard) { WzImageProperty lifeParent = mapImage["life"]; if (lifeParent == null) { return; } foreach (WzSubProperty life in lifeParent.WzProperties) { string id = InfoTool.GetString(life["id"]); int x = InfoTool.GetInt(life["x"]); int y = InfoTool.GetInt(life["y"]); int cy = InfoTool.GetInt(life["cy"]); int? mobTime = InfoTool.GetOptionalInt(life["mobTime"]); int? info = InfoTool.GetOptionalInt(life["info"]); int? team = InfoTool.GetOptionalInt(life["team"]); int rx0 = InfoTool.GetInt(life["rx0"]); int rx1 = InfoTool.GetInt(life["rx1"]); MapleBool flip = InfoTool.GetOptionalBool(life["f"]); MapleBool hide = InfoTool.GetOptionalBool(life["hide"]); string type = InfoTool.GetString(life["type"]); string limitedname = InfoTool.GetOptionalString(life["limitedname"]); switch (type) { case "m": MobInfo mobInfo = MobInfo.Get(id); if (mobInfo == null) { continue; } mapBoard.BoardItems.Mobs.Add((MobInstance)mobInfo.CreateInstance(mapBoard, x, cy, x - rx0, rx1 - x, cy - y, limitedname, mobTime, flip, hide, info, team)); break; case "n": NpcInfo npcInfo = NpcInfo.Get(id); if (npcInfo == null) { continue; } mapBoard.BoardItems.NPCs.Add((NpcInstance)npcInfo.CreateInstance(mapBoard, x, cy, x - rx0, rx1 - x, cy - y, limitedname, mobTime, flip, hide, info, team)); break; default: throw new Exception("invalid life type " + type); } } }
public void LoadReactors(WzImage mapImage, Board mapBoard) { WzSubProperty reactorParent = (WzSubProperty)mapImage["reactor"]; if (reactorParent == null) { return; } foreach (WzSubProperty reactor in reactorParent.WzProperties) { int x = InfoTool.GetInt(reactor["x"]); int y = InfoTool.GetInt(reactor["y"]); int reactorTime = InfoTool.GetInt(reactor["reactorTime"]); string name = InfoTool.GetOptionalString(reactor["name"]); string id = InfoTool.GetString(reactor["id"]); bool flip = InfoTool.GetBool(reactor["f"]); mapBoard.BoardItems.Reactors.Add((ReactorInstance)Program.InfoManager.Reactors[id].CreateInstance(mapBoard, x, y, reactorTime, name, flip)); } }
public void LoadPortals(WzImage mapImage, Board mapBoard) { WzSubProperty portalParent = (WzSubProperty)mapImage["portal"]; foreach (WzSubProperty portal in portalParent.WzProperties) { int x = InfoTool.GetInt(portal["x"]); int y = InfoTool.GetInt(portal["y"]); string pt = Program.InfoManager.PortalTypeById[InfoTool.GetInt(portal["pt"])]; int tm = InfoTool.GetInt(portal["tm"]); string tn = InfoTool.GetString(portal["tn"]); string pn = InfoTool.GetString(portal["pn"]); string image = InfoTool.GetOptionalString(portal["image"]); string script = InfoTool.GetOptionalString(portal["script"]); int? verticalImpact = InfoTool.GetOptionalInt(portal["verticalImpact"]); int? horizontalImpact = InfoTool.GetOptionalInt(portal["horizontalImpact"]); int? hRange = InfoTool.GetOptionalInt(portal["hRange"]); int? vRange = InfoTool.GetOptionalInt(portal["vRange"]); int? delay = InfoTool.GetOptionalInt(portal["delay"]); MapleBool hideTooltip = InfoTool.GetOptionalBool(portal["hideTooltip"]); MapleBool onlyOnce = InfoTool.GetOptionalBool(portal["onlyOnce"]); mapBoard.BoardItems.Portals.Add(PortalInfo.GetPortalInfoByType(pt).CreateInstance(mapBoard, x, y, pn, tn, tm, script, delay, hideTooltip, onlyOnce, horizontalImpact, verticalImpact, image, hRange, vRange)); } }
public void LoadLayers(WzImage mapImage, Board mapBoard) { for (int layer = 0; layer <= 7; layer++) { WzSubProperty layerProp = (WzSubProperty)mapImage[layer.ToString()]; WzImageProperty tSprop = layerProp["info"]["tS"]; string tS = null; if (tSprop != null) { tS = InfoTool.GetString(tSprop); } foreach (WzImageProperty obj in layerProp["obj"].WzProperties) { int x = InfoTool.GetInt(obj["x"]); int y = InfoTool.GetInt(obj["y"]); int z = InfoTool.GetInt(obj["z"]); int zM = InfoTool.GetInt(obj["zM"]); string oS = InfoTool.GetString(obj["oS"]); string l0 = InfoTool.GetString(obj["l0"]); string l1 = InfoTool.GetString(obj["l1"]); string l2 = InfoTool.GetString(obj["l2"]); string name = InfoTool.GetOptionalString(obj["name"]); MapleBool r = InfoTool.GetOptionalBool(obj["r"]); MapleBool hide = InfoTool.GetOptionalBool(obj["hide"]); MapleBool reactor = InfoTool.GetOptionalBool(obj["reactor"]); MapleBool flow = InfoTool.GetOptionalBool(obj["flow"]); int? rx = InfoTool.GetOptionalTranslatedInt(obj["rx"]); int? ry = InfoTool.GetOptionalTranslatedInt(obj["ry"]); int? cx = InfoTool.GetOptionalTranslatedInt(obj["cx"]); int? cy = InfoTool.GetOptionalTranslatedInt(obj["cy"]); string tags = InfoTool.GetOptionalString(obj["tags"]); WzImageProperty questParent = obj["quest"]; List <ObjectInstanceQuest> questInfo = null; if (questParent != null) { questInfo = new List <ObjectInstanceQuest>(); foreach (WzIntProperty info in questParent.WzProperties) { questInfo.Add(new ObjectInstanceQuest(int.Parse(info.Name), (QuestState)info.Value)); } } bool flip = InfoTool.GetBool(obj["f"]); ObjectInfo objInfo = ObjectInfo.Get(oS, l0, l1, l2); if (objInfo == null) { continue; } Layer l = mapBoard.Layers[layer]; mapBoard.BoardItems.TileObjs.Add((LayeredItem)objInfo.CreateInstance(l, mapBoard, x, y, z, zM, r, hide, reactor, flow, rx, ry, cx, cy, name, tags, questInfo, flip, false)); l.zMList.Add(zM); } WzImageProperty tileParent = layerProp["tile"]; foreach (WzImageProperty tile in tileParent.WzProperties) { int x = InfoTool.GetInt(tile["x"]); int y = InfoTool.GetInt(tile["y"]); int zM = InfoTool.GetInt(tile["zM"]); string u = InfoTool.GetString(tile["u"]); int no = InfoTool.GetInt(tile["no"]); Layer l = mapBoard.Layers[layer]; TileInfo tileInfo = TileInfo.Get(tS, u, no.ToString()); mapBoard.BoardItems.TileObjs.Add((LayeredItem)tileInfo.CreateInstance(l, mapBoard, x, y, int.Parse(tile.Name), zM, false, false)); l.zMList.Add(zM); } } }
private static void LoadLife(WzImage mapImage, Board mapBoard) { IWzImageProperty lifeParent = mapImage["life"]; if (lifeParent == null) { return; } foreach (WzSubProperty life in lifeParent.WzProperties) { string id = InfoTool.GetString(life["id"]); int x = InfoTool.GetInt(life["x"]); //int y = InfoTool.GetInt(life["y"]); int cy = InfoTool.GetInt(life["cy"]); int? mobTime = InfoTool.GetOptionalInt(life["mobTime"]); int? info = InfoTool.GetOptionalInt(life["info"]); int? team = InfoTool.GetOptionalInt(life["team"]); int rx0 = InfoTool.GetInt(life["rx0"]); int rx1 = InfoTool.GetInt(life["rx1"]); MapleBool flip = InfoTool.GetOptionalBool(life["f"]); MapleBool hide = InfoTool.GetOptionalBool(life["hide"]); string type = InfoTool.GetString(life["type"]); string limitedname = InfoTool.GetOptionalString(life["limitedname"]); switch (type) { case "m": WzImage mobImage = (WzImage)Program.WzManager["mob"][id + ".img"]; if (!mobImage.Parsed) { mobImage.ParseImage(); } if (mobImage.HCTag == null) { mobImage.HCTag = MobInfo.Load(mobImage); } MobInfo mobInfo = (MobInfo)mobImage.HCTag; //mapBoard.BoardItems.Mobs.Add((MobInstance)mobInfo.CreateInstance(mapBoard, x, cy, rx0, rx1, mobTime, flip, hide, false)); mapBoard.BoardItems.Mobs.Add((LifeInstance)mobInfo.CreateInstance(mapBoard, x, cy, rx0, rx1, limitedname, mobTime, flip, hide, info, team, false)); break; case "n": WzImage npcImage = (WzImage)Program.WzManager["npc"][id + ".img"]; if (!npcImage.Parsed) { npcImage.ParseImage(); } if (npcImage.HCTag == null) { npcImage.HCTag = NpcInfo.Load(npcImage); } NpcInfo npcInfo = (NpcInfo)npcImage.HCTag; //mapBoard.BoardItems.NPCs.Add((NpcInstance)npcInfo.CreateInstance(mapBoard, x, cy, rx0, rx1, mobTime, flip, hide, false)); mapBoard.BoardItems.NPCs.Add((LifeInstance)npcInfo.CreateInstance(mapBoard, x, cy, rx0, rx1, limitedname, mobTime, flip, hide, info, team, false)); break; default: throw new Exception("invalid life type " + type); } } }
private static void LoadLayers(WzImage mapImage, Board mapBoard) { for (int layer = 0; layer <= 7; layer++) { WzSubProperty layerProp = (WzSubProperty)mapImage[layer.ToString()]; IWzImageProperty tSprop = layerProp["info"]["tS"]; string tS = null; if (tSprop != null) { tS = InfoTool.GetString(tSprop); } foreach (IWzImageProperty obj in layerProp["obj"].WzProperties) { int x = InfoTool.GetInt(obj["x"]); int y = InfoTool.GetInt(obj["y"]); int z = InfoTool.GetInt(obj["z"]); //int zM = InfoTool.GetInt(obj["zM"]); string oS = InfoTool.GetString(obj["oS"]); string l0 = InfoTool.GetString(obj["l0"]); string l1 = InfoTool.GetString(obj["l1"]); string l2 = InfoTool.GetString(obj["l2"]); string name = InfoTool.GetOptionalString(obj["name"]); MapleBool r = InfoTool.GetOptionalBool(obj["r"]); MapleBool hide = InfoTool.GetOptionalBool(obj["hide"]); MapleBool reactor = InfoTool.GetOptionalBool(obj["reactor"]); MapleBool flow = InfoTool.GetOptionalBool(obj["flow"]); int? rx = InfoTool.GetOptionalTranslatedInt(obj["rx"]); int? ry = InfoTool.GetOptionalTranslatedInt(obj["ry"]); int? cx = InfoTool.GetOptionalTranslatedInt(obj["cx"]); int? cy = InfoTool.GetOptionalTranslatedInt(obj["cy"]); string tags = InfoTool.GetOptionalString(obj["tags"]); IWzImageProperty questParent = obj["quest"]; List <ObjectInstanceQuest> questInfo = null; if (questParent != null) { foreach (WzCompressedIntProperty info in questParent.WzProperties) { questInfo.Add(new ObjectInstanceQuest(int.Parse(info.Name), (QuestState)info.Value)); } } bool flip = InfoTool.GetBool(obj["f"]); IWzImageProperty objInfoProp = Program.InfoManager.ObjectSets[oS][l0][l1][l2]; if (objInfoProp.HCTag == null) { objInfoProp.HCTag = ObjectInfo.Load((WzSubProperty)objInfoProp, oS, l0, l1, l2); } ObjectInfo objInfo = (ObjectInfo)objInfoProp.HCTag; mapBoard.BoardItems.TileObjs.Add((LayeredItem)objInfo.CreateInstance(mapBoard.Layers[layer], mapBoard, x, y, z, r, hide, reactor, flow, rx, ry, cx, cy, name, tags, questInfo, flip, false, false)); } IWzImageProperty tileParent = layerProp["tile"]; for (int i = 0; i < tileParent.WzProperties.Count; i++) //foreach (IWzImageProperty tile in layerProp["tile"].WzProperties) { IWzImageProperty tile = tileParent.WzProperties[i]; int x = InfoTool.GetInt(tile["x"]); int y = InfoTool.GetInt(tile["y"]); //int zM = InfoTool.GetInt(tile["zM"]); string u = InfoTool.GetString(tile["u"]); int no = InfoTool.GetInt(tile["no"]); IWzImageProperty tileInfoProp = Program.InfoManager.TileSets[tS][u][no.ToString()]; if (tileInfoProp.HCTag == null) { tileInfoProp.HCTag = TileInfo.Load((WzCanvasProperty)tileInfoProp, tS, u, no.ToString()); } TileInfo tileInfo = (TileInfo)tileInfoProp.HCTag; mapBoard.BoardItems.TileObjs.Add((LayeredItem)tileInfo.CreateInstance(mapBoard.Layers[layer], mapBoard, x, y, i /*zM*/, false, false, false)); } } }