From 0124a604629d1fabd18c6011546fdc99ad7254a3 Mon Sep 17 00:00:00 2001 From: jilin Date: Sun, 22 Jul 2018 21:34:40 +0800 Subject: [PATCH] add ui of pannel --- scripts/containersWrapper.lua | 14 +- scripts/hudWrapper.lua | 22 +-- scripts/shadowPackageAction.lua | 13 +- scripts/widgets/aipAutoConfigWidget.lua | 94 ++++++++++ scripts/widgets/aipConfigWidget.bac.lua | 90 --------- scripts/widgets/aipConfigWidget.lua | 239 ------------------------ 6 files changed, 116 insertions(+), 356 deletions(-) create mode 100644 scripts/widgets/aipAutoConfigWidget.lua delete mode 100755 scripts/widgets/aipConfigWidget.bac.lua delete mode 100755 scripts/widgets/aipConfigWidget.lua diff --git a/scripts/containersWrapper.lua b/scripts/containersWrapper.lua index 1cc12043..2e4f88bd 100644 --- a/scripts/containersWrapper.lua +++ b/scripts/containersWrapper.lua @@ -110,7 +110,7 @@ function params.aip_nectar_maker.widget.buttoninfo.validfn(inst) end ----------------- 暗影包裹 ---------------- +---------------- 暗影宝箱 ---------------- params.aip_shadow_chest = { widget = @@ -138,16 +138,16 @@ for y = 2, 0, -1 do end local tmpConfig = { - prompt = "Write on the sign", + --[[prompt = "Write on the sign", animbank = "ui_board_5x3", animbuild = "ui_board_5x3", - menuoffset = Vector3(6, -70, 0), + menuoffset = Vector3(6, -70, 0),]] cancelbtn = { text = "Cancel", cb = nil, control = CONTROL_CANCEL }, - middlebtn = { text = "Random", cb = nil, control = CONTROL_MENU_MISC_2 }, - acceptbtn = { text = "Write it!", cb = nil, control = CONTROL_ACCEPT }, + -- middlebtn = { text = "Random", cb = nil, control = CONTROL_MENU_MISC_2 }, + acceptbtn = { text = "Confirm", cb = nil, control = CONTROL_ACCEPT }, - config = { + --[[config = { { name = "autoCollect", label = "Auto Collect Item", @@ -158,7 +158,7 @@ local tmpConfig = { }, default = "false", }, - }, + },]] } function params.aip_shadow_chest.widget.buttoninfo.fn(inst) diff --git a/scripts/hudWrapper.lua b/scripts/hudWrapper.lua index 28dd8c27..a42342f1 100755 --- a/scripts/hudWrapper.lua +++ b/scripts/hudWrapper.lua @@ -6,24 +6,18 @@ end ----------------------------------------------------------------------- local PlayerHud = GLOBAL.require("screens/playerhud") +local ConfigWidget = GLOBAL.require("widgets/aipAutoConfigWidget") +-- 显示自动化配置窗口 function PlayerHud:ShowAIPAutoConfigWidget(inst, config) - if writeable == nil then - return - else - self.writeablescreen = WriteableWidget(self.owner, inst, config) - self:OpenScreenUnderPause(self.writeablescreen) - if TheFrontEnd:GetActiveScreen() == self.writeablescreen then - -- Have to set editing AFTER pushscreen finishes. - self.writeablescreen.edit_text:SetEditing(true) - end - return self.writeablescreen - end + self.aipAutoConfigScreen = ConfigWidget(self.owner, inst, config) + self:OpenScreenUnderPause(self.aipAutoConfigScreen) + return self.aipAutoConfigScreen end function PlayerHud:CloseAIPAutoConfigWidget() - if self.writeablescreen then - self.writeablescreen:Close() - self.writeablescreen = nil + if self.aipAutoConfigScreen then + self.aipAutoConfigScreen:Close() + self.aipAutoConfigScreen = nil end end \ No newline at end of file diff --git a/scripts/shadowPackageAction.lua b/scripts/shadowPackageAction.lua index fcae0de2..db02b4f2 100644 --- a/scripts/shadowPackageAction.lua +++ b/scripts/shadowPackageAction.lua @@ -1,7 +1,7 @@ GLOBAL.require("recipe") -local PlayerHud = GLOBAL.require("screens/playerhud") -local ConfigWidget = GLOBAL.require("widgets/aipConfigWidget") +--local PlayerHud = GLOBAL.require("screens/playerhud") +--local ConfigWidget = GLOBAL.require("widgets/aipConfigWidget") local function canPackage(inst) if not inst then @@ -22,11 +22,12 @@ local function canPackage(inst) end ----------------------------------------- 注入 ----------------------------------------- -function PlayerHud:ShowAIPAutoConfigWidget(inst, config) +-- 2018-07-22 不知道这段代码干什么用的了,先全部注释了 +--[[function PlayerHud:ShowAIPAutoConfigWidget(inst, config) self.aipAutoConfigScreen = ConfigWidget(self.owner, inst, config) self:OpenScreenUnderPause(self.aipAutoConfigScreen) return self.aipAutoConfigScreen - --[[if writeable == nil then + [if writeable == nil then return else self.writeablescreen = WriteableWidget(self.owner, writeable, config) @@ -36,7 +37,7 @@ function PlayerHud:ShowAIPAutoConfigWidget(inst, config) self.writeablescreen.edit_text:SetEditing(true) end return self.writeablescreen - end]] + end] end function PlayerHud:CloseAIPAutoConfigWidget() @@ -44,7 +45,7 @@ function PlayerHud:CloseAIPAutoConfigWidget() self.aipAutoConfigScreen:Close() self.aipAutoConfigScreen = nil end -end +end]] ---------------------------------------- 搬运者 ---------------------------------------- local old_HAMMER = GLOBAL.ACTIONS.HAMMER.fn diff --git a/scripts/widgets/aipAutoConfigWidget.lua b/scripts/widgets/aipAutoConfigWidget.lua new file mode 100644 index 00000000..5f049ce7 --- /dev/null +++ b/scripts/widgets/aipAutoConfigWidget.lua @@ -0,0 +1,94 @@ +-- 自动化配置面板 +local Screen = require "widgets/screen" +local Widget = require "widgets/widget" +local Text = require "widgets/text" +local TextEdit = require "widgets/textedit" +local Menu = require "widgets/menu" +local UIAnim = require "widgets/uianim" +local ImageButton = require "widgets/imagebutton" + +local TEMPLATES = require "widgets/templates" + +local function closeScreen(owner) + owner.HUD:CloseAIPAutoConfigWidget() +end + +local AutoConfigWidget = Class(Screen, function(self, owner, inst, config) + Screen._ctor(self, "AIP_AutoConfigWidget") + + self.aipOwner = owner + self.aipInst = inst + self.aipConfig = config + + self.isopen = false + + self._scrnw, self._scrnh = TheSim:GetScreenSize() + self:SetScaleMode(SCALEMODE_PROPORTIONAL) -- 按比例 + self:SetMaxPropUpscale(MAX_HUD_SCALE) -- 最大比例? + self:SetPosition(0, 0, 0) + self:SetVAnchor(ANCHOR_MIDDLE) + self:SetHAnchor(ANCHOR_MIDDLE) + + -- 添加一个根据屏幕比例缩放的根节点 + self.scalingroot = self:AddChild(Widget("aipConfigWidgetScalingRoot")) + self.scalingroot:SetScale(TheFrontEnd:GetHUDScale()) + self.inst:ListenForEvent("continuefrompause", function() + if self.isopen then + self.scalingroot:SetScale(TheFrontEnd:GetHUDScale()) + end + end, TheWorld) + self.inst:ListenForEvent("refreshhudsize", function(hud, scale) + if self.isopen then + self.scalingroot:SetScale(scale) + end + end, owner.HUD.inst) + + -- 添加一个相对缩放根节点小一点的节点 + self.root = self.scalingroot:AddChild(Widget("aipConfigWidgetRoot")) + self.root:SetScale(.6, .6, .6) + + -- 添加黑色背景 + self.black = self.root:AddChild(Image("images/global.xml", "square.tex")) + self.black:SetVRegPoint(ANCHOR_MIDDLE) + self.black:SetHRegPoint(ANCHOR_MIDDLE) + self.black:SetVAnchor(ANCHOR_MIDDLE) + self.black:SetHAnchor(ANCHOR_MIDDLE) + self.black:SetScaleMode(SCALEMODE_FILLSCREEN) + self.black:SetTint(0, 0, 0, 0.3) + self.black.OnMouseButton = function() closeScreen(owner) end + + -- 背景框 + self.bg = self.root:AddChild(TEMPLATES.CurlyWindow(600, 600, 1, 1, 68, -40)) + self.bg.fill = self.bg:AddChild(Image("images/fepanel_fills.xml", "panel_fill_tiny.tex")) + self.bg.fill:SetScale(1.65, 1.85) + self.bg.fill:SetPosition(8, 12) + + -- 按钮 + self.buttons = {} + table.insert(self.buttons, { text = config.cancelbtn.text, cb = function() closeScreen(owner) end, control = config.cancelbtn.control }) + table.insert(self.buttons, { text = config.acceptbtn.text, cb = function() aipPrint("Close window!!!") end, control = config.acceptbtn.control }) + + local menuoffset = Vector3(0, 0, 0) + local spacing = 110 + self.menu = self.root:AddChild(Menu(self.buttons, spacing, true, "small")) + self.menu:SetTextSize(35) + self.menu:SetPosition(menuoffset.x - .5 * spacing * (#self.buttons - 1), menuoffset.y - 260, menuoffset.z) + + -- 文字 + self.checkbox_parent:AddChild(Text(CHATFONT, 30, STRINGS.UI.SERVERLISTINGSCREEN.SHOW_MOD_WARNING)) + + -- 收尾 + self.isopen = true + self:Show() +end) + +function AutoConfigWidget:Close() + if self.isopen then + self.isopen = false + + self.black:Kill() + self.inst:DoTaskInTime(.1, function() TheFrontEnd:PopScreen(self) end) + end +end + +return AutoConfigWidget \ No newline at end of file diff --git a/scripts/widgets/aipConfigWidget.bac.lua b/scripts/widgets/aipConfigWidget.bac.lua deleted file mode 100755 index b80032c0..00000000 --- a/scripts/widgets/aipConfigWidget.bac.lua +++ /dev/null @@ -1,90 +0,0 @@ -local Screen = require "widgets/screen" -local Widget = require "widgets/widget" -local Text = require "widgets/text" -local TextEdit = require "widgets/textedit" -local Menu = require "widgets/menu" -local UIAnim = require "widgets/uianim" -local ImageButton = require "widgets/imagebutton" - ------------------------------------- 配置 ------------------------------------ -local foldername = KnownModIndex:GetModActualName(TUNING.ZOMBIEJ_ADDTIONAL_PACKAGE) -local language = aipGetModConfig("language") - -local LANG_MAP = { - english = { - --CONFIG = "Configuration", - }, - chinese = { - --CONFIG = "配置", - }, -} - -local LANG = LANG_MAP[language] or LANG_MAP.english -local LANG_ENG = LANG_MAP.english - -local function Lang(name) - return LANG[name] or LANG_ENG[name] -end - ------------------------------------------------------------------------------- -local ConfigWidget = Class(Screen, function(self, owner, inst, config) - Screen._ctor(self, "AIP_AutoConfig") - - self.owner = owner - self.inst = inst - self.config = config - - self.isopen = false - - self._scrnw, self._scrnh = TheSim:GetScreenSize() - - aipPrint("1 >>>>>>>>>>>>>", self) - aipPrint("2 >>>>>>>>>>>>>", owner) - aipPrint("3 >>>>>>>>>>>>>", inst) - aipPrint("4 >>>>>>>>>>>>>", config) - - self:SetScaleMode(SCALEMODE_PROPORTIONAL) - self:SetMaxPropUpscale(MAX_HUD_SCALE) - self:SetPosition(0, 0, 0) - self:SetVAnchor(ANCHOR_MIDDLE) - self:SetHAnchor(ANCHOR_MIDDLE) - - -- Resize - self.scalingroot = self:AddChild(Widget("aipConfigWidgetScalingRoot")) - self.scalingroot:SetScale(TheFrontEnd:GetHUDScale()) - self.inst:ListenForEvent("continuefrompause", function() - if self.isopen then - self.scalingroot:SetScale(TheFrontEnd:GetHUDScale()) - end - end, TheWorld) - self.inst:ListenForEvent("refreshhudsize", function(hud, scale) - if self.isopen then - self.scalingroot:SetScale(scale) - end - end, owner.HUD.inst) - - self.root = self.scalingroot:AddChild(Widget("aipConfigWidgetRoot")) - self.root:SetScale(.6, .6, .6) - - -- Black - self.black = self.root:AddChild(Image("images/global.xml", "square.tex")) - self.black:SetVRegPoint(ANCHOR_MIDDLE) - self.black:SetHRegPoint(ANCHOR_MIDDLE) - self.black:SetVAnchor(ANCHOR_MIDDLE) - self.black:SetHAnchor(ANCHOR_MIDDLE) - self.black:SetScaleMode(SCALEMODE_FILLSCREEN) - self.black:SetTint(0, 0, 0, 0) - self.black.OnMouseButton = function() oncancel(self.writeable, self.owner, self) end - - self.bganim = self.root:AddChild(UIAnim()) - self.bganim:SetScale(1, 1, 1) - self.bgimage = self.root:AddChild(Image()) - self.bganim:SetScale(1, 1, 1) - - -- Title - self.title = self.root:AddChild(Text(BUTTONFONT, 45, aipStr(" ", STRINGS.UI.HELP.CONFIGURE))) - self.title:SetPosition(10, 190) - self.title:SetColour(0, 0, 0, 1) -end) - -return ConfigWidget \ No newline at end of file diff --git a/scripts/widgets/aipConfigWidget.lua b/scripts/widgets/aipConfigWidget.lua deleted file mode 100755 index e687b2e8..00000000 --- a/scripts/widgets/aipConfigWidget.lua +++ /dev/null @@ -1,239 +0,0 @@ ---V2C: THIS IS A SCREEN NOT A WIDGET ---... ---... !!! - -local Screen = require "widgets/screen" -local Widget = require "widgets/widget" -local Text = require "widgets/text" -local TextEdit = require "widgets/textedit" -local Menu = require "widgets/menu" -local UIAnim = require "widgets/uianim" -local ImageButton = require "widgets/imagebutton" - -local TEMPLATES = require "widgets/templates" - -local function onaccept(inst, doer, widget) - if not widget.isopen then - return - end - - --strip leading/trailing whitespace - local msg = widget:GetText() - local processed_msg = msg:match("^%s*(.-%S)%s*$") or "" - if msg ~= processed_msg or #msg <= 0 then - widget.edit_text:SetString(processed_msg) - widget.edit_text:SetEditing(true) - return - end - - local writeable = inst.replica.writeable - if writeable ~= nil then - writeable:Write(doer, msg) - end - - if widget.config.acceptbtn.cb ~= nil then - widget.config.acceptbtn.cb(inst, doer, widget) - end - - doer.HUD:CloseAIPAutoConfigWidget() -end - -local function oncancel(inst, doer, widget) - if not widget.isopen then - return - end - - local writeable = inst.replica.writeable - if writeable ~= nil then - writeable:Write(doer, nil) - end - - if widget.config.cancelbtn.cb ~= nil then - widget.config.cancelbtn.cb(inst, doer, widget) - end - - doer.HUD:CloseAIPAutoConfigWidget() -end - -local AutoConfigWidget = Class(Screen, function(self, owner, writeable, config) - Screen._ctor(self, "AIP_AutoConfig") - - self.owner = owner - self.writeable = writeable - self.config = config - - self.isopen = false - - self._scrnw, self._scrnh = TheSim:GetScreenSize() - - self:SetScaleMode(SCALEMODE_PROPORTIONAL) - self:SetMaxPropUpscale(MAX_HUD_SCALE) - self:SetPosition(0, 0, 0) - self:SetVAnchor(ANCHOR_MIDDLE) - self:SetHAnchor(ANCHOR_MIDDLE) - - self.scalingroot = self:AddChild(Widget("aipConfigWidgetScalingRoot")) - self.scalingroot:SetScale(TheFrontEnd:GetHUDScale()) - self.inst:ListenForEvent("continuefrompause", function() - if self.isopen then - self.scalingroot:SetScale(TheFrontEnd:GetHUDScale()) - end - end, TheWorld) - self.inst:ListenForEvent("refreshhudsize", function(hud, scale) - if self.isopen then - self.scalingroot:SetScale(scale) - end - end, owner.HUD.inst) - - self.root = self.scalingroot:AddChild(Widget("aipConfigWidgetRoot")) - self.root:SetScale(.6, .6, .6) - - -- secretly this thing is a modal Screen, it just LOOKS like a widget - self.black = self.root:AddChild(Image("images/global.xml", "square.tex")) - self.black:SetVRegPoint(ANCHOR_MIDDLE) - self.black:SetHRegPoint(ANCHOR_MIDDLE) - self.black:SetVAnchor(ANCHOR_MIDDLE) - self.black:SetHAnchor(ANCHOR_MIDDLE) - self.black:SetScaleMode(SCALEMODE_FILLSCREEN) - self.black:SetTint(0, 0, 0, 0) - self.black.OnMouseButton = function() oncancel(self.writeable, self.owner, self) end - - self.bganim = self.root:AddChild(UIAnim()) - self.bganim:SetScale(1, 1, 1) - - -- 黑框 - self.shield = self.root:AddChild(TEMPLATES.CurlyWindow(40, 365, 1, 1, 67, -41)) - -- 白底 - self.shield.fill = self.root:AddChild(Image("images/fepanel_fills.xml", "panel_fill_tall.tex")) - self.shield.fill:SetScale(.64, -.57) - self.shield.fill:SetPosition(8, 12) - self.shield:SetPosition(0,0,0) - - --[[self.edit_text = self.root:AddChild(TextEdit(BUTTONFONT, 50, "")) - self.edit_text:SetColour(0, 0, 0, 1) - self.edit_text:SetForceEdit(true) - self.edit_text:SetPosition(0, 40, 0) - self.edit_text:SetRegionSize(430, 160) - self.edit_text:SetHAlign(ANCHOR_LEFT) - self.edit_text:SetVAlign(ANCHOR_TOP) - self.edit_text:SetTextLengthLimit(MAX_WRITEABLE_LENGTH) - self.edit_text:EnableWordWrap(true) - self.edit_text:EnableWhitespaceWrap(true) - self.edit_text:EnableRegionSizeLimit(true) - self.edit_text:EnableScrollEditWindow(false)]] - - self.buttons = {} - table.insert(self.buttons, { text = config.cancelbtn.text, cb = function() oncancel(self.writeable, self.owner, self) end, control = config.cancelbtn.control }) - table.insert(self.buttons, { text = config.acceptbtn.text, cb = function() onaccept(self.writeable, self.owner, self) end, control = config.acceptbtn.control }) - - --[[for i, v in ipairs(self.buttons) do - if v.control ~= nil then - self.edit_text:SetPassControlToScreen(v.control, true) - end - end]] - - local menuoffset = config.menuoffset or Vector3(0, 0, 0) - if TheInput:ControllerAttached() then - local spacing = 150 - self.menu = self.root:AddChild(Menu(self.buttons, spacing, true, "none")) - self.menu:SetTextSize(40) - local w = self.menu:AutoSpaceByText(15) - self.menu:SetPosition(menuoffset.x - .5 * w, menuoffset.y, menuoffset.z) - else - local spacing = 110 - self.menu = self.root:AddChild(Menu(self.buttons, spacing, true, "small")) - self.menu:SetTextSize(35) - self.menu:SetPosition(menuoffset.x - .5 * spacing * (#self.buttons - 1), menuoffset.y, menuoffset.z) - end - - local defaulttext = "" - if self.config.defaulttext ~= nil then - if type(self.config.defaulttext) == "string" then - defaulttext = self.config.defaulttext - elseif type(self.config.defaulttext) == "function" then - defaulttext = self.config.defaulttext(self.writeable, self.owner) - end - end - - self:OverrideText(defaulttext) - --[[self.edit_text:OnControl(CONTROL_ACCEPT, false) - self.edit_text.OnTextEntered = function() self:OnControl(CONTROL_ACCEPT, false) end - self.edit_text:SetHelpTextApply("") - self.edit_text:SetHelpTextCancel("") - self.edit_text:SetHelpTextEdit("") - self.default_focus = self.edit_text]] - - if config.animbank ~= nil then - self.bganim:GetAnimState():SetBank(config.animbank) - end - - if config.animbuild ~= nil then - self.bganim:GetAnimState():SetBuild(config.animbuild) - end - - if config.pos ~= nil then - self.root:SetPosition(config.pos) - else - self.root:SetPosition(0, 150, 0) - end - - self.isopen = true - self:Show() - - self.bganim:GetAnimState():PlayAnimation("open") -end) - -function AutoConfigWidget:OnBecomeActive() - self._base.OnBecomeActive(self) - --self.edit_text:SetFocus() - --self.edit_text:SetEditing(true) -end - -function AutoConfigWidget:Close() - if self.isopen then - self.writeable = nil - - self.bganim:GetAnimState():PlayAnimation("close") - - self.black:Kill() - --self.edit_text:SetEditing(false) - --self.edit_text:Kill() - self.menu:Kill() - - self.isopen = false - - self.inst:DoTaskInTime(.3, function() TheFrontEnd:PopScreen(self) end) - end -end - -function AutoConfigWidget:OverrideText(text) - --self.edit_text:SetString(text) - --self.edit_text:SetFocus() -end - -function AutoConfigWidget:GetText() - --return self.edit_text:GetString() - return "" -end - -function AutoConfigWidget:SetValidChars(chars) - --self.edit_text:SetCharacterFilter(chars) -end - -function AutoConfigWidget:OnControl(control, down) - if AutoConfigWidget._base.OnControl(self,control, down) then return true end - - if not down then - for i, v in ipairs(self.buttons) do - if control == v.control and v.cb ~= nil then - v.cb() - return true - end - end - if control == CONTROL_OPEN_DEBUG_CONSOLE then - return true - end - end -end - -return AutoConfigWidget