EventMapDecoder.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. var EventData = require("EventTipData");
  2. var EventCost = require("EventCost");
  3. var EventResult = require("EventResult");
  4. var EventMapDecoder = cc.Class({
  5. extends: cc.Component,
  6. properties: {
  7. jsonName:"events",
  8. eventList:{
  9. default:[],
  10. type:[EventData],
  11. },
  12. },
  13. //解析数据
  14. DecodeJson:function (event) {
  15. //cc.log("===解析事件数据===");
  16. var self = this;
  17. self.reCb = event;
  18. cc.loader.loadRes("json/"+self.jsonName, function (error, obj) {
  19. if(error)
  20. {
  21. //cc.log("+++解析出错,查下json+++" + error);
  22. self.reCb(false);
  23. return;
  24. }
  25. var jsonRoot = obj.json.events;
  26. //cc.log("===数据长度===" + jsonRoot.length);
  27. for (var i = 0; i < jsonRoot.length; i++) {
  28. var eventData = new EventData();
  29. eventData.Id = jsonRoot[i].Id;
  30. //eventData.icon = jsonRoot[i].icon;
  31. eventData.name = jsonRoot[i].name;
  32. eventData.desId = jsonRoot[i].desId;
  33. //消耗
  34. for (var j = 0; j < jsonRoot[i].cost.length ; j++) {
  35. var cData = new EventCost();
  36. var dt = jsonRoot[i].cost[j];
  37. cData.costType = dt[0];
  38. cData.costNum = dt[1];
  39. cData.desId = dt[2];
  40. eventData.cost[j] = cData;
  41. }
  42. //正向两种结果
  43. for (var j = 0; j < jsonRoot[i].Yresult.length; j++) {
  44. var cData = new EventResult();
  45. var data = jsonRoot[i].Yresult[j];
  46. cData.rewardType = data[0];
  47. cData.rewardNum = data[1];
  48. cData.rewardId = data[2]; //如果奖励的是金钱等 则id 为0
  49. cData.desId = data[3];
  50. eventData.YResults[j] = cData;
  51. }
  52. //负向两种结果
  53. for (var j = 0; j < jsonRoot[i].Nresult.length; j++) {
  54. var cData = new EventResult();
  55. var data = jsonRoot[i].Nresult[j];
  56. cData.rewardType = data[0];
  57. cData.rewardNum = data[1];
  58. cData.rewardId = data[2]; //如果奖励的是金钱等 则id 为0
  59. cData.desId = data[3];
  60. eventData.NResults[j] = cData;
  61. }
  62. self.eventList[i] = eventData;
  63. }
  64. self.reCb(true);
  65. });
  66. },
  67. //通过itemid获取数据
  68. getDataByItemId:function(itemId){
  69. var data = null;
  70. for (var i = this.eventList.length - 1; i >= 0; i--) {
  71. if(itemId == this.eventList[i].Id)
  72. {
  73. data = this.eventList[i];
  74. break;
  75. }
  76. }
  77. return data;
  78. },
  79. getJsonLength:function(){
  80. return this.eventList.length
  81. },
  82. getDataList:function(){
  83. return this.eventList;
  84. },
  85. });
  86. module.exports = EventMapDecoder;