2.10.9: beta notice in the MSCO menu and the in-game status bar

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-04 20:45:59 +02:00
co-authored by Claude Opus 5.5
parent d195a484d8
commit dd4e004d51
4 changed files with 33 additions and 2 deletions
+6
View File
@@ -1,5 +1,11 @@
# Changelog # Changelog
## 2.10.9
- **Beta-Hinweis:** im MSCO-Menü steht „BETA“ neben dem Schriftzug und ein kurzer Hinweis, dass Fehler auftreten
können; die Statusleiste im Spiel zeigt „MSCO BETA“
- Die Statusleiste baut ihren Text nur noch bei Änderungen neu (nicht jedes Frame)
## 2.10.8 ## 2.10.8
**Stabilität – weniger Hänger** **Stabilität – weniger Hänger**
+15
View File
@@ -73,6 +73,7 @@ namespace MSCO
GUIStyle dangerStyle; GUIStyle dangerStyle;
GUIStyle windowBox, sidebarBox, rowBox, accentBox, pillStyle, pillMutedStyle, chipOnStyle, chipOffStyle; GUIStyle windowBox, sidebarBox, rowBox, accentBox, pillStyle, pillMutedStyle, chipOnStyle, chipOffStyle;
GUIStyle featuredRowBox, pillFeaturedStyle; GUIStyle featuredRowBox, pillFeaturedStyle;
GUIStyle betaPillStyle, betaNoteStyle;
GUIStyle logoStyle, taglineStyle, navStyle, navActiveStyle, titleStyle, textStyle, captionStyle, GUIStyle logoStyle, taglineStyle, navStyle, navActiveStyle, titleStyle, textStyle, captionStyle,
fieldStyle, primaryStyle, secondaryStyle, statusStyle, tabStyle, headerCellStyle, fieldStyle, primaryStyle, secondaryStyle, statusStyle, tabStyle, headerCellStyle,
rowNameStyle, rowTagStyle, badgeStyle, toggleStyle, placeholderStyle; rowNameStyle, rowTagStyle, badgeStyle, toggleStyle, placeholderStyle;
@@ -193,6 +194,9 @@ namespace MSCO
textX = r.x + S(72); textX = r.x + S(72);
} }
GUI.Label(new Rect(textX, r.y + S(24), r.xMax - textX, S(40)), "MSCO", logoStyle); GUI.Label(new Rect(textX, r.y + S(24), r.xMax - textX, S(40)), "MSCO", logoStyle);
// Beta-Abzeichen direkt hinter dem Schriftzug
float logoWidth = logoStyle.CalcSize(new GUIContent("MSCO")).x;
GUI.Box(new Rect(textX + logoWidth + S(6), r.y + S(36), S(40), S(18)), "BETA", betaPillStyle);
GUI.Label(new Rect(r.x + S(22), r.y + S(70), r.width - S(30), S(20)), "MY SUMMER CAR ONLINE", taglineStyle); GUI.Label(new Rect(r.x + S(22), r.y + S(70), r.width - S(30), S(20)), "MY SUMMER CAR ONLINE", taglineStyle);
GUI.DrawTexture(new Rect(r.x + S(20), r.y + S(98), r.width - S(40), S(1)), texDivider); GUI.DrawTexture(new Rect(r.x + S(20), r.y + S(98), r.width - S(40), S(1)), texDivider);
@@ -206,6 +210,9 @@ namespace MSCO
y += S(44); y += S(44);
int modCount = ModLoader.All.Count; int modCount = ModLoader.All.Count;
if (NavButton(new Rect(r.x, y, r.width, S(42)), "Mods" + (modCount > 0 ? " (" + modCount + ")" : ""), page == Page.Mods)) page = Page.Mods; if (NavButton(new Rect(r.x, y, r.width, S(42)), "Mods" + (modCount > 0 ? " (" + modCount + ")" : ""), page == Page.Mods)) page = Page.Mods;
y += S(54);
GUI.Label(new Rect(r.x + S(22), y, r.width - S(40), S(64)),
"MSCO is still in beta - bugs can happen. If something goes wrong, please tell us.", betaNoteStyle);
// Eigenes Hauptmenü: Spiel beenden (die Knöpfe des Spiel-Menüs sind ausgeblendet) // Eigenes Hauptmenü: Spiel beenden (die Knöpfe des Spiel-Menüs sind ausgeblendet)
if (quitConfirm) if (quitConfirm)
@@ -1120,6 +1127,14 @@ namespace MSCO
logoStyle = Label(P(28), Color.white, FontStyle.Bold); logoStyle = Label(P(28), Color.white, FontStyle.Bold);
taglineStyle = Label(P(10), Muted, FontStyle.Bold); taglineStyle = Label(P(10), Muted, FontStyle.Bold);
betaPillStyle = UiTheme.Panel9(UiTheme.Accent, 4);
if (UiTheme.DynamicFont != null) betaPillStyle.font = UiTheme.DynamicFont;
betaPillStyle.normal.textColor = new Color(0.1f, 0.07f, 0.02f);
betaPillStyle.fontSize = P(10);
betaPillStyle.fontStyle = FontStyle.Bold;
betaPillStyle.alignment = TextAnchor.MiddleCenter;
betaNoteStyle = Label(P(11), Muted, FontStyle.Normal);
betaNoteStyle.wordWrap = true;
titleStyle = Label(P(24), Color.white, FontStyle.Bold); titleStyle = Label(P(24), Color.white, FontStyle.Bold);
textStyle = Label(P(13), Muted, FontStyle.Normal); textStyle = Label(P(13), Muted, FontStyle.Normal);
textStyle.wordWrap = true; textStyle.wordWrap = true;
+1 -1
View File
@@ -11,7 +11,7 @@ namespace MSCO
/// Version der Mod. Kleine Updates: nur die dritte Stelle erhöhen (2.9.1, 2.9.2 ...) - sie bleiben mit /// Version der Mod. Kleine Updates: nur die dritte Stelle erhöhen (2.9.1, 2.9.2 ...) - sie bleiben mit
/// Servern und Mitspielern derselben ersten zwei Stellen kompatibel. /// Servern und Mitspielern derselben ersten zwei Stellen kompatibel.
/// </summary> /// </summary>
public const string ModVersion = "2.10.8"; public const string ModVersion = "2.10.9";
/// <summary> /// <summary>
/// Netzwerk-Version (die ersten beiden Stellen). Nur erhöhen, wenn sich das Protokoll inkompatibel ändert - dann /// Netzwerk-Version (die ersten beiden Stellen). Nur erhöhen, wenn sich das Protokoll inkompatibel ändert - dann
/// auch GameServer.ModVersion im Server. /// auch GameServer.ModVersion im Server.
+11 -1
View File
@@ -2725,12 +2725,22 @@ namespace MSCO
InputLock.Set(overlays.AnyOpen && MenuHelper.InGame); InputLock.Set(overlays.AnyOpen && MenuHelper.InGame);
} }
string hudText;
int hudTextKey;
void DrawHud() void DrawHud()
{ {
// Statuszeile oben in der Mitte (links oben ist die Spielanzeige) // Statuszeile oben in der Mitte (links oben ist die Spielanzeige)
string state = IsFullyConnected ? "CONNECTED" : IsPeerReady ? "SYNCING..." : "WAITING"; string state = IsFullyConnected ? "CONNECTED" : IsPeerReady ? "SYNCING..." : "WAITING";
string text = "MSCO • " + state + " • " + (dedicated ? "Server" : IsHost ? "Host" : "Client") + " • " + // Text nur neu bauen, wenn sich etwas geändert hat (nicht jedes Frame neue Strings)
int key = (state.Length * 31 + players.Count) * 100003 + objects.Count + (dedicated ? 7 : IsHost ? 3 : 1) * 1000000007;
if (hudText == null || key != hudTextKey)
{
hudTextKey = key;
hudText = "MSCO BETA • " + state + " • " + (dedicated ? "Server" : IsHost ? "Host" : "Client") + " • " +
players.Count + " player(s) • " + objects.Count + " synced objects"; players.Count + " player(s) • " + objects.Count + " synced objects";
}
string text = hudText;
var rect = new Rect((Screen.width - 520) / 2f, 6, 520, 24); var rect = new Rect((Screen.width - 520) / 2f, 6, 520, 24);
if (hudBox == null) hudBox = UiTheme.Panel9(new Color(0.06f, 0.06f, 0.07f, 0.85f), 8); if (hudBox == null) hudBox = UiTheme.Panel9(new Color(0.06f, 0.06f, 0.07f, 0.85f), 8);
GUI.Box(rect, GUIContent.none, hudBox); GUI.Box(rect, GUIContent.none, hudBox);