备份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,207 @@
using asap.core;
using GameCore;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using cfg;
namespace game
{
public class EventPotionController : MonoBehaviour
{
public Camera potionCamera;
public GameObject centerPointGameObject;
public Transform centerOfTopMouth = null;
public List<Transform> operatingPointList = new List<Transform>();
public List<GameObject> fountainList = new List<GameObject>();
public List<GameObject> changingFountainEffectList = new List<GameObject>();
#region fountain
public int GetFountainLevel()
{
int index = -1;
int count = fountainList.Count;
for (int i = 0; i < count; ++i)
{
if (fountainList[i].activeSelf == true)
{
index = i;
}
}
return index + 1;
}
public void ChangeFountain(int fountainLevel, bool showEffect, float waitTime)
{
int index = fountainLevel - 1;
int count = fountainList.Count;
for (int i = 0; i < count; ++i)
{
if (i == index)
{
fountainList[i].SetActive(true);
}
else
{
fountainList[i].SetActive(false);
}
}
if (showEffect)
{
foreach (var gameObject in changingFountainEffectList)
{
gameObject.SetActive(false);
gameObject.SetActive(true);
}
}
if (waitTime > 0)
{
this.StartCoroutine(StopChangingFountainEffect(waitTime));
}
}
public IEnumerator StopChangingFountainEffect(float time)
{
yield return new WaitForSeconds(time);
foreach (var gameObject in changingFountainEffectList)
{
gameObject.SetActive(false);
}
}
#endregion
#region
//public void CloseCamera()
//{
// if (potionCamera == null) return;
// potionCamera.gameObject.SetActive(false);
//}
public void OpenCamera()
{
if (potionCamera == null) return;
potionCamera.gameObject.SetActive(true);
}
#endregion
#region
public void InitEvent()
{
FishingPotionAct.Subscribe<EventPotionCloseCameraData>(CloseCamera);
}
private void CloseCamera(EventPotionCloseCameraData data)
{
if (potionCamera == null) return;
potionCamera.gameObject.SetActive(false);
}
#endregion
#region
async void Awake()
{
CloseCamera(null);
EventPotionDataManager dataManager = GContext.container.Resolve<EventPotionDataManager>();
EventPotionStage level = dataManager.GetCurrentPotionLevel();
ChangeFountain(level.FountainLevel, false, 0);
GameObject pannelObj = await UIManager.Instance.ShowUI(dataManager.GetUIPanel());
EventPotionPanel panel = pannelObj.transform.GetComponent<EventPotionPanel>();
panel.SetEventPotionController(this);
RectTransform panelRectTransform = pannelObj.transform.GetComponent<RectTransform>();
float screenHeight = panelRectTransform.rect.height - panelRectTransform.sizeDelta.y;
RectTransform rawImageRectTransform = panel.ScenePotionRawImage.transform.GetComponent<RectTransform>();
float rawImageHeight = rawImageRectTransform.rect.height;
float ratioHeight = rawImageHeight / screenHeight;
OpenCamera();
potionCamera.rect = new Rect() { x = 0f, y = 0f, width = 1.0f, height = 1.0f };
float width = Screen.width;
float height = Screen.height * ratioHeight;
potionCamera.aspect = width / height;
// 3渲2rawimage
Vector2 originUIPosition = new Vector2(panel.ScenePotionRawImage.transform.position.x, panel.ScenePotionRawImage.transform.position.y);
Vector2 pivot = panel.ScenePotionRawImage.rectTransform.pivot;
Vector2 tmpUIPosition = panel.ScenePotionRawImage.rectTransform.anchoredPosition;
float imgWidth = panel.ScenePotionRawImage.rectTransform.rect.width;
float imgHeight = panel.ScenePotionRawImage.rectTransform.rect.height;
// --------------------------------- 场景内物体映射到UI上的位置 Begin ---------------------------------------
Vector3 screenPosition = potionCamera.WorldToScreenPoint(centerPointGameObject.transform.position);
float scaleX = screenPosition.x / Screen.width;
float scaleY = screenPosition.y / Screen.height;
float pixelX = panel.ScenePotionRawImage.rectTransform.position.x + imgWidth * (scaleX - pivot.x);
float pixelY = panel.ScenePotionRawImage.rectTransform.position.y + imgHeight * (scaleY - pivot.y);
Vector2 uiPosition = new Vector2(pixelX, pixelY);
panel.centerPointPosition = uiPosition;
// 操作点,倒水特效挂点
int count = operatingPointList.Count;
for (int i = 0; i < count; i++)
{
Transform transform = operatingPointList[i];
screenPosition = potionCamera.WorldToScreenPoint(transform.position);
scaleX = screenPosition.x / Screen.width;
scaleY = screenPosition.y / Screen.height;
pixelX = panel.ScenePotionRawImage.rectTransform.localPosition.x + imgWidth * (scaleX - pivot.x);
pixelY = panel.ScenePotionRawImage.rectTransform.localPosition.y + imgHeight * (scaleY - pivot.y);
uiPosition = new Vector2(pixelX, pixelY);
panel.operatingPointTransformList.Add(uiPosition);
}
// 圈口挂点
if (centerOfTopMouth != null)
{
screenPosition = potionCamera.WorldToScreenPoint(centerOfTopMouth.position);
scaleX = screenPosition.x / Screen.width;
scaleY = screenPosition.y / Screen.height;
pixelX = panel.ScenePotionRawImage.rectTransform.localPosition.x + imgWidth * (scaleX - pivot.x);
pixelY = panel.ScenePotionRawImage.rectTransform.localPosition.y + imgHeight * (scaleY - pivot.y);
panel.centerOfTopMouth = new Vector2(pixelX, pixelY);
}
// --------------------------------- 场景内物体映射到UI上的位置 End ---------------------------------------
int renderTextureWidth = (int)rawImageRectTransform.rect.width;
int renderTextureHeight = (int)rawImageRectTransform.rect.height;
RenderTexture renderTexture = new RenderTexture(renderTextureWidth, renderTextureHeight, 24);
potionCamera.targetTexture = renderTexture;
panel.ScenePotionRawImage.texture = renderTexture;
FishingPotionAct.IsInitControllerComplete = true;
InitEvent();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
#endregion
}
}