经验数据同步,更名逻辑上传

This commit is contained in:
YiHan0621
2025-09-15 18:00:52 +08:00
parent 12cf877c80
commit 0fd35d8c21
10 changed files with 463 additions and 31 deletions

View File

@@ -5399,6 +5399,86 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 302193136}
m_CullTransparentMesh: 0
--- !u!1 &309934203
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 309934204}
- component: {fileID: 309934206}
- component: {fileID: 309934205}
m_Layer: 5
m_Name: error
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &309934204
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 309934203}
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: 1963065756}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: 0, y: -24.359985}
m_SizeDelta: {x: 1028, y: 48.73}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &309934205
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 309934203}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0, b: 0, 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_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 24
m_FontStyle: 1
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text:
--- !u!222 &309934206
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 309934203}
m_CullTransparentMesh: 1
--- !u!1 &319165401
GameObject:
m_ObjectHideFlags: 0
@@ -12280,6 +12360,7 @@ GameObject:
- component: {fileID: 754385745}
- component: {fileID: 754385747}
- component: {fileID: 754385746}
- component: {fileID: 754385748}
m_Layer: 5
m_Name: rename
m_TagString: Untagged
@@ -12345,6 +12426,50 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 754385744}
m_CullTransparentMesh: 1
--- !u!114 &754385748
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 754385744}
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: 754385746}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &759723065
GameObject:
m_ObjectHideFlags: 0
@@ -23295,6 +23420,153 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1322184455}
m_CullTransparentMesh: 0
--- !u!1 &1322252205
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1322252206}
- component: {fileID: 1322252209}
- component: {fileID: 1322252208}
- component: {fileID: 1322252207}
m_Layer: 5
m_Name: NameInput
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1322252206
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1322252205}
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:
- {fileID: 3342894377011880112}
- {fileID: 1712366766}
m_Father: {fileID: 2049775963}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -53.967987, y: 2.2975006}
m_SizeDelta: {x: -107.92999, y: -4.595001}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1322252207
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1322252205}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, 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: 1322252208}
m_TextComponent: {fileID: 1712366767}
m_Placeholder: {fileID: 3342894377011880079}
m_ContentType: 5
m_InputType: 0
m_AsteriskChar: 42
m_KeyboardType: 6
m_LineType: 0
m_HideMobileInput: 0
m_CharacterValidation: 4
m_CharacterLimit: 0
m_OnSubmit:
m_PersistentCalls:
m_Calls: []
m_OnDidEndEdit:
m_PersistentCalls:
m_Calls: []
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_CustomCaretColor: 0
m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
m_Text:
m_CaretBlinkRate: 0.85
m_CaretWidth: 1
m_ReadOnly: 0
m_ShouldActivateOnSelect: 1
--- !u!114 &1322252208
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1322252205}
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: 0}
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: 10911, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
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!222 &1322252209
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1322252205}
m_CullTransparentMesh: 1
--- !u!1 &1334454748
GameObject:
m_ObjectHideFlags: 0
@@ -29628,6 +29900,86 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1710124899}
m_CullTransparentMesh: 0
--- !u!1 &1712366765
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1712366766}
- component: {fileID: 1712366768}
- component: {fileID: 1712366767}
m_Layer: 5
m_Name: Text (Legacy)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1712366766
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1712366765}
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: 1322252206}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1712366767
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1712366765}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.5019608, g: 0.47058827, b: 0.57254905, 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_FontData:
m_Font: {fileID: 12800000, guid: c56d3a307af0c8d48ae7d1adb958c922, type: 3}
m_FontSize: 32
m_FontStyle: 1
m_BestFit: 0
m_MinSize: 0
m_MaxSize: 150
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 1
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text:
--- !u!222 &1712366768
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1712366765}
m_CullTransparentMesh: 1
--- !u!1 &1714191682
GameObject:
m_ObjectHideFlags: 0
@@ -30310,8 +30662,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 366.90002, y: 3.2}
m_SizeDelta: {x: 427.37, y: 69.13}
m_AnchoredPosition: {x: 424.73, y: 3.2}
m_SizeDelta: {x: 542.72, y: 69.13}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1741421170
GameObject:
@@ -33059,7 +33411,7 @@ GameObject:
- component: {fileID: 1943317256}
- component: {fileID: 1943317257}
m_Layer: 5
m_Name: Slider
m_Name: LevelSlider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -33264,6 +33616,7 @@ RectTransform:
- {fileID: 1689588726}
- {fileID: 3342894376018028529}
- {fileID: 3342894376182944059}
- {fileID: 309934204}
m_Father: {fileID: 3342894375174218281}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -34728,7 +35081,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3342894377011880112}
- {fileID: 1322252206}
- {fileID: 754385745}
m_Father: {fileID: 1963065756}
m_RootOrder: 0
@@ -36908,7 +37261,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -33.87, y: 0.16999817}
m_AnchoredPosition: {x: -33.869995, y: 0.16999817}
m_SizeDelta: {x: -89.01, y: -7.13}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &396921782135916949
@@ -39144,7 +39497,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -33.87, y: 0.16999817}
m_AnchoredPosition: {x: -33.869995, y: 0.16999817}
m_SizeDelta: {x: -89.01, y: -7.13}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &396921782672306444
@@ -45745,7 +46098,7 @@ CanvasGroup:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3342894375174218282}
m_Enabled: 1
m_Alpha: 0
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
@@ -45763,7 +46116,10 @@ MonoBehaviour:
m_EditorClassIdentifier:
display_speed: 4
player_name: {fileID: 3342894377011880079}
renameInput: {fileID: 1322252207}
renameButton: {fileID: 754385748}
player_level: {fileID: 3342894375830354836}
player_level_slider: {fileID: 1943317257}
avatar: {fileID: 3342894375463160157}
cardback: {fileID: 3342894375690132112}
elo: {fileID: 3342894375823832436}
@@ -45772,6 +46128,7 @@ MonoBehaviour:
victories: {fileID: 3342894375208539317}
defeats: {fileID: 3342894376861038188}
userId: {fileID: 1740133842}
player_error: {fileID: 309934205}
buttons_area: {fileID: 1969396737}
account_button: {fileID: 994162386}
sell_button: {fileID: 1231300870}
@@ -58005,12 +58362,12 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2049775963}
m_Father: {fileID: 1322252206}
m_RootOrder: 0
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: -53.968, y: 2.2975}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 468.07, y: 75.405}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &3342894377011880113

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using UnityEngine;
using System.Threading.Tasks;
using TcgEngine.UI;
using UnityEngine.Networking;
using UnityEngine.Events;
@@ -243,7 +244,11 @@ namespace TcgEngine
udata = ApiTool.JsonToObject<UserData>(res.data);
// Debug.Log($"获取玩家数据:{res.data}");
}
else
{
Debug.LogError("失败!!!!!!!!!!!!");
}
Debug.Log($"{udata.id}");
return udata;
}
@@ -375,6 +380,32 @@ namespace TcgEngine
return response;
}
public async Task<bool> UpdateUsername(string newUsername)
{
if(!IsConnected())
return false;
string url = ServerURL + "/users/username/edit";
EditUsernameRequest req = new EditUsernameRequest();
req.username = newUsername;
string json = ApiTool.ToJson(req);
WebResponse res = await SendPostRequest(url, json);
if (res.success)
{
Debug.Log($"更名前:{username}");
username = newUsername;
MainMenu.Get().RefreshUserData();
PlayerPrefs.SetString("tcg_last_user", newUsername);
Debug.Log($"更名后:{username}");
}
else
{
Debug.LogError("改名失败" + res.error);
}
return res.success;
}
private string GetError(WebResponse res)
{
if (res.success)

View File

@@ -52,6 +52,13 @@ namespace TcgEngine
public string password_new;
}
[Serializable]
public struct EditUsernameRequest
{
public string username;
}
[Serializable]
public struct FriendAddRequest
{

View File

@@ -61,14 +61,7 @@ namespace TcgEngine
return Mathf.FloorToInt(xp / 1000) + 1;
}
public float GetLevelProgress()
{
int currentLeve = GetLevel();
int baseXp = (currentLeve - 1) * 1000;
int xpIntoCurrentLevel = xp - baseXp;
return (float)xpIntoCurrentLevel / 1000f;
}
public string GetAvatar()
{

View File

@@ -53,6 +53,14 @@ namespace TcgEngine
{
return Mathf.FloorToInt(xp / 1000f) + 1;
}
public float GetLevelProgress(int xp)
{
int currentLeve = GetPlayerLevel(xp);
int baseXp = (currentLeve - 1) * 1000;
int xpIntoCurrentLevel = xp - baseXp;
return (float)xpIntoCurrentLevel / 1000f;
}
public string GetRandomArena()
{

View File

@@ -31,6 +31,7 @@ namespace TcgEngine.UI
public UnityAction<string> onClick;
public string username;
public string id;
public PlayerRank pd;
@@ -45,6 +46,7 @@ namespace TcgEngine.UI
int rankId, int rankScore, int stars, bool highlight)
{
this.username = udata.username;
id = udata.playerId;
RankMedalShow(ranking);
this.playerName.text = username;
this.rankScore.text = rankScore.ToString();

View File

@@ -47,6 +47,8 @@ namespace TcgEngine.UI
private bool isHideObject = false;
public List<string> Usersid = new List<string>();
UserData udata = ApiClient.Get().UserData;
protected override void Awake()
{
base.Awake();
@@ -55,6 +57,7 @@ namespace TcgEngine.UI
my_line.onClick += OnClickLine;
my_ladderLine.onClick += OnClickRankLine;
InitLines();
}
@@ -123,7 +126,7 @@ namespace TcgEngine.UI
return lrline;
}
private async void RefreshPanel()
public async void RefreshPanel()
{
my_line.Hide();
foreach (RankLine line in lines)
@@ -134,8 +137,6 @@ namespace TcgEngine.UI
if (!Authenticator.Get().IsApi())
return;
UserData udata = ApiClient.Get().UserData;
int index = 0;
string url = ApiClient.ServerURL + "/users";
WebResponse res = await ApiClient.Get().SendGetRequest(url);
@@ -152,7 +153,7 @@ namespace TcgEngine.UI
if (user.permission_level != 1 || user.matches == 0)
continue; //Dont show admins and user with no matches
if (user.username == udata.username)
if (user.id == udata.id)
{
my_line.SetLine(user, index + 1, true);
}
@@ -168,11 +169,9 @@ namespace TcgEngine.UI
index++;
}
}
private async void RefreshLadderPanel()
public async void RefreshLadderPanel()
{
my_ladderLine.Hide();
foreach (LadderRankLine line in ladderLines)
@@ -183,8 +182,6 @@ namespace TcgEngine.UI
if (!Authenticator.Get().IsApi())
return;
UserData udata = ApiClient.Get().UserData;
int index = 0;
string url = ApiClient.ServerURL + "/ladder/leaderboard";
WebResponse res = await ApiClient.Get().SendGetRequest(url);
@@ -210,7 +207,7 @@ namespace TcgEngine.UI
foreach (LadderLeaderboardEntry rankData in sorted_users)
{
if (rankData.username == udata.username)
if (rankData.playerId == udata.id)
{
my_ladderLine.SetLine(rankData, index + 1, GetAvatar(udata.avatar), rankData.rankId,
rankData.rankScore, rankData.stars, true);
@@ -287,6 +284,7 @@ namespace TcgEngine.UI
public override void Show(bool instant = false)
{
base.Show(instant);
udata = ApiClient.Get().UserData;
RefreshPanel();
RefreshLadderPanel();
ladderRank.Show();

View File

@@ -191,7 +191,7 @@ namespace TcgEngine.UI
error_msg.text = "";
test_area.SetActive(Authenticator.Get().IsTest());
string user = PlayerPrefs.GetString("tcg_last_user", "");
string user = PlayerPrefs.GetString("tcg_last_user");
login_user.text = user;
if (Authenticator.Get().IsTest())

View File

@@ -119,8 +119,8 @@ namespace TcgEngine.UI
credits_txt.text = GameUI.FormatNumber(user.coins);
// xp
level_text.text = user.GetLevel().ToString();
level_slider.value = user.GetLevelProgress();
level_text.text = GameplayData.Get().GetPlayerLevel(user.xp).ToString();
level_slider.value = GameplayData.Get().GetLevelProgress(user.xp);
AvatarData avatar = AvatarData.Get(user.avatar);
this.avatar.SetAvatar(avatar);

View File

@@ -15,7 +15,10 @@ namespace TcgEngine.UI
{
[Header("Player")]
public Text player_name;
public InputField renameInput;
public Button renameButton;
public Text player_level;
public Slider player_level_slider;
public AvatarUI avatar;
public CardbackUI cardback;
public Text elo;
@@ -24,6 +27,7 @@ namespace TcgEngine.UI
public Text victories;
public Text defeats;
public Text userId;
public Text player_error;
[Header("Bottom bar")]
public GameObject buttons_area;
@@ -70,12 +74,13 @@ namespace TcgEngine.UI
protected override void Update()
{
base.Update();
}
protected override void Start()
{
base.Start();
renameButton.onClick.AddListener(OnPlayerRename);
}
private async void LoadData()
@@ -95,6 +100,7 @@ namespace TcgEngine.UI
winrate.text = "";
player_level.text = "";
userId.text = "";
player_error.text = "";
avatar.Hide();
cardback.Hide();
}
@@ -109,6 +115,7 @@ namespace TcgEngine.UI
UserData user = user_data;
player_name.text = user.username;
player_level.text = GameplayData.Get().GetPlayerLevel(user.xp).ToString();
player_level_slider.value = GameplayData.Get().GetLevelProgress(user.xp);
userId.text = user.id;
AvatarData avatar = AvatarData.Get(user.avatar);
@@ -379,6 +386,35 @@ namespace TcgEngine.UI
username = user;
LoadData();
}
private async void OnPlayerRename()
{
if (string.IsNullOrEmpty(renameInput.text))
{
player_error.text = "请输入更改的用户名!";
}
else if (renameInput.text == player_name.text)
{
player_error.text = "新用户名不能和旧用户名一样!";
}
else
{
bool success = await ApiClient.Get().UpdateUsername(renameInput.text);
if (success)
{
player_name.text = renameInput.text;
renameInput.text = "";
player_error.text = "修改成功!";
LeaderboardPanel.Get()?.RefreshPanel();
LeaderboardPanel.Get()?.RefreshLadderPanel();
}
else
{
player_error.text = ApiClient.Get().GetLastError();
}
}
}
public override void Show(bool instant = false)
{