public MapInfo(WzImage image, string strMapName, string strStreetName) { int? startHour; int? endHour; this.strMapName = strMapName; this.strStreetName = strStreetName; foreach (IWzImageProperty prop in image["info"].WzProperties) switch (prop.Name) { case "bgm": bgm = InfoTool.GetString(prop); break; case "cloud": cloud = InfoTool.GetBool(prop); break; case "swim": swim = InfoTool.GetBool(prop); break; case "forcedReturn": forcedReturn = InfoTool.GetInt(prop); break; case "hideMinimap": hideMinimap = InfoTool.GetBool(prop); break; case "mapDesc": mapDesc = InfoTool.GetString(prop); break; case "mapMark": MapMark = InfoTool.GetString(prop); break; case "mobRate": mobRate = InfoTool.GetFloat(prop); break; case "moveLimit": moveLimit = InfoTool.GetInt(prop); break; case "returnMap": returnMap = InfoTool.GetInt(prop); break; case "town": town = InfoTool.GetBool(prop); break; case "version": version = InfoTool.GetInt(prop); break; case "fieldLimit": int fl = InfoTool.GetInt(prop); if (fl >= (int)Math.Pow(2, 23)) fl = fl & ((int)Math.Pow(2, 23) - 1); fieldLimit = (FieldLimit)fl; break; case "VRTop": case "VRBottom": case "VRLeft": case "VRRight": break; case "link": //link = InfoTool.GetInt(prop); break; case "timeLimit": timeLimit = InfoTool.GetInt(prop); break; case "lvLimit": lvLimit = InfoTool.GetInt(prop); break; case "onFirstUserEnter": onFirstUserEnter = InfoTool.GetString(prop); break; case "onUserEnter": onUserEnter = InfoTool.GetString(prop); break; case "fly": fly = InfoTool.GetBool(prop); break; case "noMapCmd": noMapCmd = InfoTool.GetBool(prop); break; case "partyOnly": partyOnly = InfoTool.GetBool(prop); break; case "fieldType": int ft = InfoTool.GetInt(prop); if (!Enum.IsDefined(typeof(FieldType), ft)) ft = 0; fieldType = (FieldType)ft; break; case "miniMapOnOff": miniMapOnOff = InfoTool.GetBool(prop); break; case "reactorShuffle": reactorShuffle = InfoTool.GetBool(prop); break; case "reactorShuffleName": reactorShuffleName = InfoTool.GetString(prop); break; case "personalShop": personalShop = InfoTool.GetBool(prop); break; case "entrustedShop": entrustedShop = InfoTool.GetBool(prop); break; case "effect": effect = InfoTool.GetString(prop); break; case "lvForceMove": lvForceMove = InfoTool.GetInt(prop); break; case "timeMob": startHour = InfoTool.GetOptionalInt(prop["startHour"]); endHour = InfoTool.GetOptionalInt(prop["endHour"]); int? id = InfoTool.GetOptionalInt(prop["id"]); string message = InfoTool.GetOptionalString(prop["message"]); if (id == null || message == null || (startHour == null ^ endHour == null)) { //System.Windows.Forms.MessageBox.Show("Warning", "Warning - incorrect timeMob structure in map data. Skipped and error log was saved."); WzFile file = (WzFile)image.WzFileParent; if (file != null) ErrorLogger.Log(ErrorLevel.IncorrectStructure, "timeMob, map " + image.Name + " of version " + Enum.GetName(typeof(WzMapleVersion), file.MapleVersion) + ", v" + file.Version.ToString()); } else timeMob = new TimeMob((int?)startHour, (int?)endHour, (int)id, message); break; case "help": help = InfoTool.GetString(prop); break; case "snow": snow = InfoTool.GetBool(prop); break; case "rain": rain = InfoTool.GetBool(prop); break; case "dropExpire": dropExpire = InfoTool.GetInt(prop); break; case "decHP": decHP = InfoTool.GetInt(prop); break; case "decInterval": decInterval = InfoTool.GetInt(prop); break; case "autoLieDetector": startHour = InfoTool.GetOptionalInt(prop["startHour"]); endHour = InfoTool.GetOptionalInt(prop["endHour"]); int? interval = InfoTool.GetOptionalInt(prop["interval"]); int? propInt = InfoTool.GetOptionalInt(prop["prop"]); if (startHour == null || endHour == null || interval == null || propInt == null) { //System.Windows.Forms.MessageBox.Show("Warning", "Warning - incorrect autoLieDetector structure in map data. Skipped and error log was saved."); WzFile file = (WzFile)image.WzFileParent; if (file != null) ErrorLogger.Log(ErrorLevel.IncorrectStructure, "autoLieDetector, map " + image.Name + " of version " + Enum.GetName(typeof(WzMapleVersion), file.MapleVersion) + ", v" + file.Version.ToString()); } else autoLieDetector = new AutoLieDetector((int)startHour, (int)endHour, (int)interval, (int)propInt); break; case "expeditionOnly": expeditionOnly = InfoTool.GetBool(prop); break; case "fs": fs = InfoTool.GetFloat(prop); break; case "protectItem": protectItem = InfoTool.GetInt(prop); break; case "createMobInterval": createMobInterval = InfoTool.GetInt(prop); break; case "fixedMobCapacity": fixedMobCapacity = InfoTool.GetInt(prop); break; case "streetName": streetName = InfoTool.GetString(prop); break; case "noRegenMap": noRegenMap = InfoTool.GetBool(prop); break; case "allowedItems": allowedItems = new List<int>(); if (prop.WzProperties != null && prop.WzProperties.Count > 0) foreach (IWzImageProperty item in prop.WzProperties) allowedItems.Add((int)item); break; case "recovery": recovery = InfoTool.GetFloat(prop); break; case "blockPBossChange": blockPBossChange = InfoTool.GetBool(prop); break; case "everlast": everlast = InfoTool.GetBool(prop); break; case "damageCheckFree": damageCheckFree = InfoTool.GetBool(prop); break; case "dropRate": dropRate = InfoTool.GetFloat(prop); break; case "scrollDisable": scrollDisable = InfoTool.GetBool(prop); break; case "needSkillForFly": needSkillForFly = InfoTool.GetBool(prop); break; case "zakum2Hack": zakum2Hack = InfoTool.GetBool(prop); break; case "allMoveCheck": allMoveCheck = InfoTool.GetBool(prop); break; case "VRLimit": VRLimit = InfoTool.GetBool(prop); break; case "consumeItemCoolTime": consumeItemCoolTime = InfoTool.GetBool(prop); break; default: additionalProps.Add(prop); break; } if (image["info"]["VRLeft"] != null) { IWzImageProperty info = image["info"]; int left = InfoTool.GetInt(info["VRLeft"]); int right = InfoTool.GetInt(info["VRRight"]); int top = InfoTool.GetInt(info["VRTop"]); int bottom = InfoTool.GetInt(info["VRBottom"]); VR = new Rectangle(left, top, right - left, bottom - top); } }
public MapInfo(WzImage image, string strMapName, string strStreetName, string strCategoryName) { this.image = image; int? startHour; int? endHour; this.strMapName = strMapName; this.strStreetName = strStreetName; this.strCategoryName = strCategoryName; WzFile file = (WzFile)image.WzFileParent; string loggerSuffix = ", map " + image.Name + ((file != null) ? (" of version " + Enum.GetName(typeof(WzMapleVersion), file.MapleVersion) + ", v" + file.Version.ToString()) : ""); foreach (WzImageProperty prop in image["info"].WzProperties) { switch (prop.Name) { case "bgm": bgm = InfoTool.GetString(prop); break; case "cloud": cloud = InfoTool.GetBool(prop); break; case "swim": swim = InfoTool.GetBool(prop); break; case "forcedReturn": forcedReturn = InfoTool.GetInt(prop); break; case "hideMinimap": hideMinimap = InfoTool.GetBool(prop); break; case "mapDesc": mapDesc = InfoTool.GetString(prop); break; case "mapName": mapName = InfoTool.GetString(prop); break; case "mapMark": mapMark = InfoTool.GetString(prop); break; case "mobRate": mobRate = InfoTool.GetFloat(prop); break; case "moveLimit": moveLimit = InfoTool.GetInt(prop); break; case "returnMap": returnMap = InfoTool.GetInt(prop); break; case "town": town = InfoTool.GetBool(prop); break; case "version": version = InfoTool.GetInt(prop); break; case "fieldLimit": int fl = InfoTool.GetInt(prop); if (fl >= (int)Math.Pow(2, 23)) { ErrorLogger.Log(ErrorLevel.IncorrectStructure, "Invalid fieldlimit " + fl.ToString() + loggerSuffix); fl = fl & ((int)Math.Pow(2, 23) - 1); } fieldLimit = (FieldLimit)fl; break; case "VRTop": case "VRBottom": case "VRLeft": case "VRRight": break; case "link": //link = InfoTool.GetInt(prop); break; case "timeLimit": timeLimit = InfoTool.GetInt(prop); break; case "lvLimit": lvLimit = InfoTool.GetInt(prop); break; case "onFirstUserEnter": onFirstUserEnter = InfoTool.GetString(prop); break; case "onUserEnter": onUserEnter = InfoTool.GetString(prop); break; case "fly": fly = InfoTool.GetBool(prop); break; case "noMapCmd": noMapCmd = InfoTool.GetBool(prop); break; case "partyOnly": partyOnly = InfoTool.GetBool(prop); break; case "fieldType": int ft = InfoTool.GetInt(prop); if (!Enum.IsDefined(typeof(FieldType), ft)) { ErrorLogger.Log(ErrorLevel.IncorrectStructure, "Invalid fieldType " + ft.ToString() + loggerSuffix); ft = 0; } fieldType = (FieldType)ft; break; case "miniMapOnOff": miniMapOnOff = InfoTool.GetBool(prop); break; case "reactorShuffle": reactorShuffle = InfoTool.GetBool(prop); break; case "reactorShuffleName": reactorShuffleName = InfoTool.GetString(prop); break; case "personalShop": personalShop = InfoTool.GetBool(prop); break; case "entrustedShop": entrustedShop = InfoTool.GetBool(prop); break; case "effect": effect = InfoTool.GetString(prop); break; case "lvForceMove": lvForceMove = InfoTool.GetInt(prop); break; case "timeMob": startHour = InfoTool.GetOptionalInt(prop["startHour"]); endHour = InfoTool.GetOptionalInt(prop["endHour"]); int? id = InfoTool.GetOptionalInt(prop["id"]); string message = InfoTool.GetOptionalString(prop["message"]); if (id == null || message == null || (startHour == null ^ endHour == null)) { ErrorLogger.Log(ErrorLevel.IncorrectStructure, "timeMob" + loggerSuffix); } else timeMob = new TimeMob((int?)startHour, (int?)endHour, (int)id, message); break; case "help": help = InfoTool.GetString(prop); break; case "snow": snow = InfoTool.GetBool(prop); break; case "rain": rain = InfoTool.GetBool(prop); break; case "dropExpire": dropExpire = InfoTool.GetInt(prop); break; case "decHP": decHP = InfoTool.GetInt(prop); break; case "decInterval": decInterval = InfoTool.GetInt(prop); break; case "autoLieDetector": startHour = InfoTool.GetOptionalInt(prop["startHour"]); endHour = InfoTool.GetOptionalInt(prop["endHour"]); int? interval = InfoTool.GetOptionalInt(prop["interval"]); int? propInt = InfoTool.GetOptionalInt(prop["prop"]); if (startHour == null || endHour == null || interval == null || propInt == null) { ErrorLogger.Log(ErrorLevel.IncorrectStructure, "autoLieDetector" + loggerSuffix); } else autoLieDetector = new AutoLieDetector((int)startHour, (int)endHour, (int)interval, (int)propInt); break; case "expeditionOnly": expeditionOnly = InfoTool.GetBool(prop); break; case "fs": fs = InfoTool.GetFloat(prop); break; case "protectItem": protectItem = InfoTool.GetInt(prop); break; case "createMobInterval": createMobInterval = InfoTool.GetInt(prop); break; case "fixedMobCapacity": fixedMobCapacity = InfoTool.GetInt(prop); break; case "streetName": streetName = InfoTool.GetString(prop); break; case "noRegenMap": noRegenMap = InfoTool.GetBool(prop); break; case "allowedItem": allowedItem = new List<int>(); if (prop.WzProperties != null && prop.WzProperties.Count > 0) foreach (WzImageProperty item in prop.WzProperties) allowedItem.Add(item.GetInt()); break; case "recovery": recovery = InfoTool.GetFloat(prop); break; case "blockPBossChange": blockPBossChange = InfoTool.GetBool(prop); break; case "everlast": everlast = InfoTool.GetBool(prop); break; case "damageCheckFree": damageCheckFree = InfoTool.GetBool(prop); break; case "dropRate": dropRate = InfoTool.GetFloat(prop); break; case "scrollDisable": scrollDisable = InfoTool.GetBool(prop); break; case "needSkillForFly": needSkillForFly = InfoTool.GetBool(prop); break; case "zakum2Hack": zakum2Hack = InfoTool.GetBool(prop); break; case "allMoveCheck": allMoveCheck = InfoTool.GetBool(prop); break; case "VRLimit": VRLimit = InfoTool.GetBool(prop); break; case "consumeItemCoolTime": consumeItemCoolTime = InfoTool.GetBool(prop); break; default: ErrorLogger.Log(ErrorLevel.MissingFeature, "Unknown Prop: " + prop.Name + loggerSuffix); additionalProps.Add(prop.DeepClone()); break; } } }