Reushing the file rearangement

This commit is contained in:
Twirlbug 2023-07-02 16:09:07 -05:00
parent 8fd215aec0
commit da289b8f1c
2 changed files with 55 additions and 18 deletions

View file

@ -13,7 +13,11 @@ public class ChatUI : SRSingleton<ChatUI>
private float fadeTime; private float fadeTime;
private List<ChatMessage> messages = new List<ChatMessage>(); private List<ChatMessage> messages = new List<ChatMessage>();
private Vector2 chatScroll; private Vector2 chatScroll;
int maxWidth = 290;
/// <summary>
/// create a chat message to be displayed
/// </summary>
public class ChatMessage public class ChatMessage
{ {
public string Text; public string Text;
@ -27,52 +31,68 @@ public class ChatUI : SRSingleton<ChatUI>
Time = DateTime.Now; Time = DateTime.Now;
} }
} }
/// <summary>
/// On chat ui update triggered, handle it
/// </summary>
private void Update() private void Update()
{ {
//only display chat if in multiplayer mode
if (!Globals.IsMultiplayer) if (!Globals.IsMultiplayer)
{ {
openChat = false; openChat = false;
message = ""; message = "";
return; return;
} }
//if enter is pressed start chat typing mode
if (Input.GetKeyUp(KeyCode.Return)) if (Input.GetKeyUp(KeyCode.Return))
{ {
StartCoroutine(FocusChat()); StartCoroutine(FocusChat());
} }
} }
/// <summary>
/// Crreate the Chat gui
/// </summary>
private void OnGUI() private void OnGUI()
{ {
//only mess with the gui in multiplayer mode
if (!Globals.IsMultiplayer) return; if (!Globals.IsMultiplayer) return;
if (openChat) if (openChat)
{ {
GUILayout.BeginArea(new Rect(20, Screen.height / 2, 500, 300), GUI.skin.box); //draw chat area
GUILayout.BeginArea(new Rect(20, Screen.height / 2, maxWidth + 10, 300), GUI.skin.box);
chatScroll = GUILayout.BeginScrollView(chatScroll); chatScroll = GUILayout.BeginScrollView(chatScroll);
var skin = GUI.skin.box; var skin = GUI.skin.box;
skin.wordWrap = true; skin.wordWrap = true;
skin.alignment = TextAnchor.MiddleLeft; skin.alignment = TextAnchor.MiddleLeft;
//add each mesage into the chat box scroller
foreach (var msg in messages) foreach (var msg in messages)
{ {
GUILayout.Label(wrapString(msg.Text, 490), skin, GUILayout.MaxWidth(490)); GUILayout.Label(wrapString(msg.Text, maxWidth), skin, GUILayout.MaxWidth(maxWidth));
} }
GUILayout.EndScrollView(); GUILayout.EndScrollView();
//add display for text input area
GUI.SetNextControlName("ChatInput"); GUI.SetNextControlName("ChatInput");
message = GUILayout.TextField(message); message = GUILayout.TextField(message);
GUILayout.EndArea(); GUILayout.EndArea();
//focus the input
GUI.FocusControl("ChatInput"); GUI.FocusControl("ChatInput");
//watch for changes to the text input
Event e = Event.current; Event e = Event.current;
if (e.rawType == EventType.KeyUp && e.keyCode == KeyCode.Return) if (e.rawType == EventType.KeyUp && e.keyCode == KeyCode.Return)
{ {
//on send close chat
openChat = !openChat; openChat = !openChat;
if (!string.IsNullOrWhiteSpace(message)) if (!string.IsNullOrWhiteSpace(message))
{ {
//if server send message to all plauers
if (Globals.IsServer) if (Globals.IsServer)
{ {
//if server send it to the server
AddChatMessage(Globals.Username + ": " + message); AddChatMessage(Globals.Username + ": " + message);
new PacketPlayerChat() new PacketPlayerChat()
{ {
@ -81,6 +101,7 @@ public class ChatUI : SRSingleton<ChatUI>
} }
else else
{ {
//if player send it to the server
new PacketPlayerChat() new PacketPlayerChat()
{ {
message = message message = message
@ -90,13 +111,16 @@ public class ChatUI : SRSingleton<ChatUI>
} }
} }
} }
else else //if chat isnt open yet
{ {
GUILayout.BeginArea(new Rect(20, Screen.height / 2, 500, 300)); //draw chat area
GUILayout.BeginArea(new Rect(20, Screen.height / 2, maxWidth+ 10, 300));
chatScroll = GUILayout.BeginScrollView(chatScroll); chatScroll = GUILayout.BeginScrollView(chatScroll);
var skin = GUI.skin.box; var skin = GUI.skin.box;
skin.wordWrap = true; skin.wordWrap = true;
skin.alignment = TextAnchor.MiddleLeft; skin.alignment = TextAnchor.MiddleLeft;
//add each mesage into the chat box scroller
foreach (var msg in messages) foreach (var msg in messages)
{ {
if (msg.FadeTime > 0f) if (msg.FadeTime > 0f)
@ -105,26 +129,34 @@ public class ChatUI : SRSingleton<ChatUI>
var c = GUI.color; var c = GUI.color;
c.a = (msg.FadeTime / 5f); c.a = (msg.FadeTime / 5f);
GUI.color = c; GUI.color = c;
GUILayout.Label(wrapString(msg.Text, 490), skin, GUILayout.MaxWidth(490)); GUILayout.Label(wrapString(msg.Text, maxWidth), skin, GUILayout.MaxWidth(maxWidth));
} }
} }
GUILayout.EndScrollView(); GUILayout.EndScrollView();
GUILayout.EndArea(); GUILayout.EndArea();
} }
} }
/// <summary>
/// Add a chat message to be displayed
/// </summary>
/// <param name="message">Message to display</param>
public void AddChatMessage(string message) public void AddChatMessage(string message)
{ {
fadeTime = 10f; fadeTime = 10f;
messages.Add(new ChatMessage(message)); messages.Add(new ChatMessage(message));
chatScroll = new Vector2(0, 100000); chatScroll = new Vector2(0, 100000);
} }
/// <summary>
/// Trigger a full clear of the chat
/// </summary>
public void Clear() public void Clear()
{ {
messages.Clear(); messages.Clear();
} }
/// <summary>
/// Trigger focus on the chat box for when the uer hits enter
/// </summary>
private IEnumerator FocusChat() private IEnumerator FocusChat()
{ {
yield return new WaitForEndOfFrame(); yield return new WaitForEndOfFrame();
@ -133,6 +165,12 @@ public class ChatUI : SRSingleton<ChatUI>
GUI.FocusControl("ChatInput"); GUI.FocusControl("ChatInput");
} }
/// <summary>
/// Create the wrapped string to display in the chat box
/// </summary>
/// <param name="msg">Message to display</param>
/// <param name="width">Width of the chat box</param>
/// <returns></returns>
string wrapString(string msg, int width) string wrapString(string msg, int width)
{ {
string[] words = msg.Split(" "[0]); string[] words = msg.Split(" "[0]);

View file

@ -160,11 +160,11 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="ChatUI.cs" />
<Compile Include="Compression.cs" />
<Compile Include="Console\ConsoleInput.cs" /> <Compile Include="Console\ConsoleInput.cs" />
<Compile Include="Console\ConsoleWindow.cs" /> <Compile Include="Console\ConsoleWindow.cs" />
<Compile Include="Extensions.cs" /> <Compile Include="Custom UI\ChatUI.cs" />
<Compile Include="Custom UI\MultiplayerUI.cs" />
<Compile Include="Custom UI\TestUI.cs" />
<Compile Include="Globals.cs" /> <Compile Include="Globals.cs" />
<Compile Include="Lidgren.Network\Encryption\NetAESEncryption.cs" /> <Compile Include="Lidgren.Network\Encryption\NetAESEncryption.cs" />
<Compile Include="Lidgren.Network\Encryption\NetBlockEncryptionBase.cs" /> <Compile Include="Lidgren.Network\Encryption\NetBlockEncryptionBase.cs" />
@ -242,7 +242,6 @@
<Compile Include="Lidgren.Network\Platform\PlatformWinRT.cs" /> <Compile Include="Lidgren.Network\Platform\PlatformWinRT.cs" />
<Compile Include="MainSRML.cs" /> <Compile Include="MainSRML.cs" />
<Compile Include="MainStandalone.cs" /> <Compile Include="MainStandalone.cs" />
<Compile Include="MultiplayerUI.cs" />
<Compile Include="Networking\NetworkAccessDoor.cs" /> <Compile Include="Networking\NetworkAccessDoor.cs" />
<Compile Include="Networking\NetworkActor.cs" /> <Compile Include="Networking\NetworkActor.cs" />
<Compile Include="Networking\NetworkAmmo.cs" /> <Compile Include="Networking\NetworkAmmo.cs" />
@ -476,7 +475,6 @@
<Compile Include="Patches\Patch_WeaponVacuum.cs" /> <Compile Include="Patches\Patch_WeaponVacuum.cs" />
<Compile Include="Patches\Patch_WorldStateMasterSwitch.cs" /> <Compile Include="Patches\Patch_WorldStateMasterSwitch.cs" />
<Compile Include="Patches\Patch_ZoneDirector.cs" /> <Compile Include="Patches\Patch_ZoneDirector.cs" />
<Compile Include="PauseState.cs" />
<Compile Include="Properties\AssemblyInfo.cs"> <Compile Include="Properties\AssemblyInfo.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
@ -484,9 +482,10 @@
</Compile> </Compile>
<Compile Include="SRMP.cs" /> <Compile Include="SRMP.cs" />
<Compile Include="Console\SRMPConsole.cs" /> <Compile Include="Console\SRMPConsole.cs" />
<Compile Include="TestUI.cs" /> <Compile Include="Utils\Compression.cs" />
<Compile Include="UserData.cs" /> <Compile Include="Utils\Extensions.cs" />
<Compile Include="Utils.cs" /> <Compile Include="Utils\Objects.cs" />
<Compile Include="Utils\Utils.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Console\Console Commands.txt" /> <Content Include="Console\Console Commands.txt" />