private void DrawContent(int windowID) { display &= !GUI.Button(new Rect(windowRect.width - 24, 0, 19, 19), "X"); //Player color GUI.DragWindow(moveRect); GUI.Box(new Rect(2, 20, windowRect.width - 4, 20), string.Empty, sectionHeaderStyle); selectedTab = (OptionsTab)GUILayout.Toolbar((int)selectedTab, GetOptionsTabStrings(), toolbarBtnStyle); int windowY = 17; windowY += 20 + 2; int groupY = 0; if (selectedTab == OptionsTab.PLAYER) { GUI.BeginGroup(new Rect(10, windowY, windowRect.width - 20, 106)); groupY = 0; GUI.Label(new Rect(0, groupY, descWidth, 20), "Name:", descriptorStyle); plrNameStyle.normal.textColor = dmpSettings.playerColor; if (networkWorker != null && networkWorker.state == DarkMultiPlayerCommon.ClientState.RUNNING) { GUI.Label(new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 20, 20), dmpSettings.playerName, plrNameStyle); } else { string newName = GUI.TextField(new Rect( descWidth + sepWidth, 0, windowRect.width - (descWidth + sepWidth) - 20, 20), dmpSettings.playerName, plrNameStyle); if (!newName.Equals(dmpSettings.playerName)) { dmpSettings.playerName = newName; dmpSettings.SaveSettings(); } } groupY += 20 + 4; Color playerColor = dmpSettings.playerColor; GUI.Label(new Rect(0, groupY, descWidth, 20), "Red:", descriptorStyle); playerColor.r = GUI.HorizontalSlider(new Rect( descWidth + sepWidth, groupY + 5, windowRect.width - (descWidth + sepWidth) - 20, 12 ), dmpSettings.playerColor.r, 0, 1); groupY += 20; GUI.Label(new Rect(0, groupY, descWidth, 20), "Green:", descriptorStyle); playerColor.g = GUI.HorizontalSlider(new Rect( descWidth + sepWidth, groupY + 5, windowRect.width - (descWidth + sepWidth) - 20, 12 ), dmpSettings.playerColor.g, 0, 1); groupY += 20; GUI.Label(new Rect(0, groupY, descWidth, 20), "Blue:", descriptorStyle); playerColor.b = GUI.HorizontalSlider(new Rect( descWidth + sepWidth, groupY + 5, windowRect.width - (descWidth + sepWidth) - 20, 12 ), dmpSettings.playerColor.b, 0, 1); groupY += 22; if (GUI.Button(new Rect(0, groupY, windowRect.width - 20, 20), "Random Color", buttonStyle)) { playerColor = PlayerColorWorker.GenerateRandomColor(); } if (!playerColor.Equals(dmpSettings.playerColor)) { dmpSettings.playerColor = playerColor; dmpSettings.SaveSettings(); if (networkWorker != null && playerColorWorker != null && networkWorker.state == DarkMultiPlayerCommon.ClientState.RUNNING) { playerColorWorker.SendPlayerColorToServer(); } } GUI.EndGroup(); // windowY += 106 + 5; } if (selectedTab == OptionsTab.CACHE) { GUI.BeginGroup(new Rect(10, windowY, windowRect.width - 20, 84)); groupY = 0; GUI.Label(new Rect(0, groupY, descWidth, 20), "Current:", descriptorStyle); GUI.Label( new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 102, 20), Mathf.Round(universeSyncCache.currentCacheSize / 1024 / 1024).ToString() + " MB"); groupY += 20; GUI.Label(new Rect(0, groupY, descWidth, 20), "Maximum:", descriptorStyle); string newSizeStr = GUI.TextField(new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 152, 20), dmpSettings.cacheSize.ToString(), textFieldStyle); GUI.Label(new Rect(descWidth + sepWidth + 80, groupY, 100, 20), "MegaBytes (MB)"); int newSize; if (string.IsNullOrEmpty(newSizeStr)) { newSize = 1; } else { if (int.TryParse(newSizeStr, out newSize)) { if (newSize < 1) { newSize = 1; } else if (newSize > 1000000) { newSize = 1000000; } } else { newSize = 100000; } } if (newSize != dmpSettings.cacheSize) { dmpSettings.cacheSize = newSize; dmpSettings.SaveSettings(); } groupY += 22; GUI.Label(new Rect(0, groupY, descWidth, 20), "Manage:", descriptorStyle); if (GUI.Button(new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 20, 20), "Expire")) { universeSyncCache.ExpireCache(); } groupY += 22; if (GUI.Button(new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 20, 20), "Delete")) { universeSyncCache.DeleteCache(); } GUI.EndGroup(); } //Key bindings if (selectedTab == OptionsTab.CONTROLS) { GUI.BeginGroup(new Rect(10, windowY, windowRect.width - 20, 92)); groupY = 0; GUI.Label(new Rect(0, groupY, windowRect.width - 20, 48), "Click a button below to select the action you want to change. Then press a key to set the binding. To cancel, click the button again or press Escape.", noteStyle); groupY += 48; GUI.Label(new Rect(0, groupY, descWidth, 20), "Chat:", descriptorStyle); string chatKey = dmpSettings.chatKey.ToString(); if (settingChat) { chatKey = settingKeyMessage; if (Event.current.isKey) { if (Event.current.keyCode != KeyCode.Escape) { dmpSettings.chatKey = Event.current.keyCode; dmpSettings.SaveSettings(); } settingChat = false; } } if (GUI.Button(new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 20, 20), chatKey, buttonStyle)) { settingScreenshot = false; settingChat = !settingChat; } groupY += 22; GUI.Label(new Rect(0, groupY, descWidth, 20), "Screenshot:", descriptorStyle); string screenshotKey = dmpSettings.screenshotKey.ToString(); if (settingScreenshot) { screenshotKey = settingKeyMessage; if (Event.current.isKey) { if (Event.current.keyCode != KeyCode.Escape) { dmpSettings.screenshotKey = Event.current.keyCode; dmpSettings.SaveSettings(); } settingScreenshot = false; } } if (GUI.Button(new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 20, 20), screenshotKey, buttonStyle)) { settingChat = false; settingScreenshot = !settingScreenshot; } GUI.EndGroup(); } if (selectedTab == OptionsTab.ADVANCED) { GUI.Box(new Rect(2, windowY, windowRect.width - 4, 20), "Mod Control", sectionHeaderStyle); windowY += 22; GUI.BeginGroup(new Rect(10, windowY, windowRect.width - 20, 42)); groupY = 0; GUI.Label(new Rect(0, groupY, descWidth, 20), "Generate:", descriptorStyle); if (GUI.Button(new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 20, 20), "Whitelist", buttonStyle)) { modWorker.GenerateModControlFile(true, true); } groupY += 22; if (GUI.Button(new Rect(descWidth + sepWidth, groupY, windowRect.width - (descWidth + sepWidth) - 20, 20), "Blacklist", buttonStyle)) { modWorker.GenerateModControlFile(false, true); } GUI.EndGroup(); windowY += 47; GUI.Box(new Rect(2, windowY, windowRect.width - 4, 20), "Other", sectionHeaderStyle); windowY += 22; GUI.BeginGroup(new Rect(10, windowY, windowRect.width - 20, 200)); groupY = 0; bool toggleCompression = GUI.Toggle(new Rect(0, groupY, windowRect.width - 20, 20), dmpSettings.compressionEnabled, "Compress Network Traffic"); if (toggleCompression != dmpSettings.compressionEnabled) { dmpSettings.compressionEnabled = toggleCompression; dmpSettings.SaveSettings(); } groupY += 22; bool toggleRevert = GUI.Toggle(new Rect(0, groupY, windowRect.width - 20, 20), dmpSettings.revertEnabled, "Enable Revert"); if (toggleRevert != dmpSettings.revertEnabled) { dmpSettings.revertEnabled = toggleRevert; dmpSettings.SaveSettings(); } groupY += 22; if (GUI.Button(new Rect(0, groupY, windowRect.width - 20, 20), interpolatorMode, buttonStyle)) { int newSetting = (int)dmpSettings.interpolatorType + 1; //Overflow to 0 if (!Enum.IsDefined(typeof(InterpolatorType), newSetting)) { newSetting = 0; } dmpSettings.interpolatorType = (InterpolatorType)newSetting; dmpSettings.SaveSettings(); UpdateInterpolatorString(); } groupY += 22; universeConverterWindow.display = GUI.Toggle(new Rect(0, groupY, windowRect.width - 20, 20), universeConverterWindow.display, "Generate DMP universe from saved game...", buttonStyle); groupY += 22; if (GUI.Button(new Rect(0, groupY, windowRect.width - 20, 20), "Reset Disclaimer", buttonStyle)) { dmpSettings.disclaimerAccepted = 0; dmpSettings.SaveSettings(); } groupY += 22; if (GUI.Button(new Rect(0, groupY, windowRect.width - 20, 20), "Reset Serverlist Disclaimer")) { dmpSettings.serverlistMode = 0; dmpSettings.SaveSettings(); serverListDisclaimerWindow.SpawnDialog(); } groupY += 22; if (GUI.Button(new Rect(0, groupY, windowRect.width - 20, 20), toolbarMode, buttonStyle)) { int newSetting = (int)dmpSettings.toolbarType + 1; //Overflow to 0 if (!Enum.IsDefined(typeof(DMPToolbarType), newSetting)) { newSetting = 0; } dmpSettings.toolbarType = (DMPToolbarType)newSetting; dmpSettings.SaveSettings(); UpdateToolbarString(); toolbarSupport.DetectSettingsChange(); } groupY += 22; showDebugWindow = GUI.Toggle(new Rect(0, groupY, windowRect.width - 20, 20), showDebugWindow, "Show debug window", buttonStyle); #if DEBUG groupY += 22; if (GUI.Button(new Rect(0, groupY, windowRect.width - 20, 20), "Check missing parts", buttonStyle)) { modWorker.CheckCommonStockParts(); } #endif groupY += 22; GUI.EndGroup(); } }
private void DrawContent(int windowID) { GUILayout.BeginVertical(); GUI.DragWindow(moveRect); GUILayout.Space(20); GUILayout.BeginHorizontal(); GUILayout.Label("Player name:", labelOptions); string oldPlayerName = dmpSettings.playerName; dmpSettings.playerName = GUILayout.TextArea(dmpSettings.playerName, 32, textAreaStyle); // Max 32 characters if (oldPlayerName != dmpSettings.playerName) { dmpSettings.playerName = dmpSettings.playerName.Replace("\n", ""); renameEventHandled = false; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); //Draw add button string addMode = selectedSafe == -1 ? "Add" : "Edit"; string buttonAddMode = addMode; if (addingServer) { buttonAddMode = "Cancel"; } addingServer = GUILayout.Toggle(addingServer, buttonAddMode, buttonStyle); if (addingServer && !addingServerSafe) { if (selected != -1) { //Load the existing server settings serverName = dmpSettings.servers[selected].name; serverAddress = dmpSettings.servers[selected].address; serverPort = dmpSettings.servers[selected].port.ToString(); } } //Draw connect button if (networkWorkerDisconnected) { GUI.enabled = (selectedSafe != -1); if (GUILayout.Button("Connect", buttonStyle)) { connectEventHandled = false; } } else { if (GUILayout.Button("Disconnect", buttonStyle)) { disconnectEventHandled = false; } } //Draw remove button if (GUILayout.Button("Remove", buttonStyle)) { if (removeEventHandled == true) { removeEventHandled = false; } } GUI.enabled = true; optionsWindow.display = GUILayout.Toggle(optionsWindow.display, "Options", buttonStyle); if (dmpSettings.serverlistMode != -1) { if (dmpSettings.serverlistMode == 0) { if (GUILayout.Button("Servers", buttonStyle)) { serverListDisclaimerWindow.SpawnDialog(); } } else { serversWindow.display = GUILayout.Toggle(serversWindow.display, "Servers", buttonStyle); } } GUILayout.EndHorizontal(); if (addingServerSafe) { GUILayout.BeginHorizontal(); GUILayout.Label("Name:", labelOptions); serverName = GUILayout.TextArea(serverName, textAreaStyle); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Address:", labelOptions); serverAddress = GUILayout.TextArea(serverAddress, textAreaStyle).Trim(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Port:", labelOptions); serverPort = GUILayout.TextArea(serverPort, textAreaStyle).Trim(); GUILayout.EndHorizontal(); if (GUILayout.Button(addMode + " server", buttonStyle)) { if (addEventHandled == true) { if (selected == -1) { addEntry = new ServerEntry(); addEntry.name = serverName; addEntry.address = serverAddress; addEntry.port = 6702; Int32.TryParse(serverPort, out addEntry.port); addEventHandled = false; } else { editEntry = new ServerEntry(); editEntry.name = serverName; editEntry.address = serverAddress; editEntry.port = 6702; Int32.TryParse(serverPort, out editEntry.port); editEventHandled = false; } } } } GUILayout.Label("Servers:"); if (dmpSettings.servers.Count == 0) { GUILayout.Label("(None - Add a server first)"); } scrollPos = GUILayout.BeginScrollView(scrollPos, GUILayout.Width(WINDOW_WIDTH - 5), GUILayout.Height(WINDOW_HEIGHT - 100)); for (int serverPos = 0; serverPos < dmpSettings.servers.Count; serverPos++) { bool thisSelected = GUILayout.Toggle(serverPos == selectedSafe, dmpSettings.servers[serverPos].name, buttonStyle); if (selected == selectedSafe) { if (thisSelected) { if (selected != serverPos) { selected = serverPos; addingServer = false; } } else if (selected == serverPos) { selected = -1; addingServer = false; } } } GUILayout.EndScrollView(); //Draw status message GUILayout.Label(status, statusStyle); GUILayout.EndVertical(); }