25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

112 satır
2.2 KiB

  1. -- 技能撤销操作
  2. -- 删除技能轨迹
  3. function Commands:deleteTrack(ce, track)
  4. local releaseTrack = false
  5. local function redo()
  6. -- 如果preTrack不为空
  7. local preTrack = track:getPrevTrack()
  8. if preTrack ~= nil then
  9. track.PrevTrack = preTrack;
  10. preTrack:setNextTrack(-1);
  11. end
  12. -- nextTrack不为空
  13. local nextTrack = track:getNextTrack()
  14. if nextTrack ~= nil then
  15. track.NextTrack = nextTrack
  16. track:setNextTrack(-1)
  17. end
  18. track:retain()
  19. releaseTrack = true
  20. -- 移除这个轨迹
  21. track:removeFromParent();
  22. -- 更新树
  23. app.cs.updateCombineTree();
  24. -- 选中空
  25. app.cs.selectTrackObject(ce);
  26. return true;
  27. end
  28. local function undo()
  29. ce:addTrack(track);
  30. track:release()
  31. releaseTrack = false
  32. if not tolua.isnull(track.PrevTrack) then
  33. track.PrevTrack:setNextTrack(track:getTrackId())
  34. end
  35. if not tolua.isnull(track.NextTrack) then
  36. track:setNextTrack(track.NextTrack:getTrackId())
  37. end
  38. app.cs.updateCombineTree();
  39. app.cs.selectTrackObject(track);
  40. end
  41. local function clear()
  42. if releaseTrack then
  43. track:release()
  44. end
  45. end
  46. return {redo = redo , undo = undo, clear = clear};
  47. end
  48. -- 创建技能轨迹
  49. function Commands:createTrack(ce, track)
  50. local releaseTrack = false
  51. local function redo()
  52. -- 如果preTrack不为空
  53. local preTrack = track:getPrevTrack()
  54. if preTrack ~= nil then
  55. track.PrevTrack = preTrack;
  56. preTrack:setNextTrack(-1);
  57. end
  58. -- nextTrack不为空
  59. local nextTrack = track:getNextTrack()
  60. if nextTrack ~= nil then
  61. track.NextTrack = nextTrack
  62. track:setNextTrack(-1)
  63. end
  64. -- 添加
  65. ce:addTrack(track);
  66. if releaseTrack then
  67. track:release()
  68. releaseTrack = false
  69. end
  70. -- 更新树
  71. app.cs.updateCombineTree();
  72. -- 选中空
  73. app.cs.selectTrackObject(track);
  74. return true;
  75. end
  76. local function undo()
  77. if not tolua.isnull(track.PrevTrack) then
  78. track.PrevTrack:setNextTrack(track:getTrackId())
  79. end
  80. if not tolua.isnull(track.NextTrack) then
  81. track:setNextTrack(track.NextTrack:getTrackId())
  82. end
  83. track:retain()
  84. releaseTrack = true
  85. -- 移除这个轨迹
  86. track:removeFromParent();
  87. app.cs.updateCombineTree();
  88. app.cs.selectTrackObject(ce);
  89. end
  90. local function clear()
  91. if releaseTrack then
  92. track:release()
  93. end
  94. end
  95. return {redo = redo , undo = undo, clear = clear};
  96. end