Mercurial > wow > cyborg-mmo7
comparison RatPageModel.lua @ 18:cccc7661a2e6
Simplified the Rat page model and controller object models.
| author | madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09 |
|---|---|
| date | Thu, 25 Apr 2013 01:30:11 +0000 |
| parents | 80192bc4a108 |
| children | b7074b47cfc7 |
comparison
equal
deleted
inserted
replaced
| 17:e4dec2d465f5 | 18:cccc7661a2e6 |
|---|---|
| 25 SHIFT = 0, | 25 SHIFT = 0, |
| 26 } | 26 } |
| 27 | 27 |
| 28 local MIDDLEMOUSE = 1 | 28 local MIDDLEMOUSE = 1 |
| 29 | 29 |
| 30 CyborgMMO_RatPageModel = { | 30 ------------------------------------------------------------------------------ |
| 31 new = function() | |
| 32 local self = {} | |
| 33 self.m_Mode = 1 | |
| 34 self.ObserverCount = 0 | |
| 35 self.ObserverList = {} | |
| 36 self.Data = {} | |
| 37 | 31 |
| 38 for i=1,RAT7.MODES do | 32 local RatPageModel_methods = {} |
| 39 self.Data[i] = {} | 33 local RatPageModel_mt = {__index=RatPageModel_methods} |
| 40 for j=1,RAT7.BUTTONS do | 34 |
| 41 self.Data[i][j] = {} | 35 local function RatPageModel() |
| 36 local self = {} | |
| 37 self.mode = 1 | |
| 38 self.observers = {} | |
| 39 self.data = {} | |
| 40 | |
| 41 for i=1,RAT7.MODES do | |
| 42 self.data[i] = {} | |
| 43 for j=1,RAT7.BUTTONS do | |
| 44 self.data[i][j] = {} | |
| 45 end | |
| 46 end | |
| 47 | |
| 48 setmetatable(self, RatPageModel_mt) | |
| 49 | |
| 50 return self | |
| 51 end | |
| 52 | |
| 53 function RatPageModel_methods:InitSaveData(data) | |
| 54 for i=1,RAT7.MODES do | |
| 55 if not data["Rat"][i] then | |
| 56 data["Rat"][i] = {} | |
| 57 end | |
| 58 for j=1,RAT7.BUTTONS do | |
| 59 if not data["Rat"][i][j] then | |
| 60 data["Rat"][i][j] = {} | |
| 42 end | 61 end |
| 43 end | 62 end |
| 63 end | |
| 64 end | |
| 44 | 65 |
| 45 self.InitSaveData = function(data) | 66 function RatPageModel_methods:LoadData() |
| 46 for i=1,RAT7.MODES do | 67 CyborgMMO_DPrint("Loading...") |
| 47 if not data["Rat"][i] then | 68 local data = CyborgMMO_GetSaveData() |
| 48 data["Rat"][i] = {} | 69 |
| 49 end | 70 if not data["Rat"] then |
| 50 for j=1,RAT7.BUTTONS do | 71 data["Rat"] = {} |
| 51 if not data["Rat"][i][j] then | 72 self:InitSaveData(data) |
| 52 data["Rat"][i][j] = {} | 73 end |
| 53 end | 74 |
| 75 self.data = data["Rat"] | |
| 76 if data then | |
| 77 for mode=1,RAT7.MODES do | |
| 78 for button=1,RAT7.BUTTONS do | |
| 79 if self.data[mode][button] then | |
| 80 local object = CyborgMMO_WowObject.Create(self.data[mode][button].Type, self.data[mode][button].Detail, self.data[mode][button].Subdetail) | |
| 81 self:SetObjectOnButtonNoUpdate(button, mode, object) | |
| 82 else | |
| 83 local object = CyborgMMO_WowObject.Create("", "", "") | |
| 84 self:SetObjectOnButtonNoUpdate(button, mode, object) | |
| 85 self.data[mode][button] = object | |
| 54 end | 86 end |
| 55 end | 87 end |
| 56 end | 88 end |
| 89 self:UpdateObservers() | |
| 90 end | |
| 91 end | |
| 57 | 92 |
| 58 self.LoadData = function() | 93 function RatPageModel_methods:SaveData() |
| 59 CyborgMMO_DPrint("Loading...") | 94 CyborgMMO_DPrint("Saving...") |
| 60 local data = CyborgMMO_GetSaveData() | 95 CyborgMMO_SetSaveData(self.data, "Rat") |
| 96 end | |
| 61 | 97 |
| 62 if not data["Rat"] then | 98 function RatPageModel_methods:SetMode(mode) |
| 63 data["Rat"] = {} | 99 self.mode = mode |
| 64 self.InitSaveData(data) | 100 self:UpdateObservers() |
| 65 end | 101 end |
| 66 | 102 |
| 67 self.Data = data["Rat"] | 103 function RatPageModel_methods:GetMode() |
| 68 if data then | 104 return self.mode |
| 69 for mode=1,RAT7.MODES do | 105 end |
| 70 for button=1,RAT7.BUTTONS do | 106 |
| 71 if self.Data[mode][button] then | 107 function RatPageModel_methods:GetData() |
| 72 local object = CyborgMMO_WowObject.Create(self.Data[mode][button].Type, self.Data[mode][button].Detail, self.Data[mode][button].Subdetail) | 108 return self.data,self.mode |
| 73 self.SetObjectOnButtonNoUpdate(button, mode, object) | 109 end |
| 74 else | 110 |
| 75 local object = CyborgMMO_WowObject.Create("", "", "") | 111 function RatPageModel_methods:GetObjectOnButton(button) |
| 76 self.SetObjectOnButtonNoUpdate(button, mode, object) | 112 if not self.data[self.mode][button] then |
| 77 self.Data[mode][button] = object | 113 return nil |
| 78 end | 114 else |
| 79 end | 115 return self.data[self.mode][button] |
| 80 end | 116 end |
| 81 self.UpdateObservers() | 117 end |
| 82 end | 118 |
| 119 function RatPageModel_methods:SetObjectOnButtonNoUpdate(button, mode, object) | |
| 120 -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode)) | |
| 121 self.data[mode][button] = object | |
| 122 | |
| 123 if object then | |
| 124 object.SetBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) | |
| 125 if("callback" == object.Type) then | |
| 126 CyborgMMO_DPrint("trying to set texture") | |
| 127 local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button) | |
| 128 slot:SetNormalTexture(object.Texture) | |
| 83 end | 129 end |
| 130 else | |
| 131 CyborgMMO_DPrint("clearing "..button) | |
| 132 CyborgMMO_WowObject.ClearBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) | |
| 133 end | |
| 134 end | |
| 84 | 135 |
| 85 self.SaveData = function() | 136 function RatPageModel_methods:SetObjectOnButton(button, mode, object) |
| 86 CyborgMMO_DPrint("Saving...") | 137 self:SetObjectOnButtonNoUpdate(button, mode, object) |
| 87 CyborgMMO_SetSaveData(self.Data, "Rat") | 138 self:UpdateObservers() |
| 88 end | 139 end |
| 89 | 140 |
| 90 self.SetMode = function(mode) | 141 function RatPageModel_methods:AddObserver(view) |
| 91 self.m_Mode = mode | 142 table.insert(self.observers, view) |
| 92 self.UpdateObservers() | 143 end |
| 93 end | |
| 94 | 144 |
| 95 self.GetMode = function() | 145 function RatPageModel_methods:GetAllObservers() |
| 96 return self.m_Mode | 146 return self.observers |
| 97 end | 147 end |
| 98 | 148 |
| 99 self.GetData = function() | 149 function RatPageModel_methods:UpdateObservers() |
| 100 return self.Data,self.m_Mode | 150 for i=1,#self.observers do |
| 101 end | 151 self.observers[i].Update(self.data, self.mode) |
| 152 end | |
| 153 self:SaveData() | |
| 154 end | |
| 102 | 155 |
| 103 self.GetObjectOnButton = function(button) | 156 ------------------------------------------------------------------------------ |
| 104 if not self.Data[self.m_Mode][button] then | |
| 105 return nil | |
| 106 else | |
| 107 return self.Data[self.m_Mode][button] | |
| 108 end | |
| 109 end | |
| 110 | 157 |
| 111 self.SetObjectOnButtonNoUpdate = function(button, mode, object) | 158 CyborgMMO_RatPageModel = RatPageModel() |
| 112 -- CyborgMMO_DPrint("button = "..tostring(button).." mode = "..tostring(mode)) | |
| 113 self.Data[mode][button] = object | |
| 114 | 159 |
| 115 if object then | |
| 116 object.SetBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) | |
| 117 if("callback" == object.Type) then | |
| 118 CyborgMMO_DPrint("trying to set texture") | |
| 119 local slot = getglobal("CyborgMMO_MainPageSlotListSlot"..button) | |
| 120 slot:SetNormalTexture(object.Texture) | |
| 121 end | |
| 122 else | |
| 123 CyborgMMO_DPrint("clearing "..button) | |
| 124 CyborgMMO_WowObject.ClearBinding(CyborgMMO_WowCommands[((mode-1)*RAT7.BUTTONS)+button]) | |
| 125 end | |
| 126 end | |
| 127 | |
| 128 self.SetObjectOnButton = function(button, mode, object) | |
| 129 self.SetObjectOnButtonNoUpdate(button, mode, object) | |
| 130 self.UpdateObservers() | |
| 131 end | |
| 132 | |
| 133 self.AddObserver = function(view) | |
| 134 table.insert(self.ObserverList, view) | |
| 135 self.observerCount = #self.ObserverList | |
| 136 end | |
| 137 | |
| 138 self.GetAllObservers = function() | |
| 139 return self.ObserverList | |
| 140 end | |
| 141 | |
| 142 self.UpdateObservers = function() | |
| 143 for i=1,#self.ObserverList do | |
| 144 self.ObserverList[i].Update(self.Data, self.m_Mode) | |
| 145 end | |
| 146 self.SaveData() | |
| 147 end | |
| 148 | |
| 149 return self | |
| 150 end, | |
| 151 | |
| 152 m_Instance = nil, | |
| 153 | |
| 154 Instance = function() | |
| 155 if not CyborgMMO_RatPageModel.m_Instance then | |
| 156 CyborgMMO_RatPageModel.m_Instance = CyborgMMO_RatPageModel.new() | |
| 157 end | |
| 158 return CyborgMMO_RatPageModel.m_Instance | |
| 159 end, | |
| 160 } | |
| 161 |
