【战斗】添加战斗拖动上阵功能
parent
86acaea5fc
commit
f56e991b3d
|
|
@ -100,6 +100,8 @@
|
|||
INFIGHT_PLAYER_SKILL_RELEASE, // 释放指挥官技能摊手 使用 EDReleasePlayerSkill
|
||||
|
||||
INFIGHT_PLAYER_SKILL_VIEW_TRIGGER, // 指挥官技能view触发事件
|
||||
|
||||
PrepareModelDragEnd,
|
||||
|
||||
//Level Client Server Interaction
|
||||
ServerResponseEnterLevel,
|
||||
|
|
|
|||
|
|
@ -184,6 +184,21 @@ public class UIButtonEx: Button
|
|||
{
|
||||
_OnDragOut += func;
|
||||
}
|
||||
|
||||
public void AddStartDragListener(OnStartDrag func)
|
||||
{
|
||||
_OnStartDrag += func;
|
||||
}
|
||||
|
||||
public void AddOnDragListener(OnDrag func)
|
||||
{
|
||||
_OnDrag += func;
|
||||
}
|
||||
|
||||
public void AddEndDragListener(OnEndDrag func)
|
||||
{
|
||||
_OnEndDrag += func;
|
||||
}
|
||||
|
||||
public void AddClickListener(OnClick func)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
using System;
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.Area;
|
||||
|
|
@ -21,7 +23,7 @@ namespace Gameplay.Level
|
|||
|
||||
// 更新地面
|
||||
Physics.SyncTransforms();
|
||||
|
||||
EventManager.Instance.Register(EventManager.EventName.PrepareModelDragEnd, (Action<Vector2>)_OnModelDragEnd);
|
||||
}
|
||||
|
||||
protected override void _OnUpdate(float deltaTime)
|
||||
|
|
@ -30,6 +32,7 @@ namespace Gameplay.Level
|
|||
|
||||
protected override void _OnExit()
|
||||
{
|
||||
EventManager.Instance.Unregister(EventManager.EventName.PrepareModelDragEnd, (Action<Vector2>)_OnModelDragEnd);
|
||||
}
|
||||
|
||||
protected override void _OnClick(Vector2 screenPosition)
|
||||
|
|
@ -350,6 +353,11 @@ namespace Gameplay.Level
|
|||
GameUnitManager.instance.MoveUnitToFight(character.GetID(), cellIndex, yaw);
|
||||
}
|
||||
|
||||
private void _OnModelDragEnd(Vector2 screenPos)
|
||||
{
|
||||
_OnClick(screenPos);
|
||||
}
|
||||
|
||||
public PrepareState(Level level) : base(level)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -166,10 +166,8 @@ public class TeamManager
|
|||
if (i < vInfos.Count)
|
||||
{
|
||||
SingleTeamCharacterInfo singleInfo;
|
||||
VehicleInfo v = new VehicleInfo(vInfos[i].nID,
|
||||
TableManager.Instance.Tables.VehicleConfig.Get((int)vInfos[i].nID), vInfos[i]);
|
||||
var unit = await GameUnitManager.instance.PrepareVehicle(vInfos[i], ETroopsId.Self);
|
||||
singleInfo = new SingleTeamCharacterInfo(unit.GetID(), v);
|
||||
singleInfo = new SingleTeamCharacterInfo(unit.GetID(), vInfos[i]);
|
||||
|
||||
selectList.Add(singleInfo);
|
||||
}
|
||||
|
|
@ -398,17 +396,22 @@ public class TeamManager
|
|||
|
||||
var teamCharacterIDs = GetCharacterIDs();
|
||||
var vehicleIDs = GetVehicleIDs();
|
||||
var posterL = LevelUIManager.PaintingList;
|
||||
for (int i = 0; i < teamCharacterIDs.Count; i++)
|
||||
{
|
||||
var str = CommonUtils.GetDefaultHeadPathByUid(teamCharacterIDs[i]);
|
||||
var uid = teamCharacterIDs[i];
|
||||
var singleData = m_allCharactersMap[uid];
|
||||
var cfg = singleData.GetConfigInfo();
|
||||
var str = CommonUtils.GetDefaultHeadPathByUid((uint)cfg.Cfg.RoleID);
|
||||
var posterStr = CommonUtils.GetCharacterPicPath(cfg.Cfg.RoleID,CommonUtils.ECharacterPicPathType.Poster);
|
||||
AssetManager.Instance.PostPreload<Sprite>(str);
|
||||
AssetManager.Instance.PostPreload<Sprite>(posterStr);
|
||||
}
|
||||
|
||||
if (vehicleIDs.Count > 0)
|
||||
{
|
||||
var vehicleSpriteStr = CommonUtils.GetDefaultVehicleHeadPath(vehicleIDs[0]);
|
||||
AssetManager.Instance.PostPreload<Sprite>(vehicleSpriteStr);
|
||||
var uid = vehicleIDs[0];
|
||||
var singleData = m_allCharactersMap[uid];
|
||||
AssetManager.Instance.PostPreload<Sprite>(singleData.GetVehicleInfo().Cfg.UIHeadPath);
|
||||
}
|
||||
|
||||
//预加载状态图片
|
||||
|
|
@ -809,7 +812,7 @@ public class VehicleInfo
|
|||
public class SingleTeamCharacterInfo
|
||||
{
|
||||
private CharacterDataInfo _characterData;
|
||||
private VehicleInfo _vConfigData;
|
||||
private VehicleCultivateData _vConfigData;
|
||||
|
||||
private float m_leftBlood;
|
||||
private bool m_isDead;
|
||||
|
|
@ -844,7 +847,7 @@ public class SingleTeamCharacterInfo
|
|||
}
|
||||
|
||||
public SingleTeamCharacterInfo(uint uid,
|
||||
VehicleInfo configData,
|
||||
VehicleCultivateData configData,
|
||||
CharacType type = CharacType.Vehicle)
|
||||
{
|
||||
_vConfigData = configData;
|
||||
|
|
@ -856,7 +859,7 @@ public class SingleTeamCharacterInfo
|
|||
|
||||
public uint Uid
|
||||
{
|
||||
get { return m_uid; } //return m_configData.mID; }
|
||||
get { return m_uid; }
|
||||
}
|
||||
|
||||
public CharacType Type
|
||||
|
|
@ -879,7 +882,7 @@ public class SingleTeamCharacterInfo
|
|||
return _characterData;
|
||||
}
|
||||
|
||||
public VehicleInfo GetVehicleInfo()
|
||||
public VehicleCultivateData GetVehicleInfo()
|
||||
{
|
||||
return _vConfigData;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -428,11 +428,17 @@ public class UIHeadItemNode : UINode
|
|||
|
||||
}
|
||||
|
||||
public virtual void BindItemDrag()
|
||||
public virtual void BindItemStartDrag<T>(Action<T> action, T param)
|
||||
{
|
||||
|
||||
}
|
||||
public virtual void BindItemOnDrag()
|
||||
|
||||
public virtual void BindItemEndDrag<T>(Action<T> action, T param)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual void BindItemOnDrag<T>(Action<T> action, T param)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -167,6 +167,29 @@ public class UIHerosHeadItemNode : UIHeadItemNodeBase
|
|||
});
|
||||
}
|
||||
|
||||
public override void BindItemStartDrag<T>(Action<T> action, T param)
|
||||
{
|
||||
ButtonEx_CharacterPicRect.AddStartDragListener(() =>
|
||||
{
|
||||
action?.Invoke(param);
|
||||
});
|
||||
}
|
||||
public override void BindItemOnDrag<T>(Action<T> action, T param)
|
||||
{
|
||||
ButtonEx_CharacterPicRect.AddOnDragListener(() =>
|
||||
{
|
||||
action?.Invoke(param);
|
||||
});
|
||||
}
|
||||
|
||||
public override void BindItemEndDrag<T>(Action<T> action, T param)
|
||||
{
|
||||
ButtonEx_CharacterPicRect.AddEndDragListener(() =>
|
||||
{
|
||||
action?.Invoke(param);
|
||||
});
|
||||
}
|
||||
|
||||
public override void RemoveClickListener()
|
||||
{
|
||||
RemoveAllClickListener(ButtonEx_CharacterPicRect);
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ using DG.Tweening;
|
|||
using Framework.Wrapper;
|
||||
using Gameplay;
|
||||
using Gameplay.Area;
|
||||
using Gameplay.Area.Ready;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Common;
|
||||
using Gameplay.Level;
|
||||
|
|
@ -57,6 +58,10 @@ public class UITeamFightController : UIWindow
|
|||
private uint _changeId = 0;
|
||||
private float _originalSpeed = -1f;
|
||||
|
||||
private uint _dragingUid = 0;
|
||||
|
||||
|
||||
|
||||
private enum SkillPutState
|
||||
{
|
||||
None,
|
||||
|
|
@ -109,6 +114,10 @@ public class UITeamFightController : UIWindow
|
|||
EventManager.Instance.Register(EventManager.EventName.LevelUnitUnSelect, (Action<GameUnit>) OnUnSelectUnit);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_REBORN_UNIT, (Action<GameUnit>)OnUnitReborn);
|
||||
|
||||
InputManager.Instance.OnFingerMove += OnItemDrag;
|
||||
InputManager.Instance.OnFingerMoveUI += OnItemDrag;
|
||||
InputManager.Instance.OnFingerUp += OnItemEndDrag;
|
||||
|
||||
Refresh();
|
||||
// #if UNITY_EDITOR
|
||||
// //打印选择信息
|
||||
|
|
@ -137,6 +146,10 @@ public class UITeamFightController : UIWindow
|
|||
m_fightItemList.Clear();
|
||||
m_waitItemList.Clear();
|
||||
|
||||
InputManager.Instance.OnFingerMove -= OnItemDrag;
|
||||
InputManager.Instance.OnFingerUp -= OnItemEndDrag;
|
||||
InputManager.Instance.OnFingerMoveUI -= OnItemDrag;
|
||||
|
||||
EventManager.Instance.Unregister(EventManager.EventName.LevelUnitBorn, (Action<GameUnit>)OnListenToFight);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.LevelBattleBegin, OnListenToFightStateChange);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.LevelUnitSelect, (Action<GameUnit>)OnLevelCharacterSelect);
|
||||
|
|
@ -212,6 +225,10 @@ public class UITeamFightController : UIWindow
|
|||
nodeComp.RefreshHeadItem(waitIDList[i]);
|
||||
nodeComp.BindItemClick(OnClickSelectWaitItem, waitIDList[i]);
|
||||
|
||||
nodeComp.BindItemStartDrag(OnItemStartDrag, waitIDList[i]);
|
||||
//nodeComp.BindItemOnDrag(OnItemDrag, waitIDList[i]);
|
||||
//nodeComp.BindItemEndDrag(OnItemEndDrag, waitIDList[i]);
|
||||
|
||||
var rectTransform = go.GetComponent<RectTransform>();
|
||||
rectTransform.SetParent(content);
|
||||
rectTransform.localPosition = new UnityEngine.Vector3(rectTransform.localPosition.x, rectTransform.localPosition.y, 0);
|
||||
|
|
@ -1261,6 +1278,78 @@ public class UITeamFightController : UIWindow
|
|||
|
||||
}
|
||||
|
||||
private void OnItemStartDrag(uint uid)
|
||||
{
|
||||
_dragingUid = uid;
|
||||
|
||||
_LoadSelectModel(_dragingUid);
|
||||
if (LevelManager.Instance.CurrentLevel.IsPreparing())
|
||||
{
|
||||
LevelManager.Instance.CurrentLevel.Map.ShowInfo(Map.InfoMask.ShowCells, true);
|
||||
AreaManager.instance.readyAreaManager.ShowReadyArea();
|
||||
}
|
||||
|
||||
// if (LevelManager.Instance.CurrentLevel.IsPreparing())
|
||||
// {
|
||||
// if (GameUnitManager.instance.infightUnits.Contains(uid))
|
||||
// {
|
||||
// // 在战斗中
|
||||
// AreaManager.instance.readyAreaManager.ShowReadyArea(EReadyAreaStatus.AroundVehicle);
|
||||
// }
|
||||
// else if (GameUnitManager.instance.prepareUnits.Contains(uid))
|
||||
// {
|
||||
// // 备战席
|
||||
// AreaManager.instance.readyAreaManager.ShowReadyArea();
|
||||
// }
|
||||
// }
|
||||
TeamManager.Instance.SetSelectID(uid);
|
||||
}
|
||||
|
||||
private void OnItemDrag(Vector2 pos)
|
||||
{
|
||||
if (_dragingUid == 0) return;
|
||||
|
||||
var unit = GameUnitManager.instance.totalUnits.Search(_dragingUid);
|
||||
var mousePos = InputManager.Instance.GetTouchPosition();
|
||||
var raycastHits = new RaycastHit[10];
|
||||
|
||||
var ray = CameraManager.Instance.MainCamera.ScreenPointToRay(mousePos);
|
||||
var layerMask = LayerMask.GetMask("Ground");
|
||||
var raycast = Physics.RaycastNonAlloc(ray, raycastHits, 1000, layerMask);
|
||||
if (raycast <= 0) return;
|
||||
var firstHit = raycastHits[0];
|
||||
var hitPoint = firstHit.point;
|
||||
|
||||
unit.Node.transform.position = hitPoint;
|
||||
//unit.transData.pos = hitPoint;
|
||||
}
|
||||
|
||||
private void OnItemEndDrag(Vector2 pos)
|
||||
{
|
||||
var mousePos = InputManager.Instance.GetTouchPosition();
|
||||
EventManager.Instance.Send(EventManager.EventName.PrepareModelDragEnd, mousePos);
|
||||
|
||||
_dragingUid = 0;
|
||||
}
|
||||
|
||||
void _LoadSelectModel(uint uid)
|
||||
{
|
||||
var unit = GameUnitManager.instance.totalUnits.Search(uid);
|
||||
var mousePos = InputManager.Instance.GetTouchPosition();
|
||||
var raycastHits = new RaycastHit[10];
|
||||
|
||||
var ray = CameraManager.Instance.MainCamera.ScreenPointToRay(mousePos);
|
||||
var layerMask = LayerMask.GetMask("Ground");
|
||||
var raycast = Physics.RaycastNonAlloc(ray, raycastHits, 1000, layerMask);
|
||||
if (raycast <= 0) return;
|
||||
var firstHit = raycastHits[0];
|
||||
var hitPoint = firstHit.point;
|
||||
|
||||
unit.Node.transform.position = hitPoint;
|
||||
//unit.transData.pos = hitPoint;
|
||||
unit.Node.GameObject.SetActive(true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
void ClearSelectFight()
|
||||
|
|
|
|||
Loading…
Reference in New Issue