This commit is contained in:
2026-06-27 02:08:23 +08:00
parent 7874f43f6f
commit dc03bf59cb
11 changed files with 585 additions and 44 deletions
@@ -28,6 +28,7 @@ public class ChineseChessMainPanel : GameMainPanel_Base
public Button btn_RenShu;
public Button btn_HuiQi;
public Button btn_SheZhi;
public Button btn_GuiZe;
public Button btn_StartGame;
public Image img_DengDaiZhong;
public ChessGameRoom roomData;
@@ -46,6 +47,35 @@ public class ChineseChessMainPanel : GameMainPanel_Base
private Coroutine waitCountdown;
/// <summary>
/// 加载头像精灵(优先使用缓存,否则异步下载)
/// </summary>
public static void LoadAvatar(Image target, string avatarUrl, System.Action<Sprite> onLoaded = null)
{
if (target == null) return;
var sprite = GameManager.Instance.GetAvatarSprite(avatarUrl);
if (sprite != null)
{
target.sprite = sprite;
onLoaded?.Invoke(sprite);
return;
}
// 缓存未命中,通过 DownSprite 协程异步加载
GameManager.Instance.StartCoroutine(LoadAvatarCoroutine(target, avatarUrl, onLoaded));
}
private static IEnumerator LoadAvatarCoroutine(Image target, string avatarUrl, System.Action<Sprite> onLoaded)
{
// 构造一个临时的 UserBaseInfo 对象来复用 DownSprite 逻辑
var tempInfo = new UserBaseInfo { avatarUrl = avatarUrl };
yield return tempInfo.DownSprite(sprite =>
{
if (sprite != null && target != null)
target.sprite = sprite;
onLoaded?.Invoke(sprite);
});
}
public static string FormatGold(long gold)
{
if (gold >= 100000000)
@@ -143,19 +173,13 @@ public class ChineseChessMainPanel : GameMainPanel_Base
{
tmp_Name_Bottom.text ="ID:" + item.userId;
tmp_CoinCount_Bottom.text = FormatGold(item.gold);
StartCoroutine(item.DownTexture2d((t2d) =>
{
img_Title_Bottom.sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), new Vector2(0.5f, 0.5f));
}));
LoadAvatar(img_Title_Bottom, item.userAvatar);
}
else
{
tmp_Name_Top.text ="ID:" + item.userId;
tmp_CoinCount_Top.text = FormatGold(item.gold);
StartCoroutine(item.DownTexture2d((t2d) =>
{
img_Title_Top.sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), new Vector2(0.5f, 0.5f));
}));
LoadAvatar(img_Title_Top, item.userAvatar);
}
}
}
@@ -167,6 +191,10 @@ public class ChineseChessMainPanel : GameMainPanel_Base
{
UIManager.Instance.Close(UIPanel.MainGamePanelZGXQ);
});
btn_GuiZe.onClick.AddListener(() =>
{
subUIManager.ShowAsync(UIPanel.ZGXQIntroduce);
});
}
protected override void OnShow(object args = null)
{
@@ -1,5 +1,245 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &639834380143608799
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 195583025787319218}
- component: {fileID: 5289778726008305520}
- component: {fileID: 2660448552411059024}
- component: {fileID: 6650960703067145803}
m_Layer: 0
m_Name: box_agree_1 (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &195583025787319218
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 639834380143608799}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4912862813522792693}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 108.99997, y: -81}
m_SizeDelta: {x: 203, y: 83}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5289778726008305520
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 639834380143608799}
m_CullTransparentMesh: 1
--- !u!114 &2660448552411059024
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 639834380143608799}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 57a8deafd73285948b5e077e5fd72bfd, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &6650960703067145803
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 639834380143608799}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 2660448552411059024}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &1025974325030243603
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 811547853397187383}
- component: {fileID: 7412038438093808045}
- component: {fileID: 5106309766128438178}
- component: {fileID: 801871825001634029}
m_Layer: 0
m_Name: box_disagree_sec_1 (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &811547853397187383
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1025974325030243603}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4912862813522792693}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -108.000015, y: -81}
m_SizeDelta: {x: 204, y: 83}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7412038438093808045
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1025974325030243603}
m_CullTransparentMesh: 1
--- !u!114 &5106309766128438178
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1025974325030243603}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: e78b6fd798639e14f9e251dd3cde4a47, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &801871825001634029
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1025974325030243603}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 5106309766128438178}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &2494634533834873446
GameObject:
m_ObjectHideFlags: 0
@@ -34,6 +274,8 @@ RectTransform:
- {fileID: 1851494839676306769}
- {fileID: 5583071222926426739}
- {fileID: 1320844032276657757}
- {fileID: 811547853397187383}
- {fileID: 195583025787319218}
m_Father: {fileID: 4962925905157319825}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
@@ -141,6 +383,8 @@ MonoBehaviour:
uIEffect: 1
TongYi: {fileID: 2953449263623005628}
JuJue: {fileID: 3913828958160512687}
QueRen: {fileID: 6650960703067145803}
QuXiao: {fileID: 801871825001634029}
tmp_msg: {fileID: 7298876158169188932}
--- !u!1 &4576255182341557019
GameObject:
@@ -1,4 +1,4 @@
using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess;
using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess;
using System.Collections;
using System.Collections.Generic;
using TMPro;
@@ -48,22 +48,14 @@ public class UIChineseChessDefeated : SubUIBase
if (item.userId == GameManager.Instance.user.BaseInfo.number)
{
//--top
StartCoroutine(item.DownTexture2d((t2d) =>
{
avatar_Top.sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), new Vector2(0.5f, 0.5f));
}));
ChineseChessMainPanel.LoadAvatar(avatar_Top, item.userAvatar);
tMP_ID_Top.text = item.userId;
tMP_Name_Top.text = item.userName;
}
else
{
//--top
StartCoroutine(item.DownTexture2d((t2d) =>
{
avatar_Bottom.sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), new Vector2(0.5f, 0.5f));
}));
//--bottom
ChineseChessMainPanel.LoadAvatar(avatar_Bottom, item.userAvatar);
tMP_ID_Bottom.text = item.userId;
tMP_Name_Bottom.text = item.userName;
}
@@ -44,22 +44,14 @@ public class UIChineseChessHe : SubUIBase
if (item.userId == GameManager.Instance.user.BaseInfo.number)
{
//--top
StartCoroutine(item.DownTexture2d((t2d) =>
{
avatar_Top.sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), new Vector2(0.5f, 0.5f));
}));
ChineseChessMainPanel.LoadAvatar(avatar_Top, item.userAvatar);
tMP_ID_Top.text = item.userId;
tMP_Name_Top.text = item.userName;
}
else
{
//--top
StartCoroutine(item.DownTexture2d((t2d) =>
{
avatar_Bottom.sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), new Vector2(0.5f, 0.5f));
}));
//--bottom
ChineseChessMainPanel.LoadAvatar(avatar_Bottom, item.userAvatar);
tMP_ID_Bottom.text = item.userId;
tMP_Name_Bottom.text = item.userName;
}
@@ -1,6 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
@@ -8,6 +9,8 @@ public class UIChineseChessHint : SubUIBase
{
public Button TongYi;
public Button JuJue;
public Button QueRen;
public Button QuXiao;
string targetID;
public TextMeshProUGUI tmp_msg;
protected override void OnShow(object args = null)
@@ -24,6 +27,10 @@ public class UIChineseChessHint : SubUIBase
{
tmp_msg.text = $"<color=red>{item.userId}</color> 向您发起了求和";
targetID=item.userId;
TongYi.gameObject.SetActive(true);
JuJue.gameObject.SetActive(true);
QueRen.gameObject.SetActive(false);
QuXiao.gameObject.SetActive(false);
}
}
@@ -36,9 +43,15 @@ public class UIChineseChessHint : SubUIBase
{
tmp_msg.text = $"是否确认认输";
targetID = item.userId;
TongYi.gameObject.SetActive(false);
JuJue.gameObject.SetActive(false);
QueRen.gameObject.SetActive(true);
QuXiao.gameObject.SetActive(true);
}
}
}
TongYi.onClick.RemoveAllListeners();
TongYi.onClick.AddListener(() =>
{
//WebSocketSendList.GameOperationChineseChess(v.roomData.roomId, 2, GameManager.Instance.user.BaseInfo.number);
@@ -56,12 +69,38 @@ public class UIChineseChessHint : SubUIBase
});
QueRen.onClick.RemoveAllListeners();
QueRen.onClick.AddListener(() =>
{
//WebSocketSendList.GameOperationChineseChess(v.roomData.roomId, 2, GameManager.Instance.user.BaseInfo.number);
if (v.hintType == 1)
{
//WebSocketSendList.EndGameChineseChess(v.roomData.roomId, targetID);
WebSocketSendList.EndGameChineseChess(v.roomData.roomId, null);
uIManager.Hide(UIPanel.ZGXQHint);
}
else if (v.hintType == 2)
{
WebSocketSendList.EndGameChineseChess(v.roomData.roomId, targetID);
}
});
JuJue.onClick.RemoveAllListeners();
JuJue.onClick.AddListener(() =>
{
//WebSocketSendList.EndGameChineseChess(v.roomData.roomId, targetID);
uIManager.Hide(UIPanel.ZGXQHint);
});
QuXiao.onClick.RemoveAllListeners();
QuXiao.onClick.AddListener(() =>
{
//WebSocketSendList.EndGameChineseChess(v.roomData.roomId, targetID);
uIManager.Hide(UIPanel.ZGXQHint);
});
}
@@ -1,4 +1,4 @@
using Assets.MyGame.Scripts.Net;
using Assets.MyGame.Scripts.Net;
using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess;
using Newtonsoft.Json;
using System.Collections;
@@ -1,4 +1,4 @@
using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess;
using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess;
using System.Collections;
using System.Collections.Generic;
using TMPro;
@@ -47,22 +47,14 @@ public class UIChineseChessWin : SubUIBase
if (item.userId == GameManager.Instance.user.BaseInfo.number)
{
//--top
StartCoroutine(item.DownTexture2d((t2d) =>
{
avatar_Top.sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), new Vector2(0.5f, 0.5f));
}));
ChineseChessMainPanel.LoadAvatar(avatar_Top, item.userAvatar);
tMP_ID_Top.text = item.userId;
tMP_Name_Top.text = item.userName;
}
else
{
//--top
StartCoroutine(item.DownTexture2d((t2d) =>
{
avatar_Bottom.sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), new Vector2(0.5f, 0.5f));
}));
//--bottom
ChineseChessMainPanel.LoadAvatar(avatar_Bottom, item.userAvatar);
tMP_ID_Bottom.text = item.userId;
tMP_Name_Bottom.text = item.userName;
}