--*********************************************************** --** THE INDIE STONE ** --*********************************************************** require "ISUI/ISPanelJoypad" CoopUserName = ISPanelJoypad:derive("CoopUserName") function CoopUserName:createChildren() local padX = 16 local btnWid = 100 local btnHgt = 25 local btnPadY = 5 local titleHgt = 80 self.fontHgt = getTextManager():getFontFromEnum(UIFont.Medium):getLineHeight() local inset = 2 local width = 300 local height = inset + self.fontHgt + inset self.entry = ISTextEntryBox:new("", (self:getWidth() - width) / 2, (self:getHeight() - height) / 2, width, height) self.entry.font = UIFont.Medium self.entry:initialise() self.entry:instantiate() self:addChild(self.entry) self.backButton = ISButton:new(padX, self.height - btnPadY - btnHgt, 100, 25, getText("UI_btn_back"), self, self.clickBack) self.backButton.internal = "BACK" self.backButton:initialise() self.backButton:instantiate() self.backButton:setAnchorLeft(true) self.backButton:setAnchorTop(false) self.backButton:setAnchorBottom(true) self.backButton.borderColor = {r=1, g=1, b=1, a=0.1} self:addChild(self.backButton) self.nextButton = ISButton:new(self.width - 116, self.height - btnPadY - btnHgt, 100, 25, getText("UI_btn_next"), self, self.clickNext) self.nextButton.internal = "NEXT" self.nextButton:initialise() self.nextButton:instantiate() self.nextButton:setAnchorLeft(false) self.nextButton:setAnchorRight(true) self.nextButton:setAnchorTop(false) self.nextButton:setAnchorBottom(true) self.nextButton:setEnable(true) -- sets the hard-coded border color self:addChild(self.nextButton) end function CoopUserName:shouldShow() return isClient() and CoopCharacterCreation.instance.playerIndex > 0 end function CoopUserName:getUserName() return self.entry:getText() end function CoopUserName:beforeShow() local playerIndex = CoopCharacterCreation.instance.playerIndex local player = getSpecificPlayer(playerIndex) self.entry:setText(player and player:getUsername() or ("Player"..(playerIndex + 1))) end function CoopUserName:clickBack() self:setVisible(false) CoopCharacterCreation.instance:cancel() end function CoopUserName:clickNext() self:setVisible(false) if CoopMapSpawnSelect.instance:hasChoices() then CoopMapSpawnSelect.instance:fillList() CoopMapSpawnSelect.instance:setVisible(true, self.joyfocus) else CoopMapSpawnSelect.instance:useDefaultSpawnRegion() CoopCharacterCreationMain.instance:setVisible(true, self.joyfocus) end end function CoopUserName:prerender() ISPanelJoypad.prerender(self) if self.joyfocus and self.entry.joypadFocused then self.ISButtonA = nil self.ISButtonB = nil self.nextButton:clearJoypadButton() self.backButton:clearJoypadButton() elseif self.joyfocus and not self.entry.joypadFocused then self:setISButtonForA(self.nextButton) self:setISButtonForB(self.backButton) end end function CoopUserName:render() CoopUserName.instance = self ISPanelJoypad.render(self) self:drawTextCentre(getText("UI_servers_username"), self.width / 2, 10, 1, 1, 1, 1, UIFont.Large) if isValidUserName(self:getUserName()) then self.nextButton:setEnable(true) self.nextButton:setTooltip(nil) else self.nextButton:setEnable(false) self.nextButton:setTooltip(getText("UI_servers_err_username")) end end function CoopUserName:onGainJoypadFocus(joypadData) ISPanelJoypad.onGainJoypadFocus(self, joypadData) self:setISButtonForA(self.nextButton) self:setISButtonForB(self.backButton) self.joypadButtonsY = {} self.joypadButtons = {} self.joypadIndexY = 1 self.joypadIndex = 1 self:insertNewLineOfButtons(self.entry) self.entry:setJoypadFocused(true, joypadData) end function CoopUserName:onJoypadDown(button, joypadData) if button == Joypad.BButton then if self.joypadIndexY == 1 then self.joypadIndexY = 0 self.entry:setJoypadFocused(false, joypadData) return end end ISPanelJoypad.onJoypadDown(self, button, joypadData) end function CoopUserName:onJoypadDirDown(joypadData) self.joypadIndexY = 0 self.entry:setJoypadFocused(false, joypadData) end function CoopUserName:onJoypadDirUp(joypadData) self.joypadIndexY = 1 self.entry:setJoypadFocused(true, joypadData) end function CoopUserName:new(x, y, width, height) local o = ISPanelJoypad:new(x, y, width, height) setmetatable(o, self) self.__index = self o:setUIName("CoopUserName") CoopUserName.instance = o return o end