08b515afd9
EN: 2.0.0.143 CN: 2.0.0.142 JP: 2.0.0.145 KR: 2.0.0.150
83 lines
2.7 KiB
Lua
83 lines
2.7 KiB
Lua
local DormJoystickCtrl = class("DormJoystickCtrl", BaseCtrl)
|
|
DormJoystickCtrl._mapNodeConfig = {
|
|
placeRoot = {},
|
|
Slider = {
|
|
sComponentName = "Slider",
|
|
callback = "OnSliderValueChange"
|
|
},
|
|
btnSure = {sComponentName = "UIButton", callback = "OnBtn_Sure"},
|
|
btnCancel = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtn_Cancel"
|
|
},
|
|
btnBack = {sComponentName = "UIButton", callback = "OnBtn_Back"},
|
|
btnCancelRound = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtn_CancelRound"
|
|
}
|
|
}
|
|
DormJoystickCtrl._mapEventConfig = {
|
|
Dorm_Select_Obj = "OnEvent_DormSelectObj",
|
|
Dorm_Enter_Edit_Mode = "OnEvent_EnterEditMode"
|
|
}
|
|
function DormJoystickCtrl:Awake()
|
|
self.DormPlaceObjectCS = nil
|
|
if NovaAPI.GetCurrentModuleName() == "DormModuleScene" then
|
|
NovaAPI.DispatchEventWithData("DormJoystickPrefabLoadComplete")
|
|
end
|
|
end
|
|
function DormJoystickCtrl:OnSliderValueChange(_, value)
|
|
local nValue = value
|
|
if nValue == 0.5 then
|
|
self.DormPlaceObjectCS.gameObject.transform.eulerAngles = Vector3.zero
|
|
elseif nValue < 0.5 then
|
|
local tmxY = 360 - (0.5 - nValue) * 360
|
|
self.DormPlaceObjectCS.gameObject.transform.eulerAngles = Vector3(0, tmxY, 0)
|
|
else
|
|
local tmxY = (nValue - 0.5) * 360
|
|
self.DormPlaceObjectCS.gameObject.transform.eulerAngles = Vector3(0, tmxY, 0)
|
|
end
|
|
end
|
|
function DormJoystickCtrl:OnBtn_Sure()
|
|
if self.DormPlaceObjectCS.isCollision then
|
|
EventManager.Hit(EventId.OpenMessageBox, "摆放位置有误")
|
|
return
|
|
end
|
|
self._mapNode.placeRoot:SetActive(false)
|
|
self.DormPlaceObjectCS:SavePlaneMsg()
|
|
self.DormPlaceObjectCS = nil
|
|
end
|
|
function DormJoystickCtrl:OnBtn_Cancel()
|
|
self._mapNode.placeRoot:SetActive(false)
|
|
self.DormPlaceObjectCS:QuitEditMode()
|
|
self.DormPlaceObjectCS = nil
|
|
end
|
|
function DormJoystickCtrl:OnBtn_Back()
|
|
NovaAPI.EnterModule("MainMenuModuleScene", true)
|
|
end
|
|
function DormJoystickCtrl:OnEvent_EnterEditMode()
|
|
self._mapNode.placeRoot:SetActive(true)
|
|
end
|
|
function DormJoystickCtrl:OnEvent_CampingSelectObj(obj)
|
|
self.DormPlaceObjectCS = nil
|
|
self.DormPlaceObjectCS = obj:GetComponent("DormPlaceObject")
|
|
self.tmxY = math.fmod(obj.transform.eulerAngles.y, 360)
|
|
if self.tmxY == 0 then
|
|
NovaAPI.SetSliderValue(self._mapNode.Slider, 0.5)
|
|
elseif self.tmxY > 0 and self.tmxY <= 180 then
|
|
NovaAPI.SetSliderValue(self._mapNode.Slider, 0.5 + self.tmxY / 180 * 0.5)
|
|
else
|
|
NovaAPI.SetSliderValue(self._mapNode.Slider, 0.5 - (360 - self.tmxY) / 180 * 0.5)
|
|
end
|
|
end
|
|
function DormJoystickCtrl:OnBtn_CancelRound()
|
|
if self.tmxY == 0 then
|
|
NovaAPI.SetSliderValue(self._mapNode.Slider, 0.5)
|
|
elseif self.tmxY > 0 and self.tmxY <= 180 then
|
|
NovaAPI.SetSliderValue(self._mapNode.Slider, 0.5 + self.tmxY / 180 * 0.5)
|
|
else
|
|
NovaAPI.SetSliderValue(self._mapNode.Slider, 0.5 - (360 - self.tmxY) / 180 * 0.5)
|
|
end
|
|
end
|
|
return DormJoystickCtrl
|