备份CatanBuilding瘦身独立工程

This commit is contained in:
JSD\13999
2026-05-26 16:15:54 +08:00
commit 2d0e6a61b7
12001 changed files with 2431925 additions and 0 deletions

View File

@@ -0,0 +1,329 @@
using Script.RuntimeScript.model.Data;
using System.Text;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine;
using Script.RuntimeScript.GameLogic;
using asap.core;
using System.Threading.Tasks;
using cfg;
namespace Script.RuntimeScript
{
public partial class GameBroadLogic
{
/// <summary>
/// 上面宝箱上的任务道具加载
/// </summary>
/// <param name="address"></param>
/// <param name="data"></param>
private void LoadAndInstantiateTaskProp(string address, PropData data)
{
//DiggingGameManager.LogError("开始 上面宝箱上的任务道具加载::: id:" + data.PropId);
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(address);
handle.Completed += (AsyncOperationHandle<GameObject> obj) =>
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
GameObject propEntity = GameObject.Instantiate(obj.Result, GContext.container.Resolve<DiggingGameManager>().PropContainer.transform, false);
propEntity.name = address;
PropItem propScript = propEntity.AddComponent<PropItem>();
propScript.Data = data;
Vector3 LocalPos = data.LocalPos;
LocalPos.z = 0;
//LocalPos.y += 0.5f;
propScript.transform.localPosition = LocalPos;
_allProps.Add(propScript);
if (data.IsOk) //已经获得的道具 隐藏起来
{
propScript.gameObject.SetActive(false);
}
// 释放资源
Addressables.Release(handle);
}
else
{
DiggingGameManager.LogError("Failed to load asset: " + address);
}
};
}
/// <summary>
/// 已经完成的任务道具加载
/// </summary>
/// <param name="address"></param>
/// <param name="data"></param>
private void LoadAndInstantiateGetedTaskProp(string address, PropData propData, float ItemFxScale)
{
DiggingGameManager.LogError("开始已经完成的任务道具加载:::id::" + propData.PropId);
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(address);
handle.Completed += (AsyncOperationHandle<GameObject> obj) =>
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
DiggingGameManager.LogError("已经完成的任务道具加载:::id::" + propData.PropId);
GameObject propEntity = GameObject.Instantiate(obj.Result, GContext.container.Resolve<DiggingGameManager>().PropContainer.transform, false);
propEntity.name = address;
PropSparkItem propSparkItem = propEntity.AddComponent<PropSparkItem>();
propSparkItem.Init(ItemFxScale);
Vector3 LocalPos = propData.LocalPos;
LocalPos.z = 0;
//LocalPos.y += 0.5f;
//LocalPos.z += SandDigEventConst.TargetPropOffsetZ;
propEntity.transform.localPosition = LocalPos;
propEntity.transform.localScale = Vector3.one * SandDigEventConst.GetScale;
propEntity.transform.localEulerAngles = Vector3.zero;
// 释放资源
Addressables.Release(handle);
}
else
{
DiggingGameManager.LogError("Failed to load asset: " + address);
}
};
}
/// <summary>
/// 棋盘背景格子加载
/// </summary>
/// <param name="address"></param>
/// <param name="data"></param>
private void LoadAndInstantiateBroad(string address, BroadData data)
{
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(address);
handle.Completed += (AsyncOperationHandle<GameObject> obj) =>
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
GameObject broadEntity = GameObject.Instantiate(obj.Result, GContext.container.Resolve<DiggingGameManager>().BroadContainer.transform, false);
BroadItem broadScript = broadEntity.AddComponent<BroadItem>();
broadScript.Data = data;
_allBroads.Add(broadScript);
broadEntity.transform.localPosition = data.LocalPos;
// 释放资源
Addressables.Release(handle);
}
else
{
DiggingGameManager.LogError("Failed to load asset: " + address);
}
};
}
/// <summary>
/// 棋子显示
/// </summary>
/// <param name="address"></param>
/// <param name="data"></param>
private void LoadAndInstantiateGrid(string address, GridData data)
{
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(address);
handle.Completed += (AsyncOperationHandle<GameObject> obj) =>
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
GameObject gridEntity = GameObject.Instantiate(obj.Result, GContext.container.Resolve<DiggingGameManager>().GridContainer.transform, false);
StringBuilder strB = new StringBuilder();
strB.Append("grid _");
strB.Append(data.Row);
strB.Append("_");
strB.Append(data.Col);
gridEntity.name = strB.ToString();
GridItem gridScript = gridEntity.AddComponent<GridItem>();
gridScript.Data = data;
_allGrids.Add(gridScript);
gridEntity.transform.localPosition = data.LocalPos;
gridEntity.SetActive(!data.IsOpen);
if (!data.IsOpen && data.DoubleClick)
{
if (data.hasClickCount > 0)
{
gridScript.SetMash(GridMeshType.Mesh2);
}
}
_gridLoadedCount++;
CheakAllGridPrefabLoaded();
// 释放资源
Addressables.Release(handle);
}
else
{
DiggingGameManager.LogError("Failed to load asset: " + address);
}
};
}
/// <summary>
/// 格子下配置的普通道具显示
/// </summary>
/// <param name="address"></param>
/// <param name="gridData"></param>
private void LoadAndInstantiateGridProp(string address, GridPropData gridData)
{
//DiggingGameManager.LogError("开始格子下道具实体:::id::" + gridData.PropId);
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(address);
handle.Completed += (AsyncOperationHandle<GameObject> obj) =>
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
GameObject gridPropEntity = GameObject.Instantiate(obj.Result, GContext.container.Resolve<DiggingGameManager>().GridPropContainer.transform, false);
GridPropItem gridPropScript = gridPropEntity.AddComponent<GridPropItem>();
int columns = GContext.container.Resolve<DiggingGameManager>().GetGridWidth();
var showTime = GContext.container.Resolve<Tables>().TbGlobalConfig.DiggingPropShowTime;
columns = columns - 3;
if (columns < 0)
{
columns = 0;
}
if (columns >= showTime.Count)
{
columns = showTime.Count - 1;
}
gridPropScript.Init(gridData, showTime[columns]);
_allGridProps.Add(gridPropScript);
gridPropEntity.transform.localPosition = new Vector3(gridData.ParentGird.Row, gridData.ParentGird.Col, 0);
gridPropEntity.transform.localEulerAngles = new Vector3(0, 0, -gridData.PropDirection);
gridPropEntity.SetActive(!gridData.IsCanOpen());
gridPropEntity.name = address;
//DiggingGameManager.LogError("格子下道具实体:::id::" + gridData.PropId + " x::" + gridPropEntity.transform.localPosition.x + " y" + gridPropEntity.transform.localPosition);
// 释放资源
Addressables.Release(handle);
}
else
{
DiggingGameManager.LogError("Failed to load asset: " + address);
}
};
}
/// <summary>
/// 格子下模板道具加载
/// </summary>
/// <param name="address"></param>
/// <param name="gridData"></param>
/// <param name="prop"></param>
/// <param name="urlType"></param>
private void LoadAndInstantiateTempGridProp(string address, GridPropData gridData, PropTempData prop, UrlType urlType)
{
//DiggingGameManager.LogError("开始创建道具模板实体, id:::" + gridData.PropId);
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(address);
handle.Completed += (AsyncOperationHandle<GameObject> obj) =>
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
GameObject gridPropEntity = GameObject.Instantiate(obj.Result, GContext.container.Resolve<DiggingGameManager>().GridPropContainer.transform, false);
//DiggingGameManager.LogError("创建道具模板实体,位置 x:" + prop.x + " y:" + prop.y + " id:::" + gridData.PropId);
gridPropEntity.name = address;
if (urlType == UrlType.GridProp)
{
GridPropItem gridPropScript = gridPropEntity.AddComponent<GridPropItem>();
int columns = GContext.container.Resolve<DiggingGameManager>().GetGridWidth();
var showTime = GContext.container.Resolve<Tables>().TbGlobalConfig.DiggingPropShowTime;
columns = columns - 3;
if (columns < 0)
{
columns = 0;
}
if (columns >= showTime.Count)
{
columns = showTime.Count - 1;
}
gridPropScript.Init(gridData, showTime[columns]);
_allGridProps.Add(gridPropScript);
gridPropEntity.transform.localEulerAngles = new Vector3(0, 0, -gridData.PropDirection);
}
else if (urlType == UrlType.SpecialEvent)
{
SpecialEventItem spPropScript = gridPropEntity.AddComponent<SpecialEventItem>();
spPropScript.Data = gridData;
_allSpecialGridProps.Add(spPropScript);
}
gridPropEntity.transform.localPosition = new Vector3(gridData.ParentGird.Row, gridData.ParentGird.Col, 0);
gridPropEntity.SetActive(!gridData.IsCanOpen());
// 释放资源
Addressables.Release(handle);
}
else
{
DiggingGameManager.LogError("Failed to load asset: " + address);
}
};
}
/// <summary>
/// 特殊事件显示
/// </summary>
/// <param name="address"></param>
/// <param name="spData"></param>
private void LoadAndInstantiateSpecialEvent(string address, GridPropData spData)
{
//DiggingGameManager.LogError("开始特殊事件实体::: id:" + spData.PropId);
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(address);
handle.Completed += (AsyncOperationHandle<GameObject> obj) =>
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
GameObject gridPropEntity = GameObject.Instantiate(obj.Result, GContext.container.Resolve<DiggingGameManager>().GridPropContainer.transform, false);
gridPropEntity.name = address;
SpecialEventItem spPropScript = gridPropEntity.AddComponent<SpecialEventItem>();
spPropScript.Data = spData;
_allSpecialGridProps.Add(spPropScript);
gridPropEntity.transform.localPosition = new Vector3(spData.ParentGird.Row, spData.ParentGird.Col, 0);
gridPropEntity.SetActive(!spData.IsCanOpen());
//DiggingGameManager.LogError("特殊事件实体::: id:" + spData.PropId + " x::" + gridPropEntity.transform.localPosition.x + " y" + gridPropEntity.transform.localPosition);
// 释放资源
Addressables.Release(handle);
}
else
{
DiggingGameManager.LogError("Failed to load asset: " + address);
}
};
}
public async Task<GameObject> LoadGameObject(string address, Transform parent)
{
TaskCompletionSource<GameObject> taskCompletion = new TaskCompletionSource<GameObject>();
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(address);
handle.Completed += (AsyncOperationHandle<GameObject> obj) =>
{
if (obj.Status == AsyncOperationStatus.Succeeded)
{
GameObject gridPropEntity = GameObject.Instantiate(obj.Result, parent);
gridPropEntity.name = address;
//DiggingGameManager.LogError("特殊事件实体::: id:" + spData.PropId + " x::" + gridPropEntity.transform.localPosition.x + " y" + gridPropEntity.transform.localPosition);
taskCompletion.SetResult(gridPropEntity);
// 释放资源
Addressables.Release(handle);
}
else
{
taskCompletion.SetResult(null);
DiggingGameManager.LogError("Failed to load asset: " + address);
}
};
return await taskCompletion.Task;
}
}
}