From 53a814463adb50bb60ac896524ad7d46fef6c77a Mon Sep 17 00:00:00 2001 From: Pao Date: Thu, 12 Jan 2023 12:12:44 +0100 Subject: [PATCH] trying to fix menu for MP --- media/lua/client/TOC_ContextMenus.lua | 62 +-------------------- media/lua/client/TOC_UI.lua | 76 +++++++++++++++++++++----- mod.info | 4 +- preview.png | Bin 0 -> 6546 bytes workshop.txt | 6 ++ 5 files changed, 70 insertions(+), 78 deletions(-) create mode 100644 preview.png create mode 100644 workshop.txt diff --git a/media/lua/client/TOC_ContextMenus.lua b/media/lua/client/TOC_ContextMenus.lua index 3088b27..03bd695 100644 --- a/media/lua/client/TOC_ContextMenus.lua +++ b/media/lua/client/TOC_ContextMenus.lua @@ -49,7 +49,7 @@ local function otherPlayerLocal(_, partName, action, surgeon, patient) ui.actionAct = action; ui.partNameAct = partName; ui.patient = patient; - --SetConfirmUIMP("Wait server") + SetConfirmUIMP("Wait server") @@ -139,8 +139,6 @@ function ISWorldObjectContextMenu.OnFillTOCMenu(player, context, worldObjects, t end - --- why local? function ISWorldObjectContextMenu.OnFillOperateWithOven(player, context, worldObjects, test) local player_obj = getSpecificPlayer(player) --local clickedPlayer @@ -181,23 +179,6 @@ end - -- if instanceof(vtest, "IsoStove") and (player_obj:HasTrait("Brave") or player_obj:getPerkLevel(Perks.Strength) >= 6) then - -- --if v:getCurrentTemperature() > 250 then - -- local rootMenu = context:addOption(getText('UI_ContextMenu_OperateOven'), worldObjects, nil); - -- local subMenu = context:getNew(context); - -- context:addSubMenu(rootMenu, subMenu) - - -- for k_bodypart, v_bodypart in pairs(GetBodyParts()) do - -- -- todo this is awful but it should work - -- if modData.TOC[v_bodypart].is_cut and not modData.TOC[v_bodypart].is_operated then - -- subMenu:addOption(getText('UI_ContextMenu_' .. v_bodypart), worldObjects, operateLocal, v_bodypart); - - -- end - - - -- end - -- --end - -- end @@ -205,46 +186,5 @@ end - -- for _,object in ipairs(worldobjects) do - -- local square = object:getSquare() - -- if square then - -- local movingObjects = square:getMovingObjects() - -- for i = 0, movingObjects:size() - 1 do - -- local o = movingObjects:get(i) - -- if instanceof(o, "IsoPlayer") then - -- clickedPlayer = o; - -- print("Found player") - - -- end - -- end - -- if clickedPlayer then - -- -- Pretty sure this check is kinda broken - -- if not ((-1 < clickedPlayer:getX() - player:getX() and clickedPlayer:getX() - player:getX() < 1) and (-1 < clickedPlayer:getY() - player:getY() and clickedPlayer:getY() - player:getY() < 1)) then - -- return false; - -- end - -- local rootOption = context:addOption("The Only Cure on " .. clickedPlayer:getUsername()); - -- local rootMenu = context:getNew(context); - -- local cutOption = rootMenu:addOption("Cut"); - -- local operateOption = rootMenu:addOption("Operate"); - -- local cutMenu = context:getNew(context); - -- local operateMenu = context:getNew(context); - - -- context:addSubMenu(rootOption, rootMenu); - -- context:addSubMenu(cutOption, cutMenu); - -- context:addSubMenu(operateOption, operateMenu); - -- -- todo add checks so that we don't show these menus if a player has already beeen operated or amputated - -- for k, v in ipairs(GetBodyParts()) do - -- cutMenu:addOption(getText('UI_ContextMenu_' .. v), worldobjects, otherPlayerLocal, v, "Cut", clickedPlayer) - -- operateMenu:addOption(getText('UI_ContextMenu_' .. v), worldobjects, otherPlayerLocal, v, "Operate", clickedPlayer); - - -- end - - - -- end - -- end - -- end - - ---Events.OnTick.Add(TheOnlyCure.CheckState); Events.OnFillWorldObjectContextMenu.Add(ISWorldObjectContextMenu.OnFillOperateWithOven) -- this is probably too much Events.OnFillWorldObjectContextMenu.Add(ISWorldObjectContextMenu.OnFillTOCMenu) \ No newline at end of file diff --git a/media/lua/client/TOC_UI.lua b/media/lua/client/TOC_UI.lua index f819c2b..b40e66d 100644 --- a/media/lua/client/TOC_UI.lua +++ b/media/lua/client/TOC_UI.lua @@ -130,8 +130,12 @@ end -- end Usefull -- Function to update text/button of UIs -local function setDescUI(partName) - local modData = getPlayer():getModData().TOC; +local function setDescUI(player, partName) + + --we can easily fix this crap from here for MP compat + + -- TODO set correct player + local modData = player:getModData().TOC; local partData = modData[partName]; descUI["textTitle"]:setText(getDisplayText_TOC(partName)); descUI.partNameAct = partName; @@ -384,13 +388,16 @@ end local function mainPress(button, args) descUI:open(); descUI:setPositionPixel(mainUI:getRight(), mainUI:getY()); - setDescUI(args.part); + setDescUI(args.player, args.part) end local function descPress(button, args) local player = getPlayer(); local playerInv = player:getInventory(); if args.option == "Cut" then + + + -- TODO Change to correct player local modData = player:getModData().TOC; -- Do not cut if prothesis equip if (string.find(descUI.partNameAct, "Right") and (modData["RightHand"].has_prothesis_equipped or modData["RightForearm"].has_prothesis_equipped)) @@ -418,27 +425,42 @@ end -- Make the UIS -local function makeMainUI() +local function makeMainUI(character) + + mainUI = NewUI(); - mainUI:setTitle("The only cure main menu"); + mainUI:setTitle("The Only Cure Menu"); mainUI:setWidthPercent(0.1); - mainUI:addImageButton("b11", "", mainPress); - mainUI["b11"]:addArg("part", "RightArm"); + mainUI:addImageButton("b11", "", mainPress) + mainUI["b11"]:addArg("part", "RightArm") + mainUI["b11"]:addArg("player", character) + + mainUI:addImageButton("b12", "", mainPress); mainUI["b12"]:addArg("part", "LeftArm"); + mainUI["b12"]:addArg("player", character) + mainUI:nextLine(); mainUI:addImageButton("b21", "", mainPress); mainUI["b21"]:addArg("part", "RightForearm"); + mainUI["b21"]:addArg("player", character) + + mainUI:addImageButton("b22", "", mainPress); mainUI["b22"]:addArg("part", "LeftForearm"); + mainUI["b22"]:addArg("player", character) + mainUI:nextLine(); mainUI:addImageButton("b31", "", mainPress); mainUI["b31"]:addArg("part", "RightHand"); + mainUI["b31"]:addArg("player", character) + mainUI:addImageButton("b32", "", mainPress); mainUI["b32"]:addArg("part", "LeftHand"); + mainUI["b32"]:addArg("player", character) mainUI:saveLayout(); end @@ -469,7 +491,7 @@ local function makeDescUI() descUI:addEmpty(); descUI:nextLine(); - descUI:addText("textEtat", "Is Cut !", "Medium", "Center"); + descUI:addText("textEtat", "Is Cut!", "Medium", "Center"); descUI["textEtat"]:setColor(1, 1, 0, 0); descUI:nextLine(); @@ -547,6 +569,24 @@ function MakeConfirmUIMP() confirmUIMP:close(); end + +function ISHealthPanel:OnCreateTheOnlyCureUI() + + -- how do we pass the correct player here? + --print(self.character) + if ISHealthPanel.otherPlayer then + makeMainUI(ISHealthPanel.otherPlayer) + else + makeMainUI(getPlayer()) + end + makeDescUI() + makeConfirmUI() + + if isClient() then MakeConfirmUIMP() end + mainUI:close() +end + + local function onCreateUI() makeMainUI(); makeDescUI(); @@ -555,14 +595,15 @@ local function onCreateUI() mainUI:close(); end -Events.OnCreateUI.Add(onCreateUI) +Events.OnCreateUI.Add(ISHealthPanel.OnCreateTheOnlyCureUI) -- Add button to health panel function ISNewHealthPanel.onClick_TOC(button) - mainUI:toggle(); - mainUI:setInCenterOfScreen(); - setImageMainUI(); + + mainUI:toggle() + mainUI:setInCenterOfScreen() + setImageMainUI() end local ISHealthPanel_createChildren = ISHealthPanel.createChildren @@ -572,8 +613,9 @@ function ISHealthPanel:createChildren() self.fitness:setWidth(self.fitness:getWidth()/1.5); - self.TOCButton = ISButton:new(self.fitness:getRight(), self.healthPanel.y, 20, 20, "", self, ISNewHealthPanel.onClick_TOC); - self.TOCButton:setImage(getTexture("media/ui/TOC/iconForMenu.png")); + --TODO make it bigger + self.TOCButton = ISButton:new(self.fitness:getRight(), self.healthPanel.y, 20, 20, "", self, ISNewHealthPanel.onClick_TOC) + self.TOCButton:setImage(getTexture("media/ui/TOC/iconForMenu.png")) self.TOCButton.anchorTop = false self.TOCButton.anchorBottom = true self.TOCButton:initialise(); @@ -589,4 +631,8 @@ local ISHealthPanel_render = ISHealthPanel.render function ISHealthPanel:render() ISHealthPanel_render(self); self.TOCButton:setY(self.fitness:getY()); -end \ No newline at end of file +end + + + + diff --git a/mod.info b/mod.info index 9885f1d..948e140 100644 --- a/mod.info +++ b/mod.info @@ -1,8 +1,8 @@ -name=The only cure second test +name=The only cure but better poster=generic.png require=UIAPI description=Cut your arm and survive. TEST PAO -id=Amputation2 +id=Amputation3 icon=icon.png url=xx modversion=0.4.1 diff --git a/preview.png b/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd6dfd1efdb901b893135cc9586c084fd449d6b GIT binary patch literal 6546 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 N+*8+8D^;-y{~u>+E13WQ literal 0 HcmV?d00001 diff --git a/workshop.txt b/workshop.txt new file mode 100644 index 0000000..2ab7589 --- /dev/null +++ b/workshop.txt @@ -0,0 +1,6 @@ +version=1 +id=2916771109 +title=The Only Cure but better DEV +description=Just for testing and shit +tags= +visibility=public