zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Unity/Assets/HotfixView/UI/PetUI/PetUI.cs

116 lines
3.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Cal.DataTable;
using ET;
using FairyGUI;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace ET
{
public class PetUIAwakeSyatem : AwakeSystem<PetUI>
{
public override void Awake(PetUI self)
{
self.Awake();
}
}
public class PetUIDestroySyatem : DestroySystem<PetUI>
{
public override void Destroy(PetUI self)
{
self.Destroy();
}
}
public class PetUI : Entity
{
private FUI_PetUI ui;
private NTexture nTexture;
private Camera rtCamera;
private Transform skinTran;
private RenderTexture rt;
public void Awake()
{
ui = GetParent<FUI_PetUI>();
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
Pet pet = UnitComponent.MyUnit.GetComponent<Pet>();
ShowSkin(pet.petId).Coroutine();
ShowPage().Coroutine();
RegisterEvent();
await ETTask.CompletedTask;
}
private async ETVoid ShowPage()
{
M2C_GetPetInfo ret = await SessionComponent.Instance.Call<M2C_GetPetInfo>(new C2M_GetPetInfo());
if (!ret.Message.IsNullOrEmpty())
{
TipHelper.OpenUI(ret.Message);
return;
}
this.ui.m_txtStute.text = $"剩余喂养次数:{ret.eatCount}\n活跃度{ret.active}";
string timeStr = TimeSpan.FromMilliseconds(ret.remainTime).ToString("hh\\:mm\\:ss");
this.ui.m_labTime.title = (Pet.PetState) ret.petState switch
{
Pet.PetState.Idle => $"等待中",
Pet.PetState.Follow => $"跟随中",
Pet.PetState.Play => $"嬉戏:{timeStr}",
Pet.PetState.Experience => $"锻炼:{timeStr}",
Pet.PetState.Explore => $"探险:{timeStr}",
_ => throw new ArgumentOutOfRangeException()
};
}
private void RegisterEvent()
{
//溜宠
ui.m_listBtn.GetChildAt(1).asButton.onClick.Set(()=>
{
SessionComponent.Instance.Session.Send(new C2M_ShowPet { });
});
}
private async ETVoid ShowSkin(int petId)
{
if (petId == 0) return;
PetConfig petConfig = PetConfigCategory.Instance.Get(petId);
if (petConfig == null) return;
skinTran = await ResourceViewHelper.LoadPrefabAsync(petConfig.PrefabId);
if (nTexture == null)
{
Transform characterTran = await ResourceViewHelper.LoadPrefabAsync(Sys_PrefabId.Character);
characterTran.localPosition = new Vector3(-2100, 0, 0);
rt = CreateTexture((int)this.ui.m_icon.width, (int)this.ui.m_icon.height);
rtCamera = characterTran.GetComponentInChildren<Camera>();
rtCamera.targetTexture = rt;
nTexture = new NTexture(rt);
this.ui.m_icon.texture = nTexture;
}
rtCamera.enabled = true;
skinTran.SetParent(rtCamera.transform.parent);
skinTran.localPosition = new Vector3(0, 1.25f, 5);
}
private static RenderTexture CreateTexture(int width, int height)
{
return new RenderTexture(width, height, 24, RenderTextureFormat.ARGB32)
{
antiAliasing = 1,
filterMode = FilterMode.Bilinear,
anisoLevel = 0,
useMipMap = false
};
}
public void Destroy()
{
if (rtCamera)
rtCamera.enabled = false;
ResourceViewHelper.DestoryPrefabAsync(skinTran);
}
}
}