local XUiPanelTouch = XClass(nil, "XUiPanelTouch") function XUiPanelTouch:Ctor(rootUi, ui) self.GameObject = ui.gameObject self.Transform = ui.transform self.RootUi = rootUi self.Camera = rootUi.Transform:GetComponent("Canvas").worldCamera XTool.InitUiObject(self) end function XUiPanelTouch:InitRoomId(curRoomId) self.CurRoomId = curRoomId self:Hide() end function XUiPanelTouch:RefreshTouchState(touchState) if touchState == XDormConfig.TouchState.Touch or touchState == XDormConfig.TouchState.TouchHate then self.ImgTouch.gameObject:SetActive(true) self.ImgWaterGun.gameObject:SetActive(false) self.ImgPlay.gameObject:SetActive(false) elseif touchState == XDormConfig.TouchState.WaterGun then self.ImgTouch.gameObject:SetActive(false) self.ImgWaterGun.gameObject:SetActive(true) self.ImgPlay.gameObject:SetActive(false) elseif touchState == XDormConfig.TouchState.Play then self.ImgTouch.gameObject:SetActive(false) self.ImgWaterGun.gameObject:SetActive(false) self.ImgPlay.gameObject:SetActive(true) else if self.LastState ~= XDormConfig.TouchState.WaterGun then self.ImgTouch.gameObject:SetActive(false) self.ImgWaterGun.gameObject:SetActive(false) self.ImgPlay.gameObject:SetActive(false) end end self.LastState = touchState end function XUiPanelTouch:UpdateTransform(screenPoint) if not screenPoint then return end local screenPointV2 = CS.UnityEngine.Vector2(screenPoint.x, screenPoint.y) local hasValue, v2 = CS.UnityEngine.RectTransformUtility.ScreenPointToLocalPointInRectangle(self.PanelTouchContainer, screenPointV2, self.Camera) if hasValue then self.Transform.localPosition = CS.UnityEngine.Vector3(v2.x, v2.y, 0) end end function XUiPanelTouch:Show(characterId, touchState, screenPoint, propNum) if touchState == XDormConfig.TouchState.Hate then return end if propNum and propNum > 0 and touchState == XDormConfig.TouchState.Touch then self.PanelFilled.gameObject:SetActive(true) self.ImgFilled.fillAmount = propNum else self.PanelFilled.gameObject:SetActive(false) end self.CharacterId = characterId self:UpdateTransform(screenPoint) self:RefreshTouchState(touchState) self.GameObject:SetActive(true) end function XUiPanelTouch:Hide() self.GameObject:SetActive(false) end return XUiPanelTouch