NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Team/TeamWrapperAdapter.cs

209 lines
6.0 KiB
C#

using UnityEngine;
using Framework;
using GameWrapper.Team;
using Cysharp.Threading.Tasks;
using cfg.VihecleCultivateCfg;
using Gameplay.Emoji;
using Gameplay.Net;
using Gameplay.Performance;
using Gameplay.Utils;
namespace Gameplay
{
/// <summary>
/// 车辆模型相关
/// </summary>
public class VehicleModelServiceImpl : IVehicleModelService
{
public string GetVehicleGameModelPath(int vehicleId)
{
return PathEx.GetVehicleGameModelPath(vehicleId);
}
public string GetBatteryModelPath(string modelPath)
{
return PathEx.GetBatteryModelPath(modelPath);
}
public string GetVehiclePaintPath(int vehicleID, int paintID)
{
return PathEx.GetVehiclePaintPath(vehicleID, paintID);
}
public async UniTask<Material> GetVehiclePaintMaterial(string paintPath)
{
return await CommonUtils.GetVehiclePaintMaterial(paintPath);
}
public GameObject FindVehiclePartRoot(GameObject vehicleModel, int vehicleId, TeamPaintType type)
{
PaintType mappedType = (PaintType)type;
return VehicleDataHelper.FindVehiclePartRoot(vehicleModel, vehicleId, mappedType);
}
public object CombineConfigData(object vehicleData)
{
return VehicleDataHelper.CombineConfigData(vehicleData as VehicleCultivateData);
}
public bool VehicleDataDicContainsKey(uint id)
{
return VehicleCultivateDataManager.Instance.DataDic.ContainsKey(id);
}
public object GetVehicleData(uint id)
{
return VehicleCultivateDataManager.Instance.GetVehicleCultivateData(id);
}
public object GetVehicleDevelopment(uint id)
{
return Actor.Instance.Character.GetVehicleDevelopment(id);
}
}
/// <summary>
/// 角色模型相关
/// </summary>
public class CharacterModelServiceImpl : ICharacterModelService
{
public string GetCharacterDisplayModelPath(string nameId)
{
return PathEx.GetCharacterDisplayModelPath(nameId);
}
public bool CharacterDataDicContainsKey(uint id)
{
return CharacterDataInfoManager.Instance.DataDic.ContainsKey(id);
}
public object GetCharacterData(uint id)
{
return CharacterDataInfoManager.Instance.GetCharacterInfo(id);
}
public object CreateEmojiManager(GameObject go, string eyesColor, string eyeBrowsType, string eyeBrowsColor,
bool isActive)
{
var emojiMgr = new UnitEmojiManager(go, eyesColor, eyeBrowsType, eyeBrowsColor, true);
return emojiMgr;
}
public void SwitchEmoji(object emojiManager, int emojiId)
{
if (emojiManager is UnitEmojiManager manager)
{
manager.SwitchEmoji(emojiId);
}
}
public void DisposeEmojiManager(object emojiManager)
{
if (emojiManager is UnitEmojiManager manager)
{
manager.Dispose();
}
}
}
/// <summary>
/// 编队相关
/// </summary>
public class TeamServiceImpl : ITeamService
{
public object GetTeamByIndex(int idx, bool isLegionBattle)
{
return TeamEditManager.Instance.GetTeamByIndex(idx, isLegionBattle);
}
public uint[] GetAllCharacters(object team)
{
if (team is Team teamObj)
{
return teamObj.GetAllCharacters().ToArray();
}
return new uint[0];
}
public uint[] GetVehicleIDs(object team)
{
if (team is Team teamObj)
{
return teamObj.GetVehicleIDs().ToArray();
}
return new uint[0];
}
public uint GetTeamNoneID()
{
return Team.NoneID;
}
public Shader GetVehicleShader()
{
return TeamEditManager.Instance.VehicleShader;
}
}
/// <summary>
/// 配置表相关
/// </summary>
public class TableServiceImpl : ITableService
{
public object GetSkinConfig(int skinID, int roleID)
{
return TableManager.Instance.Tables.SkinCfg.Get(skinID, roleID);
}
public object GetBatteryConfig(long weaponId)
{
return TableManager.Instance.Tables.BatteryConfig.GetOrDefault(weaponId);
}
public bool TryGetCharacterAttriData(int id, out object data)
{
var charDataCfg = TableManager.Instance.Tables.CharacterAttri;
if (charDataCfg.DataMap.TryGetValue(id, out var charSingleData))
{
data = charSingleData;
return true;
}
data = null;
return false;
}
}
/// <summary>
/// Team 相机对象
/// </summary>
public class TeamEditCameraObjImpl : ITeamEditCameraObj
{
public Camera teamEditCamera => TeamEditCameraObj.Instance.teamEditCamera;
public void SetCameraAntialiasing(Camera camera)
{
if (TeamEditCameraObj.Instance)
{
if(TeamEditCameraObj.Instance.teamEditCamera)
PerformanceManager.instance.SetCameraAntialiasing(TeamEditCameraObj.Instance.teamEditCamera);
}
}
}
/// <summary>
/// 初始化器
/// </summary>
public static class TeamWrapperAdapter
{
public static void InitializeServices()
{
TeamServiceHandle.VehicleService = new VehicleModelServiceImpl();
TeamServiceHandle.CharacterService = new CharacterModelServiceImpl();
TeamServiceHandle.TeamService = new TeamServiceImpl();
TeamServiceHandle.TableService = new TableServiceImpl();
TeamServiceHandle.TeamEditCameraObj = new TeamEditCameraObjImpl();
}
}
}