diff --git a/Source/Client/Factions/FactionCreator.cs b/Source/Client/Factions/FactionCreator.cs index c0ddb767..c26ea721 100644 --- a/Source/Client/Factions/FactionCreator.cs +++ b/Source/Client/Factions/FactionCreator.cs @@ -30,6 +30,15 @@ public static void SendPawn(int playerId, Pawn p) pawnStore.GetOrAddNew(playerId).Add(p); } + [SyncMethod] + public static void ChangeFactionColor(Faction faction, Color color) + { + if (faction is not { IsPlayer: true }) + return; + + faction.color = color; + } + [SyncMethod] public static void CreateFaction(int playerId, FactionCreationData creationData) { @@ -286,4 +295,3 @@ public record FactionCreationData : ISyncSimple public List startingPossessions; public bool setupNextMapFromTickZero; } - diff --git a/Source/Client/Factions/FactionsWindow.cs b/Source/Client/Factions/FactionsWindow.cs index 6145e32e..436cae4b 100644 --- a/Source/Client/Factions/FactionsWindow.cs +++ b/Source/Client/Factions/FactionsWindow.cs @@ -51,6 +51,21 @@ void DrawFactionInLastRect(Faction faction) using (MpStyle.Set(GameFont.Medium)) Layouter.Label(faction.Name); + + var colorRect = Layouter.Rect(20f, 20f); + Widgets.DrawBoxSolid(colorRect.ContractedBy(2f), faction.Color); + Widgets.DrawBox(colorRect); + Widgets.DrawHighlightIfMouseover(colorRect); + + if (Widgets.ButtonInvisible(colorRect)) + { + Find.WindowStack.Add(new Dialog_ChooseFactionColor(color => + { + FactionCreator.ChangeFactionColor(faction, color); + }, faction.Color)); + } + + TooltipHandler.TipRegion(colorRect, "MpChangeFactionColor".Translate()); } Layouter.EndHorizontal();