PGRData/Script/matrix/xui/xuichesspursuit/XChessPursuitCtrl.lua

126 lines
3.7 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

XChessPursuitCtrl = XChessPursuitCtrl or {}
local XChessPursuitSceneManager = require("XUi/XUiChessPursuit/XScene/XChessPursuitSceneManager")
local XChessPursuitCube = require("XUi/XUiChessPursuit/XScene/XChessPursuitCube")
local CSXChessPursuitDirection = CS.XChessPursuitDirection
local CSXChessPursuitCtrlCom = nil
local ChessPursuitCubes = {}
XChessPursuitCtrl.MAIN_UI_TYPE = {
STABLE = 1, --安稳期
FIGHT_DEFAULT = 2, --斗争期-普通模式
FIGHT_HARD = 3, --斗争期-炼狱模式
SCENE = 4, --玩法场景
}
--场景UI的玩法阶段
XChessPursuitCtrl.SCENE_UI_TYPE = {
BUZHEN = 1, --布阵阶段
MY_ROUND = 2, --我的回合
BOSS_ROUND = 3, --BOSS回合
}
--场景UI可选择的目标
XChessPursuitCtrl.SCENE_SELECT_TARGET = {
NONE = 1, --什么都不可选
TEAM = 2, --角色
BOSS = 3, --怪物
CUBE = 4, --方块
DEFAULT = 5, --可任意选
}
--一场最多有几张卡
XChessPursuitCtrl.CARD_MAX_COUNT = 3
--@region 场景相关
local function OnLoadCompleteCb(gameObject)
CSXChessPursuitCtrlCom = gameObject.transform:Find("Playmaker"):GetComponent("XChessPursuitCtrl")
assert(CSXChessPursuitCtrlCom, "节点Playmaker没有找到XChessPursuitCtrl组件")
XChessPursuitCtrl.Init()
end
local function OnLeaveCb()
CSXChessPursuitCtrlCom = nil
for i,v in ipairs(ChessPursuitCubes) do
v:Dispose()
end
ChessPursuitCubes = {}
XDataCenter.ChessPursuitManager.Clear()
end
function XChessPursuitCtrl.Enter(mapId)
return XChessPursuitSceneManager.EnterScene(mapId, function(gameObject)
OnLoadCompleteCb(gameObject)
end, OnLeaveCb)
end
function XChessPursuitCtrl.LeaveScene()
XChessPursuitSceneManager.LeaveScene()
end
function XChessPursuitCtrl.PlayAnimationForScene(animName, cbFunc)
if CSXChessPursuitCtrlCom then
CSXChessPursuitCtrlCom:PlayAnimationForScene(animName, cbFunc)
end
end
--@endregion
function XChessPursuitCtrl.Init()
for i=0,CSXChessPursuitCtrlCom.Cubes.Count-1 do
local cube = CSXChessPursuitCtrlCom.Cubes[i]
table.insert(ChessPursuitCubes, XChessPursuitCube.New(cube))
end
end
function XChessPursuitCtrl.GetCSXChessPursuitCtrlCom()
return CSXChessPursuitCtrlCom
end
function XChessPursuitCtrl.GetChessPursuitCubes()
return ChessPursuitCubes
end
function XChessPursuitCtrl.SetSceneActive(isShow)
return XChessPursuitSceneManager.SetActive(isShow)
end
--视点坐标-> UGUI坐标 (更准确但需要另外进行缩放)
function XChessPursuitCtrl.WorldToUIPosition(modelPosotion)
local sceneCamera = CSXChessPursuitCtrlCom.SceneCamera
local viewportPos = sceneCamera:WorldToViewportPoint(modelPosotion)
local position = CS.XUiManager.Instance.UiCamera:ViewportToWorldPoint(viewportPos)
return position
end
--视点坐标-> UGUI坐标
function XChessPursuitCtrl.WorldToUILocaPosition(modelPosotion)
local sceneCamera = CSXChessPursuitCtrlCom.SceneCamera
local viewportPos = sceneCamera:WorldToViewportPoint(modelPosotion)
local uiDesignSize = XGlobalVar.UiDesignSize
return CS.UnityEngine.Vector2((viewportPos.x - 0.5) * uiDesignSize.Width, (viewportPos.y - 0.5) * uiDesignSize.Height)
end
--获取移动方向
function XChessPursuitCtrl.GetMoveDirection(currentPos, nextPos)
local step = nextPos - currentPos
-- STEP绝对值 > 1说明是从首走到尾或从尾走到首前提是每次只走一步
if step > 0 then
if math.abs(step) > 1 then
return CSXChessPursuitDirection.Back
else
return CSXChessPursuitDirection.Forward
end
elseif step < 0 then
if math.abs(step) > 1 then
return CSXChessPursuitDirection.Forward
else
return CSXChessPursuitDirection.Back
end
end
end