using cfg; using TMPro; using UnityEngine; using UnityEngine.UI; using asap.core; public class EventFishHuntingPhoto : MonoBehaviour { SpriteRenderer bg_photo; Transform fishIconRT; RawImage rawImage; RenderTexture rt; GameObject fishGo; Camera rtCamera; Transform avatarCapture; Transform avatarEscape; int fieldOfView = 60; int fishPosZ = 20; GameObject kuang_mutated; GameObject kuang_nml; GameObject kuang_mutated_failed; GameObject kuang_nml_failed; GameObject bg_mutated; GameObject bg_nml; TMP_Text text_num_level; Image tag_fish_settlement; TMP_Text text_fish_name_settlement; public void Init() { kuang_mutated = transform.Find("kuang_mutated").gameObject; kuang_nml = transform.Find("kuang_nml").gameObject; kuang_mutated_failed = transform.Find("kuang_mutated_failed").gameObject; kuang_nml_failed = transform.Find("kuang_nml_failed").gameObject; bg_mutated = transform.Find("level/bg_mutated").gameObject; bg_nml = transform.Find("level/bg_nml").gameObject; bg_photo = transform.Find("mask_bg2/icon_fish/Camera/bg_photo").GetComponent(); fishIconRT = transform.Find("mask_bg2/icon_fish"); fishIconRT.transform.position = Vector3.back * 50; avatarCapture = fishIconRT.Find("avatarCapture"); avatarEscape = fishIconRT.Find("avatarEscape"); rtCamera = fishIconRT.Find("Camera").GetComponent(); rawImage = transform.Find("mask_bg2/RawImage").GetComponent(); text_num_level = transform.Find("level/text_level_num").GetComponent(); tag_fish_settlement = transform.Find("icon_rate").GetComponent(); text_fish_name_settlement = transform.Find("text_name").GetComponent(); } public void ShowFish(FishMovement fishMovement, bool isRob) { text_num_level.text = fishMovement.cardLv; RectTransform raw = rawImage.GetComponent(); rt = new RenderTexture((int)raw.rect.width, (int)raw.rect.height, 24, RenderTextureFormat.ARGB32); rtCamera.fieldOfView = fieldOfView; rtCamera.enabled = true; var TankPosition = fishMovement.fishData.TankPosition; Vector3 pos = new Vector3(TankPosition[0], TankPosition[1], TankPosition[2] + fishPosZ); Transform avatar = isRob ? avatarCapture : avatarEscape; pos += avatar.localPosition; avatar.localPosition = pos; fishGo = Instantiate(fishMovement.fish.gameObject, avatar); Fish fish = fishGo.GetComponent(); fish.animator.transform.localPosition = Vector3.zero; var TankRotation = fishMovement.fishData.TankRotation; fish.transform.localRotation = Quaternion.Euler(TankRotation[0], TankRotation[1], TankRotation[2]); fish.transform.localScale = Vector3.one * fishMovement.fishData.TankScale * fishMovement.mutantScale; rtCamera.targetTexture = rt; rawImage.texture = rt; rtCamera.Render(); } public void ShowSettlement(FishMovement fishMovement, Sprite tagSprite, string fishName, bool isRob) { tag_fish_settlement.sprite = tagSprite; text_fish_name_settlement.text = fishName; bool isMutated = fishMovement.index < fishMovement.slotData.mutants; kuang_mutated.SetActive(isMutated && isRob); kuang_nml.SetActive(!isMutated && isRob); kuang_mutated_failed.SetActive(isMutated && !isRob); kuang_nml_failed.SetActive(!isMutated && !isRob); bg_mutated.SetActive(isMutated); bg_nml.SetActive(!isMutated); } public void SetBackground(int mapId) { var mapData = GContext.container.Resolve().TbMapData.DataMap[mapId]; string prefabName = mapData.AquariumPrefab; Transform bg = transform.Find($"bg_{prefabName}"); if (bg != null) { bg_photo.sprite = bg.GetComponent().sprite; } } public void Cleanup() { if (rt != null) { rt.Release(); Destroy(rt); rt = null; } if (fishGo != null) { Destroy(fishGo); } if (rtCamera != null) { rtCamera.targetTexture = null; } } }