TH1/Unity/Assets/Scripts/TH1_Logic/Editor/SteamEditorWindow.cs
2026-02-18 20:38:24 +08:00

188 lines
8.6 KiB
C#

/*
* @Author: 白哉
* @Description: 回放编辑器
* @Date: 2025年04月22日 星期二 15:04:14
* @Modify:
*/
using TH1_Logic.Core;
using TH1_Logic.Net;
using TH1_Logic.Steam;
using UnityEditor;
using UnityEngine;
namespace Logic.Editor
{
public class SteamEditorWindow : EditorWindow
{
// 滑条
private Vector2 _barPosition;
// 背景
private GUIStyle _redBoxStyle;
private GUIStyle _whiteBoxStyle;
[MenuItem("Tools/Steam 编辑器")]
private static void ShowWindow()
{
var window = CreateWindow<SteamEditorWindow>();
window.titleContent = new GUIContent("Steam 编辑器");
window.Show();
}
private void OnGUI()
{
if (_redBoxStyle == null)
{
_redBoxStyle = InspectorUtils.GetHelpBoxStyle();
InspectorUtils.AddBorder(_redBoxStyle, new Color(0.5f, 0.4f, 0.4f, 0.6f));
}
if (_whiteBoxStyle == null)
{
_whiteBoxStyle = InspectorUtils.GetHelpBoxStyle();
InspectorUtils.AddBorder(_whiteBoxStyle, new Color(1f, 1f, 1f, 0.2f));
}
var lobby = LobbyManager.Instance.Lobby as SteamLobbyManager;
if (lobby == null) return;
GUI.skin.button.wordWrap = true;
_barPosition = EditorGUILayout.BeginScrollView(_barPosition);
EditorGUILayout.BeginVertical(_whiteBoxStyle);
InspectorUtils.InspectorTextWidthRich("Steam 测试状态");
InspectorUtils.InspectorTextWidthRich($"Steam初始化: {(lobby.IsSteamInitialized ? "" : "")}");
InspectorUtils.InspectorTextWidthRich($"用户登录: {(lobby.IsloggedIn ? "" : "")}");
InspectorUtils.InspectorTextWidthRich($"Lobby 初始化: {(lobby.IsLobbyInitialized ? "" : "")}");
InspectorUtils.InspectorTextWidthRich($"P2P 初始化: {(SimpleP2P.Instance.IsInitialized ? "" : "")}");
InspectorUtils.InspectorTextWidthRich($"是否全部初始化完毕: {(lobby.IsInitialized() ? "" : "")}");
InspectorUtils.InspectorTextWidthRich($"用户: {lobby.SelfName}");
InspectorUtils.InspectorTextWidthRich($"ID: {lobby.SelfID}");
InspectorUtils.InspectorTextWidthRich("房间状态");
InspectorUtils.InspectorTextWidthRich($"当前状态: {lobby.GetCurState()}");
InspectorUtils.InspectorTextWidthRich($"在房间中: {(lobby.IsInLobby() ? "" : "")}");
InspectorUtils.InspectorTextWidthRich($"是房主: {(lobby.IsLobbyOwner() ? "" : "")}");
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
if (lobby.IsInitialized() && lobby.IsInLobby())
{
EditorGUILayout.BeginVertical(_whiteBoxStyle);
InspectorUtils.InspectorTextWidthRich($"房间ID: {lobby.GetCurState()}");
InspectorUtils.InspectorTextWidthRich($"成员数: {lobby.GetMemberCount()}/{lobby.GetMemberLimit()}");
InspectorUtils.InspectorTextWidthRich($"P2P连接数: {SimpleP2P.Instance.GetConnectionCount()}");
if (lobby.IsLobbyOwner())
{
foreach (var kv in lobby.GetAllMemberInfo())
{
EditorGUILayout.BeginHorizontal();
InspectorUtils.InspectorTextWidthRich($"{kv.Value.Name}");
if (InspectorUtils.InspectorButtonWithTextWidth("踢出"))
{
lobby.KickMember(kv.Key);
}
EditorGUILayout.EndHorizontal();
}
}
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
}
if (lobby.IsInitialized())
{
EditorGUILayout.BeginVertical(_whiteBoxStyle);
InspectorUtils.InspectorTextWidthRich($"测试按钮");
EditorGUILayout.BeginHorizontal();
// 房间操作按钮
if (!lobby.IsInLobby())
{
if (InspectorUtils.InspectorButtonWithTextWidth("创建房间"))
{
lobby.CreateLobby();
}
}
else
{
if (InspectorUtils.InspectorButtonWithTextWidth("离开房间")) lobby.LeaveLobby();
if (InspectorUtils.InspectorButtonWithTextWidth("测试")) GameNetSender.Instance.BroadcastString("testtesttest");
if (lobby.IsLobbyOwner())
{
if (InspectorUtils.InspectorButtonWithTextWidth("设置房间公开")) lobby.SetLobbyPublic();
if (InspectorUtils.InspectorButtonWithTextWidth("设置房间私密")) lobby.SetLobbyFriendsOnly();
}
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
if (lobby.IsInLobby())
{
// 好友操作
EditorGUILayout.BeginVertical(_whiteBoxStyle);
InspectorUtils.InspectorTextWidthRich($"好友列表");
var friends = lobby.GetOnlineFriendsDict();
foreach (var kv in friends)
{
EditorGUILayout.BeginHorizontal();
InspectorUtils.InspectorTextWidthRich($"{kv.Value.Name}");
if (InspectorUtils.InspectorButtonWithTextWidth("邀请"))
{
lobby.InviteFriend(kv.Key);
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
}
EditorGUILayout.BeginVertical(_whiteBoxStyle);
InspectorUtils.InspectorTextWidthRich($"测试改阵营");
var selfMemberId = LobbyManager.Instance.Lobby.GetSelfMemberId();
var civ = Main.Instance.MapConfig.GetMemberCiv(selfMemberId);
if (civ != null)
{
EditorGUILayout.BeginHorizontal();
if (InspectorUtils.InspectorButtonWithTextWidth("改1")) civ.CivId = 1;
if (InspectorUtils.InspectorButtonWithTextWidth("改2")) civ.CivId = 2;
if (InspectorUtils.InspectorButtonWithTextWidth("改3")) civ.CivId = 3;
if (InspectorUtils.InspectorButtonWithTextWidth("改4")) civ.CivId = 4;
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
}
EditorGUILayout.BeginVertical(_whiteBoxStyle);
EditorGUILayout.BeginHorizontal();
InspectorUtils.InspectorTextWidthRich($"服务器上的房间信息");
if (InspectorUtils.InspectorButtonWithTextWidth("搜索")) lobby.SearchPublicLobbies();
EditorGUILayout.EndHorizontal();
foreach (var lobbyInfo in lobby.LobbyListInfos)
{
EditorGUILayout.BeginVertical(_redBoxStyle);
InspectorUtils.InspectorTextWidthRich($"LobbyId : {lobbyInfo.LobbyId}");
InspectorUtils.InspectorTextWidthRich($"OwnerId : {lobbyInfo.OwnerId}");
InspectorUtils.InspectorTextWidthRich($"OwnerName : {lobbyInfo.OwnerName}");
InspectorUtils.InspectorTextWidthRich($"RoomName : {lobbyInfo.RoomName}");
InspectorUtils.InspectorTextWidthRich($"Version : {lobbyInfo.Version}");
InspectorUtils.InspectorTextWidthRich($"CurrentPlayers : {lobbyInfo.CurrentPlayers}");
InspectorUtils.InspectorTextWidthRich($"MaxPlayers : {lobbyInfo.MaxPlayers}");
InspectorUtils.InspectorTextWidthRich($"GameState : {lobbyInfo.GameState}");
if (InspectorUtils.InspectorButtonWithTextWidth("加入此房间"))
LobbyManager.Instance.Lobby.JoinLobbyById(lobbyInfo.LobbyId);
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
}
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
EditorGUILayout.EndScrollView();
}
}
}