режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
|
||||
function OpenStackSplitFrame(maxStack, parent, anchor, anchorTo)
|
||||
if ( StackSplitFrame.owner ) then
|
||||
StackSplitFrame.owner.hasStackSplit = 0;
|
||||
end
|
||||
|
||||
if ( not maxStack ) then
|
||||
maxStack = 0;
|
||||
end
|
||||
|
||||
StackSplitFrame.maxStack = maxStack;
|
||||
if ( StackSplitFrame.maxStack < 2 ) then
|
||||
StackSplitFrame:Hide();
|
||||
return;
|
||||
end
|
||||
|
||||
StackSplitFrame.owner = parent;
|
||||
parent.hasStackSplit = 1;
|
||||
StackSplitFrame.split = 1;
|
||||
StackSplitFrame.typing = 0;
|
||||
StackSplitText:SetText(StackSplitFrame.split);
|
||||
StackSplitLeftButton:Disable();
|
||||
StackSplitRightButton:Enable();
|
||||
|
||||
StackSplitFrame:ClearAllPoints();
|
||||
StackSplitFrame:SetPoint(anchor, parent, anchorTo, 0, 0);
|
||||
StackSplitFrame:Show();
|
||||
end
|
||||
|
||||
function UpdateStackSplitFrame(maxStack)
|
||||
StackSplitFrame.maxStack = maxStack;
|
||||
if ( StackSplitFrame.maxStack < 2 ) then
|
||||
if ( StackSplitFrame.owner ) then
|
||||
StackSplitFrame.owner.hasStackSplit = 0;
|
||||
end
|
||||
StackSplitFrame:Hide();
|
||||
return;
|
||||
end
|
||||
|
||||
if ( StackSplitFrame.split > StackSplitFrame.maxStack ) then
|
||||
StackSplitFrame.split = StackSplitFrame.maxStack;
|
||||
StackSplitText:SetText(StackSplitFrame.split);
|
||||
end
|
||||
|
||||
if ( StackSplitFrame.split == StackSplitFrame.maxStack ) then
|
||||
StackSplitRightButton:Disable();
|
||||
else
|
||||
StackSplitRightButton:Enable();
|
||||
end
|
||||
|
||||
if ( StackSplitFrame.split == 1 ) then
|
||||
StackSplitLeftButton:Disable();
|
||||
else
|
||||
StackSplitLeftButton:Enable();
|
||||
end
|
||||
end
|
||||
|
||||
function StackSplitFrame_OnChar(self,text)
|
||||
if ( text < "0" or text > "9" ) then
|
||||
return;
|
||||
end
|
||||
|
||||
if ( self.typing == 0 ) then
|
||||
self.typing = 1;
|
||||
self.split = 0;
|
||||
end
|
||||
|
||||
local split = (self.split * 10) + text;
|
||||
if ( split == self.split ) then
|
||||
if( self.split == 0 ) then
|
||||
self.split = 1;
|
||||
end
|
||||
return;
|
||||
end
|
||||
|
||||
if ( split <= self.maxStack ) then
|
||||
self.split = split;
|
||||
StackSplitText:SetText(split);
|
||||
if ( split == self.maxStack ) then
|
||||
StackSplitRightButton:Disable();
|
||||
else
|
||||
StackSplitRightButton:Enable();
|
||||
end
|
||||
if ( split == 1 ) then
|
||||
StackSplitLeftButton:Disable();
|
||||
else
|
||||
StackSplitLeftButton:Enable();
|
||||
end
|
||||
elseif ( split == 0 ) then
|
||||
self.split = 1;
|
||||
end
|
||||
end
|
||||
|
||||
function StackSplitFrame_OnKeyDown(self,key)
|
||||
local numKey = gsub(key, "NUMPAD", "");
|
||||
if ( key == "BACKSPACE" or key == "DELETE" ) then
|
||||
if ( self.typing == 0 or self.split == 1 ) then
|
||||
return;
|
||||
end
|
||||
|
||||
self.split = floor(self.split / 10);
|
||||
if ( self.split <= 1 ) then
|
||||
self.split = 1;
|
||||
self.typing = 0;
|
||||
StackSplitLeftButton:Disable();
|
||||
else
|
||||
StackSplitLeftButton:Enable();
|
||||
end
|
||||
StackSplitText:SetText(self.split);
|
||||
if ( self.money == self.maxStack ) then
|
||||
StackSplitRightButton:Disable();
|
||||
else
|
||||
StackSplitRightButton:Enable();
|
||||
end
|
||||
elseif ( key == "ENTER" ) then
|
||||
StackSplitFrameOkay_Click();
|
||||
elseif ( GetBindingFromClick(key) == "TOGGLEGAMEMENU" ) then
|
||||
StackSplitFrameCancel_Click();
|
||||
elseif ( key == "LEFT" or key == "DOWN" ) then
|
||||
StackSplitFrameLeft_Click();
|
||||
elseif (key == "RIGHT" or key == "UP" ) then
|
||||
StackSplitFrameRight_Click();
|
||||
elseif ( not ( tonumber(numKey) ) and GetBindingAction(key) ) then
|
||||
--Running bindings not used by the StackSplit frame allows players to retain control of their characters.
|
||||
RunBinding(GetBindingAction(key));
|
||||
end
|
||||
|
||||
self.down = self.down or {};
|
||||
self.down[key] = true;
|
||||
end
|
||||
|
||||
function StackSplitFrame_OnKeyUp(self,key)
|
||||
local numKey = gsub(key, "NUMPAD", "");
|
||||
if ( not ( tonumber(numKey) ) and GetBindingAction(key) ) then
|
||||
--If we don't run the up bindings as well, interesting things happen (like you never stop moving)
|
||||
RunBinding(GetBindingAction(key), "up");
|
||||
end
|
||||
|
||||
if ( self.down ) then
|
||||
self.down[key] = nil;
|
||||
end
|
||||
end
|
||||
|
||||
function StackSplitFrameLeft_Click()
|
||||
if ( StackSplitFrame.split == 1 ) then
|
||||
return;
|
||||
end
|
||||
|
||||
StackSplitFrame.split = StackSplitFrame.split - 1;
|
||||
StackSplitText:SetText(StackSplitFrame.split);
|
||||
if ( StackSplitFrame.split == 1 ) then
|
||||
StackSplitLeftButton:Disable();
|
||||
end
|
||||
StackSplitRightButton:Enable();
|
||||
end
|
||||
|
||||
function StackSplitFrameRight_Click()
|
||||
if ( StackSplitFrame.split == StackSplitFrame.maxStack ) then
|
||||
return;
|
||||
end
|
||||
|
||||
StackSplitFrame.split = StackSplitFrame.split + 1;
|
||||
StackSplitText:SetText(StackSplitFrame.split);
|
||||
if ( StackSplitFrame.split == StackSplitFrame.maxStack ) then
|
||||
StackSplitRightButton:Disable();
|
||||
end
|
||||
StackSplitLeftButton:Enable();
|
||||
end
|
||||
|
||||
function StackSplitFrameOkay_Click()
|
||||
StackSplitFrame:Hide();
|
||||
|
||||
if ( StackSplitFrame.owner ) then
|
||||
StackSplitFrame.owner.SplitStack(StackSplitFrame.owner, StackSplitFrame.split);
|
||||
end
|
||||
end
|
||||
|
||||
function StackSplitFrameCancel_Click()
|
||||
StackSplitFrame:Hide();
|
||||
end
|
||||
|
||||
function StackSplitFrame_OnHide (self)
|
||||
for key in next, (self.down or {}) do
|
||||
if ( GetBindingAction(key) ) then
|
||||
RunBinding(GetBindingAction(key), "up");
|
||||
end
|
||||
self.down[key] = nil;
|
||||
end
|
||||
|
||||
if ( StackSplitFrame.owner ) then
|
||||
StackSplitFrame.owner.hasStackSplit = 0;
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user