Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
 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;
         }
     }
 }