XLSRandomMonsterSkillLoader.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. 
  2. using CommonLang;
  3. using CommonLang.IO;
  4. using NPOI.HSSF.UserModel;
  5. using NPOI.SS.UserModel;
  6. using NPOI.XSSF.UserModel;
  7. using System;
  8. using System.IO;
  9. using XmdsCommonServer.XLS.Data;
  10. namespace XmdsCommonServer.XLS
  11. {
  12. public class XLSRandomMonsterSkillLoader : XLSLoader
  13. {
  14. public enum MonsterRandomSkillType : int
  15. {
  16. None = 0,
  17. OnlyActive = 1, //仅主动
  18. OnlyPassive = 2, //仅被动
  19. //Active_Passive = 3, //主动 & 被动
  20. }
  21. private HashMap<int, MonsterSkills> monsterSkills = new HashMap<int, MonsterSkills>();
  22. //默认的基础概率信息
  23. MonsterSkills defaultSkills;
  24. public XLSRandomMonsterSkillLoader(string path)
  25. {
  26. byte[] data = Resource.LoadData(path);
  27. if (data == null)
  28. {
  29. throw new Exception("Can not read xls file : " + path);
  30. }
  31. using (MemoryStream ms = new MemoryStream(data))
  32. {
  33. IWorkbook Workbook = null;
  34. if (path.Contains(".xlsx"))
  35. {
  36. Workbook = new XSSFWorkbook(ms);
  37. }
  38. else if (path.Contains(".xls"))
  39. {
  40. Workbook = new HSSFWorkbook(ms);
  41. }
  42. for (int si = 0; si < Workbook.NumberOfSheets; si++)
  43. {
  44. ISheet sheet = Workbook.GetSheetAt(si) as ISheet;
  45. try
  46. {
  47. if (sheet.SheetName == "MonsterSkills")
  48. {
  49. LoadSheet(sheet);
  50. }
  51. }
  52. catch (Exception error)
  53. {
  54. throw new Exception(string.Format("XLSRandomMonsterSkillLoader 初始化怪物配置错误SheetName = {0},Error = {1}",
  55. sheet.SheetName, error.ToString()));
  56. }
  57. }
  58. }
  59. log.Info("XLSRandomMonsterSkillLoader 初始化怪物配置完成.");
  60. }
  61. private void LoadSheet(ISheet sheet)
  62. {
  63. int index = 0;
  64. try
  65. {
  66. foreach (MonsterSkills m in LoadSheet<MonsterSkills>(sheet))
  67. {
  68. monsterSkills.Add(m.MonsterID, m);
  69. index++;
  70. if(m.MonsterID == 0)
  71. {
  72. defaultSkills = m;
  73. }
  74. }
  75. }
  76. catch (Exception error)
  77. {
  78. throw new Exception(string.Format("XLSRandomMonsterSkillLoader Error : index = {0} Error = {1}", index, error.ToString()));
  79. }
  80. log.Info(string.Format("loadSheet【{0}】Complete", sheet.SheetName));
  81. }
  82. public MonsterSkills GetMonsterSkillInfo(int monsterId)
  83. {
  84. return this.monsterSkills.Get(monsterId);
  85. }
  86. public MonsterSkills GetMonsterSkillInfo()
  87. {
  88. return defaultSkills;
  89. }
  90. }
  91. }