116 lines
3.8 KiB
C#
116 lines
3.8 KiB
C#
|
||
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);
|
||
}
|
||
}
|
||
}
|