diff --git a/.clang-format b/.clang-format index 5cfdd84709..61f8b23b2e 100644 --- a/.clang-format +++ b/.clang-format @@ -153,6 +153,160 @@ StatementMacros: TabWidth: 8 UseTab: Never --- +Language: CSharp +# BasedOnStyle: Google +AccessModifierOffset: -4 +AlignAfterOpenBracket: AlwaysBreak +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Left +AlignOperands: true +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: false +AllowAllConstructorInitializersOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: Always +AllowShortCaseLabelsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Always +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: false +BinPackParameters: false +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + # AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 100 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 8 +Cpp11BracedListStyle: true +DerivePointerAlignment: true +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Regroup +IncludeCategories: + - Regex: '^' + Priority: 2 + - Regex: '^<.*\.h>' + Priority: 1 + - Regex: '^<.*' + Priority: 2 + - Regex: '.*' + Priority: 3 +IncludeIsMainRegex: '([-_](test|unittest))?$' +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 4 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: All +ObjCBinPackProtocolList: Never +ObjCBlockIndentWidth: 4 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +RawStringFormats: + - Language: Cpp + Delimiters: + - cc + - CC + - cpp + - Cpp + - CPP + - 'c++' + - 'C++' + CanonicalDelimiter: '' + BasedOnStyle: google + - Language: TextProto + Delimiters: + - pb + - PB + - proto + - PROTO + EnclosingFunctions: + - EqualsProto + - EquivToProto + - PARSE_PARTIAL_TEXT_PROTO + - PARSE_TEST_PROTO + - PARSE_TEXT_PROTO + - ParseTextOrDie + - ParseTextProtoOrDie + CanonicalDelimiter: '' + BasedOnStyle: google +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Auto +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +--- Language: Proto BasedOnStyle: Google AlignConsecutiveDeclarations: true diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ButtonColors.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ButtonColors.cs index 5bd9c2d5b8..681f4b3ba3 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ButtonColors.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ButtonColors.cs @@ -2,10 +2,8 @@ using UnityEngine; using UnityEngine.UI; -public class ButtonColors -{ - public static ColorBlock SelectedColorBlock() - { +public class ButtonColors { + public static ColorBlock SelectedColorBlock() { ColorBlock block = new ColorBlock(); block.colorMultiplier = 1.0f; block.normalColor = Color.gray; @@ -14,8 +12,7 @@ public class ButtonColors return block; } - public static ColorBlock UnselectedColorBlock() - { + public static ColorBlock UnselectedColorBlock() { ColorBlock block = new ColorBlock(); block.colorMultiplier = 1.0f; diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/AvailableGameItem.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/AvailableGameItem.cs index 1a7d345755..3cbed89b0d 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/AvailableGameItem.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/AvailableGameItem.cs @@ -6,8 +6,7 @@ using TMPro; using UnityEngine.UI; using Net.Eagle0.Eagle.Api; -public class AvailableGameItem : MonoBehaviour -{ +public class AvailableGameItem : MonoBehaviour { public GameObject item; public TextMeshProUGUI gameIdField; public eagle.HeroDropdownController heroDropdownController; @@ -20,34 +19,24 @@ public class AvailableGameItem : MonoBehaviour private List availableLeaders; private long gameId; - public string SelectedLeader - { - get - { - if (heroDropdownController.SelectedHeroId == 0) - { + public string SelectedLeader { + get { + if (heroDropdownController.SelectedHeroId == 0) { var index = new System.Random().Next(availableLeaders.Count); return availableLeaders[index].Name; - } - else - { + } else { return availableLeaders[heroDropdownController.SelectedHeroId - 1].Name; } } } // Use this for initialization - void Start() - { - } + void Start() {} - public void JoinClicked() - { - JoinCallback(gameId, SelectedLeader); - } + public void JoinClicked() { JoinCallback(gameId, SelectedLeader); } - public void SetAvailableNewGame(long gameId, string playersString, List leaders) - { + public void + SetAvailableNewGame(long gameId, string playersString, List leaders) { availableLeaders = leaders; this.gameId = gameId; @@ -56,12 +45,14 @@ public class AvailableGameItem : MonoBehaviour joinButton.interactable = true; buttonText.text = "JOIN"; - List heroOptions = new List { new HeroView { Name = "Random", Id = 0, Profession = Net.Eagle0.Eagle.Common.Profession.NoProfession } }; - for (int i = 0; i < leaders.Count; i++) - { + List heroOptions = new List { new HeroView { + Name = "Random", + Id = 0, + Profession = Net.Eagle0.Eagle.Common.Profession.NoProfession + } }; + for (int i = 0; i < leaders.Count; i++) { var leader = leaders[i]; - heroOptions.Add(new HeroView - { + heroOptions.Add(new HeroView { Name = leader.Name, Profession = leader.Profession, Id = i + 1 diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/ConnectionHandler.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/ConnectionHandler.cs index d003ee90de..b8d085453b 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/ConnectionHandler.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/ConnectionHandler.cs @@ -14,48 +14,61 @@ using System.Threading; using eagle; using TMPro; -public class AuthInterceptor : Interceptor -{ +public class AuthInterceptor : Interceptor { private readonly string headerName = "Authorization"; private string headerValue; - public AuthInterceptor(String name, String password) - { + public AuthInterceptor(String name, String password) { String toEncode = name + ":" + password; headerValue = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(toEncode)); } - public override TResponse BlockingUnaryCall(TRequest request, ClientInterceptorContext context, BlockingUnaryCallContinuation continuation) - { + public override TResponse BlockingUnaryCall( + TRequest request, + ClientInterceptorContext context, + BlockingUnaryCallContinuation continuation) { return continuation(request, ContextWithHeaders(context)); } - public override AsyncUnaryCall AsyncUnaryCall(TRequest request, ClientInterceptorContext context, AsyncUnaryCallContinuation continuation) - { + public override AsyncUnaryCall AsyncUnaryCall( + TRequest request, + ClientInterceptorContext context, + AsyncUnaryCallContinuation continuation) { return continuation(request, ContextWithHeaders(context)); } - public override AsyncServerStreamingCall AsyncServerStreamingCall(TRequest request, ClientInterceptorContext context, AsyncServerStreamingCallContinuation continuation) - { + public override AsyncServerStreamingCall + AsyncServerStreamingCall( + TRequest request, + ClientInterceptorContext context, + AsyncServerStreamingCallContinuation continuation) { return continuation(request, ContextWithHeaders(context)); } - public override AsyncClientStreamingCall AsyncClientStreamingCall(ClientInterceptorContext context, AsyncClientStreamingCallContinuation continuation) - { + public override AsyncClientStreamingCall + AsyncClientStreamingCall( + ClientInterceptorContext context, + AsyncClientStreamingCallContinuation continuation) { return continuation(ContextWithHeaders(context)); } - public override AsyncDuplexStreamingCall AsyncDuplexStreamingCall(ClientInterceptorContext context, AsyncDuplexStreamingCallContinuation continuation) - { + public override AsyncDuplexStreamingCall + AsyncDuplexStreamingCall( + ClientInterceptorContext context, + AsyncDuplexStreamingCallContinuation continuation) { return continuation(ContextWithHeaders(context)); } - private ClientInterceptorContext ContextWithHeaders(ClientInterceptorContext original) where TRequest : class where TResponse : class - { + private ClientInterceptorContext ContextWithHeaders( + ClientInterceptorContext original) + where TRequest : class + where TResponse : class { var headers = new Metadata(); headers.Add(headerName, headerValue); - return new ClientInterceptorContext(original.Method, original.Host, original.Options.WithHeaders(headers)); + return new ClientInterceptorContext( + original.Method, + original.Host, + original.Options.WithHeaders(headers)); } }; -public class ConnectionHandler : MonoBehaviour -{ +public class ConnectionHandler : MonoBehaviour { public TMP_InputField urlField; public TMP_InputField nameField; public TMP_InputField passwordField; @@ -95,13 +108,13 @@ public class ConnectionHandler : MonoBehaviour const String nameKey = "nameKey"; const String passwordKey = "passwordKey"; - void Start() - { + void Start() { var currentResolution = Screen.currentResolution; var resolutions = Screen.resolutions; resolutionDropdown.ClearOptions(); - resolutionDropdown.AddOptions(resolutions.Select(r => $"{r.width} x {r.height} @{r.refreshRate}").ToList()); + resolutionDropdown.AddOptions( + resolutions.Select(r => $"{r.width} x {r.height} @{r.refreshRate}").ToList()); resolutionDropdown.value = resolutions.ToList().IndexOf(currentResolution); urlField.text = PlayerPrefs.GetString(urlKey, defaultUrl); @@ -118,38 +131,29 @@ public class ConnectionHandler : MonoBehaviour customBattlePanel.gameObject.SetActive(false); } - public void EditorButtonClicked() - { - SceneManager.LoadScene("Map Editor"); - } + public void EditorButtonClicked() { SceneManager.LoadScene("Map Editor"); } - public void ConnectEagle() - { - _internalConnectEagle(); - } + public void ConnectEagle() { _internalConnectEagle(); } - public void CustomBattle() - { - _internalCustomBattle(); - } + public void CustomBattle() { _internalCustomBattle(); } - public void OnApplicationQuit() - { - if (lobbyUpdatesThread != null) - { + public void OnApplicationQuit() { + if (lobbyUpdatesThread != null) { lobbyUpdatesThread.Abort(); lobbyUpdatesThread = null; } } - public void OnResolutionChanged(int dropdownIndex) - { + public void OnResolutionChanged(int dropdownIndex) { var newResolution = Screen.resolutions[dropdownIndex]; - Screen.SetResolution(newResolution.width, newResolution.height, true, newResolution.refreshRate); + Screen.SetResolution( + newResolution.width, + newResolution.height, + true, + newResolution.refreshRate); } - private void _handleGamesReply(GamesReply gamesReply) - { + private void _handleGamesReply(GamesReply gamesReply) { fetchedRunningGames = new List(); fetchedRunningGames.AddRange(gamesReply.RunningGames); @@ -158,100 +162,84 @@ public class ConnectionHandler : MonoBehaviour fetchedMaxPlayerCount = gamesReply.NewGameOptions.MaxSupportedPlayers; - MainQueue.Q.Enqueue(() => - { + MainQueue.Q.Enqueue(() => { awsResourceFetcher.Prefetch(fetchedNewGameLeaders.Select(a => a.ImagePath)); connectionPanel.gameObject.SetActive(false); gameSelectionPanel.gameObject.SetActive(true); // Set up running games table - foreach (Transform row in runningGamesListArea.transform) - { - Destroy(row.gameObject); - } - foreach (var runningGame in gamesReply.RunningGames) - { + foreach (Transform row in runningGamesListArea.transform) { Destroy(row.gameObject); } + foreach (var runningGame in gamesReply.RunningGames) { var listItem = Instantiate(runningGamesListItemPrefab); listItem.transform.SetParent(runningGamesListArea.transform); listItem.transform.localScale = new Vector3 { x = 1.0f, y = 1.0f, z = 1.0f }; listItem.GetComponent().SetRunningGame( - runningGame.GameId, - runningGame.Leader); + runningGame.GameId, + runningGame.Leader); listItem.GetComponent().GoCallback = this.SelectEagleGame; } // Set up available/waiting games table - foreach (Transform row in availableGamesListArea.transform) - { - Destroy(row.gameObject); - } + foreach (Transform row in availableGamesListArea.transform) { Destroy(row.gameObject); } - foreach (var waitingGame in gamesReply.WaitingGames) - { + foreach (var waitingGame in gamesReply.WaitingGames) { var listItem = Instantiate(waitingGamesListItemPrefab); listItem.transform.SetParent(availableGamesListArea.transform); listItem.transform.localScale = new Vector3 { x = 1.0f, y = 1.0f, z = 1.0f }; listItem.GetComponent().SetWaitingGame( - waitingGame.GameId, - string.Format("{0} / {1}", waitingGame.CurrentHumanPlayerCount, waitingGame.MaxHumanPlayerCount), - waitingGame.SelectedLeader); + waitingGame.GameId, + string.Format( + "{0} / {1}", + waitingGame.CurrentHumanPlayerCount, + waitingGame.MaxHumanPlayerCount), + waitingGame.SelectedLeader); } var createGameItem = Instantiate(createGameListItemPrefab); - //var singlePlayerListItem = Instantiate(availableGamesListItemPrefab); + // var singlePlayerListItem = Instantiate(availableGamesListItemPrefab); createGameItem.transform.SetParent(availableGamesListArea.transform); createGameItem.transform.localScale = new Vector3 { x = 1.0f, y = 1.0f, z = 1.0f }; createGameItem.GetComponent().SetCreationOptions( - fetchedNewGameLeaders, - fetchedMaxPlayerCount - ); + fetchedNewGameLeaders, + fetchedMaxPlayerCount); createGameItem.GetComponent().CreateCallback = this.CreateGame; - foreach (var availableGame in gamesReply.AvailableGames) - { + foreach (var availableGame in gamesReply.AvailableGames) { var listItem = Instantiate(availableGamesListItemPrefab); listItem.transform.SetParent(availableGamesListArea.transform); listItem.transform.localScale = new Vector3 { x = 1.0f, y = 1.0f, z = 1.0f }; listItem.GetComponent().SetAvailableNewGame( - availableGame.GameId, - string.Format("{0} / {1}", availableGame.CurrentHumanPlayerCount, availableGame.MaxHumanPlayerCount), - availableGame.AvailableLeaders.ToList()); + availableGame.GameId, + string.Format( + "{0} / {1}", + availableGame.CurrentHumanPlayerCount, + availableGame.MaxHumanPlayerCount), + availableGame.AvailableLeaders.ToList()); listItem.GetComponent().JoinCallback = this.JoinGame; } }); } - private void _handleLobbyAction(GamesReply reply, StatusCode sc) - { - if (sc == StatusCode.OK) - { - lock (pendingReplyLock) - { + private void _handleLobbyAction(GamesReply reply, StatusCode sc) { + if (sc == StatusCode.OK) { + lock (pendingReplyLock) { pendingReply = reply; Monitor.Pulse(pendingReplyLock); } - } - else - { + } else { // display something } } - private GamesReply WaitForGamesReply() - { - lock (pendingReplyLock) - { - while (listen) - { - if (pendingReply != null) - { + private GamesReply WaitForGamesReply() { + lock (pendingReplyLock) { + while (listen) { + if (pendingReply != null) { var reply = pendingReply; pendingReply = null; return reply; - } - else - { + } else { Monitor.Wait(pendingReplyLock); } } @@ -259,27 +247,18 @@ public class ConnectionHandler : MonoBehaviour } } - public void HandlePendingLobbyUpdates() - { + public void HandlePendingLobbyUpdates() { listen = true; var _ = eagleConnection.EnterLobby(_handleLobbyAction); - try - { - while (listen) - { + try { + while (listen) { var reply = WaitForGamesReply(); - if (reply != null) - { - _handleGamesReply(reply); - } + if (reply != null) { _handleGamesReply(reply); } } - } - finally - { - lock (pendingReplyLock) - { + } finally { + lock (pendingReplyLock) { eagleConnection.LeaveLobby(); listen = false; pendingReply = null; @@ -287,14 +266,9 @@ public class ConnectionHandler : MonoBehaviour } } - public void StartListeningForLobbyUpdates() - { - lock (pendingReplyLock) - { - if (lobbyUpdatesThread != null) - { - Debug.Log("Handle updates thread already exists!"); - } + public void StartListeningForLobbyUpdates() { + lock (pendingReplyLock) { + if (lobbyUpdatesThread != null) { Debug.Log("Handle updates thread already exists!"); } lobbyUpdatesThread = new Thread(HandlePendingLobbyUpdates); lobbyUpdatesThread.Start(); @@ -302,12 +276,9 @@ public class ConnectionHandler : MonoBehaviour } } - public void StopListeningForLobbyUpdates() - { - lock (pendingReplyLock) - { - if (lobbyUpdatesThread != null) - { + public void StopListeningForLobbyUpdates() { + lock (pendingReplyLock) { + if (lobbyUpdatesThread != null) { listen = false; Monitor.Pulse(pendingReplyLock); lobbyUpdatesThread.Join(50); @@ -316,9 +287,7 @@ public class ConnectionHandler : MonoBehaviour } } - private void _createConnection() - { - + private void _createConnection() { PlayerPrefs.SetString(urlKey, urlField.text); PlayerPrefs.SetString(nameKey, nameField.text); PlayerPrefs.SetString(passwordKey, passwordField.text); @@ -326,8 +295,7 @@ public class ConnectionHandler : MonoBehaviour eagleConnection = new EagleConnection(nameField.text, passwordField.text, urlField.text); } - private void _internalCustomBattle() - { + private void _internalCustomBattle() { _createConnection(); setCustomBattleActive(true); @@ -336,128 +304,93 @@ public class ConnectionHandler : MonoBehaviour customBattlePanel.SetActive(true); } - private void _internalConnectEagle() - { + private void _internalConnectEagle() { setLobbyActive(true); _createConnection(); - try - { + try { StartListeningForLobbyUpdates(); - } - catch (RpcException e) - { - MainQueue.Q.Enqueue(() => - { - errorPanel.Add(e); - }); - } - catch (Exception e) - { - MainQueue.Q.Enqueue(() => - { - errorPanel.Add(e); - }); + } catch (RpcException e) { + MainQueue.Q.Enqueue(() => { errorPanel.Add(e); }); + } catch (Exception e) { + MainQueue.Q.Enqueue(() => { errorPanel.Add(e); }); } } - public void JoinGame(long gameId, string leaderName) - { + public void JoinGame(long gameId, string leaderName) { var game = _internalJoinEagleGame(gameId, leaderName); } - public void CreateGame(string leaderName, int humanPlayerCount, int totalPlayerCount) - { + public void CreateGame(string leaderName, int humanPlayerCount, int totalPlayerCount) { var game = _internalCreateGame(leaderName, humanPlayerCount, totalPlayerCount); } - public void QuitButtonClicked() - { - Application.Quit(); - } + public void QuitButtonClicked() { Application.Quit(); } - private void _handleJoinGameResponse(JoinGameResponse response) - { - try - { - switch (response.Result) - { - case JoinGameResult.SuccessJoinGameResult: - break; + private void _handleJoinGameResponse(JoinGameResponse response) { + try { + switch (response.Result) { + case JoinGameResult.SuccessJoinGameResult: break; default: // FIXME: display something break; } - } - catch (Exception e) - { - Console.WriteLine(e.ToString()); - } + } catch (Exception e) { Console.WriteLine(e.ToString()); } } - private async Task _internalCreateGame(string desiredLeader, int humanPlayerCount, int totalPlayerCount) - { - try - { + private async Task + _internalCreateGame(string desiredLeader, int humanPlayerCount, int totalPlayerCount) { + try { var joinGameResponse = await eagleConnection.EagleGrpcClient.CreateGameAsync( - new CreateGameRequest - { - DesiredLeader = desiredLeader, - TotalPlayerCount = totalPlayerCount, - HumanPlayerCount = humanPlayerCount - }, - cancellationToken: EagleConnection.EagleCancellationToken - ); + new CreateGameRequest { + DesiredLeader = desiredLeader, + TotalPlayerCount = totalPlayerCount, + HumanPlayerCount = humanPlayerCount + }, + cancellationToken: EagleConnection.EagleCancellationToken); _handleJoinGameResponse(joinGameResponse); - } - catch (WebException e) - { + } catch (WebException e) { Debug.Log(String.Format("Caught exception in BeginGetResponse {0}", e.Message)); setLobbyActive(true); } } - private async Task _internalJoinEagleGame(long gameId, string leaderName) - { - try - { + private async Task _internalJoinEagleGame(long gameId, string leaderName) { + try { var joinGameResponse = await eagleConnection.EagleGrpcClient.JoinGameAsync( - new JoinGameRequest { GameId = gameId, DesiredLeader = leaderName }, - cancellationToken: EagleConnection.EagleCancellationToken - ); + new JoinGameRequest { GameId = gameId, DesiredLeader = leaderName }, + cancellationToken: EagleConnection.EagleCancellationToken); _handleJoinGameResponse(joinGameResponse); - } - catch (WebException e) - { + } catch (WebException e) { Debug.Log(String.Format("Caught exception in BeginGetResponse {0}", e.Message)); setLobbyActive(true); } } - private void setLobbyActive(bool active) - { + private void setLobbyActive(bool active) { runningGamesListArea.SetActive(active); availableGamesListArea.SetActive(active); StopListeningForLobbyUpdates(); } - private void setCustomBattleActive(bool active) - { + private void setCustomBattleActive(bool active) { StopListeningForLobbyUpdates(); customBattleHandler.SetActive(eagleConnection); } - public void SelectEagleGame(long gameId) - { + public void SelectEagleGame(long gameId) { setLobbyActive(false); var gameInfo = fetchedRunningGames.Find(gi => gi.GameId == gameId); - eagleCanvas.GetComponent().SetUpGame(gameInfo.GameId, gameInfo.FactionId, eagleConnection); + eagleCanvas.GetComponent().SetUpGame( + gameInfo.GameId, + gameInfo.FactionId, + eagleConnection); connectionCanvas.enabled = false; connectionCanvas.gameObject.SetActive(false); eagleCanvas.gameObject.SetActive(true); diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/CreateGameItem.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/CreateGameItem.cs index 3de8fd0800..b57b3a9f74 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/CreateGameItem.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/CreateGameItem.cs @@ -6,8 +6,7 @@ using TMPro; using UnityEngine.UI; using Net.Eagle0.Eagle.Api; -public class CreateGameItem : MonoBehaviour -{ +public class CreateGameItem : MonoBehaviour { public eagle.HeroDropdownController heroDropdownController; public TMP_Dropdown totalHumansDropdown; public TMP_Dropdown totalPlayersDropdown; @@ -18,64 +17,53 @@ public class CreateGameItem : MonoBehaviour private List availableLeaders; - public string SelectedLeader - { - get - { - if (heroDropdownController.SelectedHeroId == 0) - { + public string SelectedLeader { + get { + if (heroDropdownController.SelectedHeroId == 0) { var index = new System.Random().Next(availableLeaders.Count); return availableLeaders[index].Name; - } - else - { + } else { return availableLeaders[heroDropdownController.SelectedHeroId - 1].Name; } } } // Use this for initialization - void Start() - { + void Start() {} + + public void LeaderDropdownSelected(TMP_Dropdown dropdown) {} + + public void TotalPlayersDropdownSelected(TMP_Dropdown dropdown) { SetHumanPlayersDropdown(); } + + public void CreateClicked() { + CreateCallback( + SelectedLeader, + totalHumansDropdown.value + 1, + totalPlayersDropdown.value + 1); } - public void LeaderDropdownSelected(TMP_Dropdown dropdown) - { - - } - - public void TotalPlayersDropdownSelected(TMP_Dropdown dropdown) - { - SetHumanPlayersDropdown(); - } - - public void CreateClicked() - { - CreateCallback(SelectedLeader, totalHumansDropdown.value + 1, totalPlayersDropdown.value + 1); - } - - public void SetHumanPlayersDropdown() - { + public void SetHumanPlayersDropdown() { var currentValue = totalHumansDropdown.value; totalHumansDropdown.ClearOptions(); - totalHumansDropdown.AddOptions( - Enumerable.Range(1, totalPlayersDropdown.value + 1).Select(i => i.ToString()).ToList() - ); + totalHumansDropdown.AddOptions(Enumerable.Range(1, totalPlayersDropdown.value + 1) + .Select(i => i.ToString()) + .ToList()); totalHumansDropdown.value = Math.Min(totalPlayersDropdown.value, currentValue); } - public void SetCreationOptions(List leaders, int maxPlayerCount) - { + public void SetCreationOptions(List leaders, int maxPlayerCount) { this.availableLeaders = leaders; buttonText.text = "CREATE"; - List heroOptions = new List { new HeroView { Name = "Random", Id = 0, Profession = Net.Eagle0.Eagle.Common.Profession.NoProfession } }; - for (int i = 0; i < leaders.Count; i++) - { + List heroOptions = new List { new HeroView { + Name = "Random", + Id = 0, + Profession = Net.Eagle0.Eagle.Common.Profession.NoProfession + } }; + for (int i = 0; i < leaders.Count; i++) { var leader = leaders[i]; - heroOptions.Add(new HeroView - { + heroOptions.Add(new HeroView { Name = leader.Name, Profession = leader.Profession, Id = i + 1, @@ -88,8 +76,7 @@ public class CreateGameItem : MonoBehaviour totalPlayersDropdown.ClearOptions(); totalPlayersDropdown.AddOptions( - Enumerable.Range(1, maxPlayerCount).Select(i => i.ToString()).ToList() - ); + Enumerable.Range(1, maxPlayerCount).Select(i => i.ToString()).ToList()); totalPlayersDropdown.value = Math.Min(6, maxPlayerCount - 1); SetHumanPlayersDropdown(); diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/CustomBattleHandler.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/CustomBattleHandler.cs index 0e87d99aca..5fb8962738 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/CustomBattleHandler.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/CustomBattleHandler.cs @@ -16,8 +16,7 @@ using UnityEngine.UI; using Grpc.Core; using static Net.Eagle0.Eagle.Api.UpdateStreamRequest.Types; -public class CustomBattleHandler : MonoBehaviour -{ +public class CustomBattleHandler : MonoBehaviour { public GameObject yourArmiesArea; public GameObject aiArmiesArea; public Canvas shardokCanvas; @@ -46,27 +45,26 @@ public class CustomBattleHandler : MonoBehaviour private AWSResourceFetcher resourceFetcher; // Start is called before the first frame update - void Start() - { - } + void Start() {} - public void SetActive(EagleConnection conn) - { + public void SetActive(EagleConnection conn) { eagleConnection = conn; resourceFetcher = GetComponent(); resourceFetcher.EagleConnection = conn; var random = new System.Random(); const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - string gameId = new string(Enumerable.Repeat(chars, 25).Select(s => s[random.Next(s.Length)]).ToArray()); + string gameId = new string( + Enumerable.Repeat(chars, 25).Select(s => s[random.Next(s.Length)]).ToArray()); - gameRequest = new Net.Eagle0.Common.NewGameRequest - { + gameRequest = new Net.Eagle0.Common.NewGameRequest { GameId = gameId, Month = monthDropdown.value + 1 }; - MapNames = eagleConnection.EagleGrpcClient.GetHexMapNames(new Net.Eagle0.Eagle.Api.HexMapNamesRequest()).MapNames.ToList(); + MapNames = eagleConnection.EagleGrpcClient + .GetHexMapNames(new Net.Eagle0.Eagle.Api.HexMapNamesRequest()) + .MapNames.ToList(); MapNames.Sort(); mapDropdown.options = MapNames.Select(name => new TMP_Dropdown.OptionData(name)).ToList(); @@ -77,18 +75,15 @@ public class CustomBattleHandler : MonoBehaviour AddAIArmy(); aiArmiesArea.SetActive(true); - } - public async void StartCustomBattle() - { + public async void StartCustomBattle() { Dictionary heroNames = new Dictionary(); int nextEagleHeroId = 1; bool youAreDefender = defenderToggle.isOn; - var yourSetupInfo = new Net.Eagle0.Common.PlayerSetupInfo - { + var yourSetupInfo = new Net.Eagle0.Common.PlayerSetupInfo { UserName = eagleConnection.PlayerName, Defender = youAreDefender, EagleFactionId = 1, @@ -97,18 +92,15 @@ public class CustomBattleHandler : MonoBehaviour }; yourSetupInfo.VictoryConditions.Add(Net.Eagle0.Common.VictoryCondition.LastPlayerStanding); - if (youAreDefender) - { - yourSetupInfo.VictoryConditions.Add(Net.Eagle0.Common.VictoryCondition.WinAfterMaxRounds); - } - else - { - yourSetupInfo.VictoryConditions.Add(Net.Eagle0.Common.VictoryCondition.HoldsCriticalTiles); + if (youAreDefender) { + yourSetupInfo.VictoryConditions.Add( + Net.Eagle0.Common.VictoryCondition.WinAfterMaxRounds); + } else { + yourSetupInfo.VictoryConditions.Add( + Net.Eagle0.Common.VictoryCondition.HoldsCriticalTiles); } - for (int i = 0; i < yourUnitsController.RowCount; i++) - { - + for (int i = 0; i < yourUnitsController.RowCount; i++) { var unit = yourUnitsController.ComponentAt(i).Unit; unit.Hero.EagleHeroId = nextEagleHeroId; yourSetupInfo.Units.Add(unit); @@ -116,8 +108,7 @@ public class CustomBattleHandler : MonoBehaviour nextEagleHeroId++; } - var aiSetupInfo = new Net.Eagle0.Common.PlayerSetupInfo - { + var aiSetupInfo = new Net.Eagle0.Common.PlayerSetupInfo { UserName = "AI", Defender = !youAreDefender, EagleFactionId = 2, @@ -126,17 +117,14 @@ public class CustomBattleHandler : MonoBehaviour }; aiSetupInfo.VictoryConditions.Add(Net.Eagle0.Common.VictoryCondition.LastPlayerStanding); - if (youAreDefender) - { - aiSetupInfo.VictoryConditions.Add(Net.Eagle0.Common.VictoryCondition.HoldsCriticalTiles); - } - else - { + if (youAreDefender) { + aiSetupInfo.VictoryConditions.Add( + Net.Eagle0.Common.VictoryCondition.HoldsCriticalTiles); + } else { aiSetupInfo.VictoryConditions.Add(Net.Eagle0.Common.VictoryCondition.WinAfterMaxRounds); } - for (int i = 0; i < aiUnitsController.RowCount; i++) - { + for (int i = 0; i < aiUnitsController.RowCount; i++) { var unit = aiUnitsController.ComponentAt(i).Unit; unit.Hero.EagleHeroId = nextEagleHeroId; aiSetupInfo.Units.Add(unit); @@ -148,43 +136,36 @@ public class CustomBattleHandler : MonoBehaviour gameRequest.UserInfos.Clear(); List userInfos = - youAreDefender ? - new List() - { - aiSetupInfo, - yourSetupInfo - } : new List() - { - yourSetupInfo, - aiSetupInfo - }; + youAreDefender ? new List() { aiSetupInfo, yourSetupInfo } + : new List() { + yourSetupInfo, + aiSetupInfo + }; gameRequest.UserInfos.Add(userInfos); - var newGameResponse = eagleConnection.EagleGrpcClient.CreateCustomBattle(new CustomBattleRequest { NewGameRequest = gameRequest }); + var newGameResponse = eagleConnection.EagleGrpcClient.CreateCustomBattle( + new CustomBattleRequest { NewGameRequest = gameRequest }); Int16 yourPid = (Int16)(youAreDefender ? 1 : 0); HexMap map = null; - if (gameRequest.CustomMapBytes.IsEmpty) - { - map = (await eagleConnection.EagleGrpcClient.GetHexMapAsync(new HexMapRequest { MapName = gameRequest.HexMapName })).Map; - } - else - { + if (gameRequest.CustomMapBytes.IsEmpty) { + map = (await eagleConnection.EagleGrpcClient.GetHexMapAsync( + new HexMapRequest { MapName = gameRequest.HexMapName })) + .Map; + } else { map = HexMap.Parser.ParseFrom(gameRequest.CustomMapBytes); } - var players = new List() - { - new ShardokGameModel.PlayerWithHostility - { + var players = new List() { + new ShardokGameModel.PlayerWithHostility { playerId = yourPid, factionName = "You", hostility = Net.Eagle0.Common.Hostility.SelfHostility }, - new ShardokGameModel.PlayerWithHostility - { + new ShardokGameModel.PlayerWithHostility { playerId = youAreDefender ? 0 : 1, factionName = "AI", hostility = Net.Eagle0.Common.Hostility.EnemyHostility @@ -192,54 +173,54 @@ public class CustomBattleHandler : MonoBehaviour }; shardokModel = new ShardokGameModel( - gameId: newGameResponse.ShardokGameId, - playerId: yourPid, - ecI: new RemoteEagleClient( - gameId: newGameResponse.EagleGameId, - client: eagleConnection.EagleGrpcClient, - creds: eagleConnection.Credentials, + gameId: newGameResponse.ShardokGameId, playerId: yourPid, - token: EagleConnection.EagleCancellationToken), - map: map, - locationName: "Custom Map", - month: gameRequest.Month, - players: players, - heroNames: heroNames, - battalionNames: new Dictionary { { 0, "no name" } }, - headshotFetcher: (id) => resourceFetcher.GetImage("no_profession/male/000107.1333771077.png")); + ecI: new RemoteEagleClient( + gameId: newGameResponse.EagleGameId, + client: eagleConnection.EagleGrpcClient, + creds: eagleConnection.Credentials, + playerId: yourPid, + token: EagleConnection.EagleCancellationToken), + map: map, + locationName: "Custom Map", + month: gameRequest.Month, + players: players, + heroNames: heroNames, + battalionNames: new Dictionary { { 0, "no name" } }, + headshotFetcher: (id) => + resourceFetcher.GetImage("no_profession/male/000107.1333771077.png")); shardokCanvas.gameObject.SetActive(true); shardokCanvas.GetComponent().SetUpGame(shardokModel); - clientInterface = new RemoteEagleClient(newGameResponse.EagleGameId, eagleConnection.EagleGrpcClient, eagleConnection.Credentials, 1, EagleConnection.EagleCancellationToken); + clientInterface = new RemoteEagleClient( + newGameResponse.EagleGameId, + eagleConnection.EagleGrpcClient, + eagleConnection.Credentials, + 1, + EagleConnection.EagleCancellationToken); Register(); this.gameObject.SetActive(false); } - private void Register() - { - clientInterface.RegisterForUpdates(callback, 0, new List { - new ShardokViewStatus - { - ShardokGameId = shardokModel.GameId, - FilteredResultCount = shardokModel.History.Count - } - }); + private void Register() { + clientInterface.RegisterForUpdates( + callback, + 0, + new List { new ShardokViewStatus { + ShardokGameId = shardokModel.GameId, + FilteredResultCount = shardokModel.History.Count + } }); } - void callback(UpdateStreamResponse response, StatusCode statusCode) - { - if (response == null) - { + void callback(UpdateStreamResponse response, StatusCode statusCode) { + if (response == null) { Register(); - } - else - { - switch (response.ResponseDetailsCase) - { + } else { + switch (response.ResponseDetailsCase) { case UpdateStreamResponse.ResponseDetailsOneofCase.ShardokActionResultResponse: - foreach (var resp in response.ShardokActionResultResponse.ShardokGameResponses) - { + foreach (var resp in response.ShardokActionResultResponse + .ShardokGameResponses) { shardokModel.HandleUpdates(resp.ActionResultViews, resp.NewResultViewCount); shardokModel.HandleAvailableCommands(resp.AvailableCommands); } @@ -251,13 +232,11 @@ public class CustomBattleHandler : MonoBehaviour } } - private void SetUpMap(HexMap hexMap, string mapName, Google.Protobuf.ByteString mapBytes) - { + private void SetUpMap(HexMap hexMap, string mapName, Google.Protobuf.ByteString mapBytes) { attackerStartingPositions = new List(); - for (int i = 0; i < hexMap.AttackerStartingPositions.Count; i++) - { - if (hexMap.AttackerStartingPositions[i] != null && hexMap.AttackerStartingPositions[i].Positions.Count > 0) - { + for (int i = 0; i < hexMap.AttackerStartingPositions.Count; i++) { + if (hexMap.AttackerStartingPositions[i] != null && + hexMap.AttackerStartingPositions[i].Positions.Count > 0) { attackerStartingPositions.Add(i); } } @@ -267,74 +246,65 @@ public class CustomBattleHandler : MonoBehaviour UpdateStartingPositions(); } - public void MapSelected(int index) - { + public void MapSelected(int index) { string mapName = MapNames[index]; - var mapResponse = eagleConnection.EagleGrpcClient.GetHexMap(new Net.Eagle0.Eagle.Api.HexMapRequest - { - MapName = mapName - }); + var mapResponse = eagleConnection.EagleGrpcClient.GetHexMap( + new Net.Eagle0.Eagle.Api.HexMapRequest { MapName = mapName }); SetUpMap(mapResponse.Map, mapName, Google.Protobuf.ByteString.Empty); } - public void DefenderToggleClicked() - { - UpdateStartingPositions(); - } + public void DefenderToggleClicked() { UpdateStartingPositions(); } - public void UpdateStartingPositions() - { - var yourStartingPositions = defenderToggle.isOn ? defenderStartingPositions : attackerStartingPositions; - for (int i = 0; i < yourUnitsController.RowCount; i++) - { - yourUnitsController.ComponentAt(i).AvailableStartingPositions = yourStartingPositions; - yourUnitsController.ComponentAt(i).startingPosition.value = i / 10; + public void UpdateStartingPositions() { + var yourStartingPositions = + defenderToggle.isOn ? defenderStartingPositions : attackerStartingPositions; + for (int i = 0; i < yourUnitsController.RowCount; i++) { + yourUnitsController.ComponentAt(i).AvailableStartingPositions = + yourStartingPositions; + yourUnitsController.ComponentAt(i).startingPosition.value = + i / 10; } - var aiStartingPositions = defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; - for (int i = 0; i < aiUnitsController.RowCount; i++) - { - aiUnitsController.ComponentAt(i).AvailableStartingPositions = aiStartingPositions; - aiUnitsController.ComponentAt(i).startingPosition.value = i / 10; + var aiStartingPositions = + defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; + for (int i = 0; i < aiUnitsController.RowCount; i++) { + aiUnitsController.ComponentAt(i).AvailableStartingPositions = + aiStartingPositions; + aiUnitsController.ComponentAt(i).startingPosition.value = + i / 10; } } - private static int nextStartingPositionIndex(int startingPositionCount, EventBasedTable unitsTable) - { + private static int nextStartingPositionIndex( + int startingPositionCount, + EventBasedTable unitsTable) { int[] currentCounts = new int[startingPositionCount]; - for (int i = 0; i < unitsTable.RowCount; i++) - { - currentCounts[unitsTable.ComponentAt(i).startingPosition.value]++; + for (int i = 0; i < unitsTable.RowCount; i++) { + currentCounts[unitsTable.ComponentAt(i) + .startingPosition.value]++; } - for (int i = 0; i < startingPositionCount; i++) - { - if (currentCounts[i] < 10) - { - return i; - } + for (int i = 0; i < startingPositionCount; i++) { + if (currentCounts[i] < 10) { return i; } } // we couldn't find an available starting position throw new ArgumentException("too many units"); } - public void AddYourArmy() - { + public void AddYourArmy() { int index = yourUnitsController.RowCount; List startingPositions; int nextStartingPos; - if (defenderToggle.isOn) - { + if (defenderToggle.isOn) { startingPositions = defenderStartingPositions; nextStartingPos = 0; - } - else - { + } else { startingPositions = attackerStartingPositions; - nextStartingPos = nextStartingPositionIndex(startingPositions.Count, yourUnitsController); + nextStartingPos = + nextStartingPositionIndex(startingPositions.Count, yourUnitsController); } var row = yourUnitsController.AddRowWithComponent(); @@ -342,19 +312,15 @@ public class CustomBattleHandler : MonoBehaviour row.startingPosition.value = nextStartingPos; } - public void AddAIArmy() - { + public void AddAIArmy() { int index = aiUnitsController.RowCount; List startingPositions; int nextStartingPos; - if (defenderToggle.isOn) - { + if (defenderToggle.isOn) { startingPositions = attackerStartingPositions; nextStartingPos = nextStartingPositionIndex(startingPositions.Count, aiUnitsController); - } - else - { + } else { startingPositions = defenderStartingPositions; nextStartingPos = 0; } @@ -364,53 +330,43 @@ public class CustomBattleHandler : MonoBehaviour row.startingPosition.value = nextStartingPos; } - public void LoadGameRequest() - { - StartCoroutine(ShowLoadGameRequestCoroutine()); - } + public void LoadGameRequest() { StartCoroutine(ShowLoadGameRequestCoroutine()); } - private void LoadGameRequest(Net.Eagle0.Common.NewGameRequest request) - { + private void LoadGameRequest(Net.Eagle0.Common.NewGameRequest request) { var gameId = request.GameId + gameRequest.GameId; gameRequest = request; gameRequest.GameId = gameId; monthDropdown.value = gameRequest.Month - 1; - mapDropdown.value = mapDropdown.options.Select(opt => opt.text).ToList().IndexOf(gameRequest.HexMapName); + mapDropdown.value = mapDropdown.options.Select(opt => opt.text) + .ToList() + .IndexOf(gameRequest.HexMapName); MapSelected(mapDropdown.value); // FIXME: two hardcoded players var yourInfo = gameRequest.UserInfos.Last(); var aiInfo = gameRequest.UserInfos.First(); - if (!yourInfo.Defender) - { - throw new ArgumentException("Second player must be defender"); - } + if (!yourInfo.Defender) { throw new ArgumentException("Second player must be defender"); } defenderToggle.isOn = true; // FIXME: put some of this stuff straight into the gameinfo yourUnitsController.RowCount = yourInfo.Units.Count(); - for (int i = 0; i < yourInfo.Units.Count(); i++) - { - yourUnitsController.ComponentAt(i).AvailableStartingPositions = defenderToggle.isOn - ? defenderStartingPositions - : attackerStartingPositions; + for (int i = 0; i < yourInfo.Units.Count(); i++) { + yourUnitsController.ComponentAt(i).AvailableStartingPositions = + defenderToggle.isOn ? defenderStartingPositions : attackerStartingPositions; yourUnitsController.ComponentAt(i).Unit = yourInfo.Units[i]; } aiUnitsController.RowCount = aiInfo.Units.Count(); - for (int i = 0; i < aiInfo.Units.Count(); i++) - { - aiUnitsController.ComponentAt(i).AvailableStartingPositions = defenderToggle.isOn - ? attackerStartingPositions - : defenderStartingPositions; + for (int i = 0; i < aiInfo.Units.Count(); i++) { + aiUnitsController.ComponentAt(i).AvailableStartingPositions = + defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; aiUnitsController.ComponentAt(i).Unit = aiInfo.Units[i]; } } - public void PerfButtonClicked() - { + public void PerfButtonClicked() { var index = MapNames.IndexOf("Alah"); mapDropdown.value = index; MapSelected(index); @@ -418,21 +374,21 @@ public class CustomBattleHandler : MonoBehaviour yourUnitsController.RowCount = 0; aiUnitsController.RowCount = 0; - for (int i = 0; i < 6; i++) - { + for (int i = 0; i < 6; i++) { var rowIndex = i; var aiRow = aiUnitsController.AddRowWithComponent(); - aiRow.AvailableStartingPositions = defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; + aiRow.AvailableStartingPositions = + defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; aiRow.professionDropdown.value = i + 1; var yourRow = yourUnitsController.AddRowWithComponent(); - yourRow.AvailableStartingPositions = defenderToggle.isOn ? defenderStartingPositions : attackerStartingPositions; + yourRow.AvailableStartingPositions = + defenderToggle.isOn ? defenderStartingPositions : attackerStartingPositions; } } - public void RiversButtonClicked() - { + public void RiversButtonClicked() { var index = MapNames.IndexOf("Chipingia"); mapDropdown.value = index; MapSelected(index); @@ -442,51 +398,41 @@ public class CustomBattleHandler : MonoBehaviour var firstRow = aiUnitsController.AddRowWithComponent(); firstRow.SelectedProfession = Net.Eagle0.Common.CommonProfession.Engineer; firstRow.SelectedBattalionTypeId = Net.Eagle0.Common.CommonBattalionTypeId.HeavyInfantry; - firstRow.AvailableStartingPositions = defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; + firstRow.AvailableStartingPositions = + defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; - for (int i = 1; i < 5; i++) - { + for (int i = 1; i < 5; i++) { var rowIndex = i; var row = aiUnitsController.AddRowWithComponent(); row.SelectedBattalionTypeId = Net.Eagle0.Common.CommonBattalionTypeId.HeavyCavalry; - row.AvailableStartingPositions = defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; + row.AvailableStartingPositions = + defenderToggle.isOn ? attackerStartingPositions : defenderStartingPositions; } } - public void CustomMapToggleClicked() - { + public void CustomMapToggleClicked() { chooseMapButton.gameObject.SetActive(customMapToggle.isOn); mapDropdown.gameObject.SetActive(!customMapToggle.isOn); - if (customMapToggle.isOn) - { - if (gameRequest.CustomMapBytes.IsEmpty) - { - ChooseCustomMapButtonClicked(); - } - } - else - { + if (customMapToggle.isOn) { + if (gameRequest.CustomMapBytes.IsEmpty) { ChooseCustomMapButtonClicked(); } + } else { gameRequest.CustomMapBytes = ByteString.Empty; } } - public void ChooseCustomMapButtonClicked() - { - StartCoroutine(ShowLoadCustomMapCoroutine()); - } + public void ChooseCustomMapButtonClicked() { StartCoroutine(ShowLoadCustomMapCoroutine()); } - IEnumerator ShowLoadGameRequestCoroutine() - { + IEnumerator ShowLoadGameRequestCoroutine() { var initialPath = PlayerPrefs.GetString("gameRequestLocation", null); FileBrowser.SetFilters(true, new FileBrowser.Filter("Game Requests", ".e0gr")); FileBrowser.SetDefaultFilter(".e0gr"); - yield return FileBrowser.WaitForLoadDialog(FileBrowser.PickMode.Files, false, initialPath, null); + yield return FileBrowser + .WaitForLoadDialog(FileBrowser.PickMode.Files, false, initialPath, null); - if (FileBrowser.Success) - { + if (FileBrowser.Success) { var path = FileBrowser.Result[0]; var dirPath = Path.GetDirectoryName(path); PlayerPrefs.SetString("gameRequestLocation", dirPath); @@ -496,16 +442,15 @@ public class CustomBattleHandler : MonoBehaviour } } - IEnumerator ShowLoadCustomMapCoroutine() - { + IEnumerator ShowLoadCustomMapCoroutine() { var initialPath = PlayerPrefs.GetString("mapLocation", null); FileBrowser.SetFilters(true, new FileBrowser.Filter("Maps", ".e0mj")); FileBrowser.SetDefaultFilter(".e0mj"); - yield return FileBrowser.WaitForLoadDialog(FileBrowser.PickMode.Files, false, initialPath, null); + yield return FileBrowser + .WaitForLoadDialog(FileBrowser.PickMode.Files, false, initialPath, null); - if (FileBrowser.Success) - { + if (FileBrowser.Success) { var path = FileBrowser.Result[0]; var mapJson = File.ReadAllText(path); @@ -514,16 +459,13 @@ public class CustomBattleHandler : MonoBehaviour var map = jp.Parse(mapJson); Google.Protobuf.ByteString bs = null; - using (var stream = new MemoryStream()) - { + using (var stream = new MemoryStream()) { map.WriteTo(stream); bs = Google.Protobuf.ByteString.CopyFrom(stream.ToArray()); } SetUpMap(map, "Custom", bs); - } - else - { + } else { customMapToggle.isOn = false; CustomMapToggleClicked(); } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/RunningGameItem.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/RunningGameItem.cs index 59e880aaec..e4d25b7ab7 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/RunningGameItem.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/RunningGameItem.cs @@ -4,8 +4,7 @@ using TMPro; using UnityEngine.UI; using Net.Eagle0.Eagle.Api; -public class RunningGameItem : MonoBehaviour -{ +public class RunningGameItem : MonoBehaviour { public GameObject item; public TextMeshProUGUI gameIdField; public TextMeshProUGUI leaderField; @@ -16,21 +15,17 @@ public class RunningGameItem : MonoBehaviour private long gameId; // Use this for initialization - void Start() - { + void Start() {} - } + public void GoClicked() { GoCallback(gameId); } - public void GoClicked() - { - GoCallback(gameId); - } - - public void SetRunningGame(long gameId, AvailableLeader leader) - { + public void SetRunningGame(long gameId, AvailableLeader leader) { this.gameId = gameId; gameIdField.text = string.Format("{0:X}", gameId); - leaderField.text = string.Format("{0} ({1})", leader.Name, eagle.DisplayNames.ProfessionNames[leader.Profession]); + leaderField.text = string.Format( + "{0} ({1})", + leader.Name, + eagle.DisplayNames.ProfessionNames[leader.Profession]); } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/WaitingGameItem.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/WaitingGameItem.cs index fb1e0df20c..c62b4fb24c 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/WaitingGameItem.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionHandler/WaitingGameItem.cs @@ -2,24 +2,22 @@ using TMPro; using Net.Eagle0.Eagle.Api; -public class WaitingGameItem : MonoBehaviour -{ +public class WaitingGameItem : MonoBehaviour { public GameObject item; public TextMeshProUGUI gameIdField; public TextMeshProUGUI leaderField; public TextMeshProUGUI playerCountField; // Use this for initialization - void Start() - { + void Start() {} - } - - public void SetWaitingGame(long gameId, string playersString, AvailableLeader leader) - { + public void SetWaitingGame(long gameId, string playersString, AvailableLeader leader) { gameIdField.text = string.Format("{0:X}", gameId); playerCountField.text = playersString; - leaderField.text = string.Format("{0} ({1})", leader.Name, eagle.DisplayNames.ProfessionNames[leader.Profession]); + leaderField.text = string.Format( + "{0} ({1})", + leader.Name, + eagle.DisplayNames.ProfessionNames[leader.Profession]); } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionKiller.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionKiller.cs index 6afaf63825..0776476ae8 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionKiller.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/ConnectionKiller.cs @@ -3,36 +3,29 @@ using Grpc.Core; using UnityEditor; using UnityEngine; -public class ConnectionKiller : MonoBehaviour -{ - private static CancellationTokenSource EagleGlobalShutdownTokenSource = new CancellationTokenSource(); - private static CancellationTokenSource ShardokGlobalShutdownTokenSource = new CancellationTokenSource(); +public class ConnectionKiller : MonoBehaviour { + private static CancellationTokenSource EagleGlobalShutdownTokenSource = + new CancellationTokenSource(); + private static CancellationTokenSource ShardokGlobalShutdownTokenSource = + new CancellationTokenSource(); public static CancellationToken EagleCancellationToken => EagleGlobalShutdownTokenSource.Token; - public static CancellationToken ShardokCancellationToken => ShardokGlobalShutdownTokenSource.Token; + public static CancellationToken ShardokCancellationToken => + ShardokGlobalShutdownTokenSource.Token; - public void OnApplicationQuit() - { - ShutdownAll(); - } + public void OnApplicationQuit() { ShutdownAll(); } #if UNITY_EDITOR - void OnPlayModeStateChanged(PlayModeStateChange state) - { - if (state == PlayModeStateChange.ExitingPlayMode) - { - ShutdownAll(); - } + void OnPlayModeStateChanged(PlayModeStateChange state) { + if (state == PlayModeStateChange.ExitingPlayMode) { ShutdownAll(); } } #endif - public static void ShutdownShardok() - { + public static void ShutdownShardok() { ShardokGlobalShutdownTokenSource.Cancel(); ShardokGlobalShutdownTokenSource = new CancellationTokenSource(); } - private static void ShutdownAll() - { + private static void ShutdownAll() { System.Console.Out.WriteLine("Attempting GRPC shutdown."); EagleGlobalShutdownTokenSource.Cancel(); ShardokGlobalShutdownTokenSource.Cancel(); diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/BattalionUtils.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/BattalionUtils.cs index 3a85e2437b..6cd1f519e6 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/BattalionUtils.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/BattalionUtils.cs @@ -3,30 +3,20 @@ using System.Collections.Generic; using Net.Eagle0.Eagle.Api; using UnityEngine; -namespace eagle -{ - public static class BattalionUtils - { - public static readonly IComparer BattalionComparer = new _BattalionComparer(); +namespace eagle { + public static class BattalionUtils { + public static readonly IComparer BattalionComparer = + new _BattalionComparer(); - private class _BattalionComparer : Comparer - { - public override int Compare(BattalionView x, BattalionView y) - { - if (x.Type.CompareTo(y.Type) != 0) - { + private class _BattalionComparer : Comparer { + public override int Compare(BattalionView x, BattalionView y) { + if (x.Type.CompareTo(y.Type) != 0) { return x.Type.CompareTo(y.Type); - } - else if (x.Size.CompareTo(y.Size) != 0) - { + } else if (x.Size.CompareTo(y.Size) != 0) { return -x.Size.CompareTo(y.Size); - } - else if ((x.Training + x.Armament).CompareTo(y.Training + y.Armament) != 0) - { + } else if ((x.Training + x.Armament).CompareTo(y.Training + y.Armament) != 0) { return -(x.Training + x.Armament).CompareTo(y.Training + y.Armament); - } - else - { + } else { return 0; } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandButtonController.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandButtonController.cs index fe01c57082..1637184f1a 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandButtonController.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandButtonController.cs @@ -1,23 +1,17 @@ using UnityEngine; using UnityEngine.UI; -public class CommandButtonController : MonoBehaviour -{ +public class CommandButtonController : MonoBehaviour { public Button buttonPrefab; public eagle.EagleGameController gameController; - void Start() - { - ClearButtonContents(); - } + void Start() { ClearButtonContents(); } - public void SetButtonContents(GUIContent[] contents) - { + public void SetButtonContents(GUIContent[] contents) { ClearButtonContents(); int contentsCount = contents.Length; - for (int i = 0; i < contentsCount; i++) - { + for (int i = 0; i < contentsCount; i++) { int buttonIndex = i; var newButton = Instantiate(buttonPrefab, gameObject.transform); newButton.GetComponentInChildren().texture = contents[i].image; @@ -25,11 +19,9 @@ public class CommandButtonController : MonoBehaviour } } - public void ClearButtonContents() - { + public void ClearButtonContents() { int childCount = gameObject.transform.childCount; - for (int i = childCount - 1; i >= 0; i--) - { + for (int i = childCount - 1; i >= 0; i--) { GameObject.Destroy(transform.GetChild(i).gameObject); } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandPanelController.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandPanelController.cs index e99ba65f8d..74ed200bc2 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandPanelController.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandPanelController.cs @@ -6,29 +6,27 @@ using TMPro; using System.Collections.Generic; using System.Linq; -namespace eagle -{ +namespace eagle { using CommandType = AvailableCommand.SealedValueOneofCase; - public class CommandPanelController : MonoBehaviour - { + public class CommandPanelController : MonoBehaviour { public EagleGameController mainController; public CommandSelector _selector; - public CommandSelector Selector - { + public CommandSelector Selector { get => _selector; - private set - { - if (_selector != value) - { + private + set { + if (_selector != value) { if (_selector != null) _selector.Hide(); _selector = value; if (_selector != null) _selector.Show(); } } } - public SelectedCommand SelectedCommand { get { return Selector == null ? null : Selector.Command; } } + public SelectedCommand SelectedCommand { + get { return Selector == null ? null : Selector.Command; } + } public TMP_Text headerLabel; public Button commitCommandButton; @@ -39,27 +37,20 @@ namespace eagle public CommandWarningPanelController commandWarningPanelController; private AvailableCommand _availableCommand; - public AvailableCommand AvailableCommand - { + public AvailableCommand AvailableCommand { get => _availableCommand; - private set - { - if (_availableCommand != value) - { - _availableCommand = value; - } + private + set { + if (_availableCommand != value) { _availableCommand = value; } } } - public void SetAvailableCommandAndSelector(AvailableCommand cmd, CommandSelector sel) - { + public void SetAvailableCommandAndSelector(AvailableCommand cmd, CommandSelector sel) { AvailableCommand = cmd; Selector = sel; - try - { - if (AvailableCommand == null) - { + try { + if (AvailableCommand == null) { Selector = null; headerLabel.text = null; return; @@ -67,18 +58,13 @@ namespace eagle Selector.UpdateAvailableCommand(Model, AvailableCommand); headerLabel.text = Selector.HeaderString; - } - catch (Exception e) - { - errorPanel.Add(e); - } + } catch (Exception e) { errorPanel.Add(e); } } public List AppropriateSelectors(AvailableCommand cmd) => - commandSelectors.FindAll(sel => sel.IsAppropriateFor(cmd)); + commandSelectors.FindAll(sel => sel.IsAppropriateFor(cmd)); - public List ButtonContentsForCommand(AvailableCommand cmd) - { + public List ButtonContentsForCommand(AvailableCommand cmd) { return (from sel in AppropriateSelectors(cmd) where sel.ButtonImage != null select new GUIContent(sel.ButtonImage, sel.HeaderString)).ToList(); @@ -86,97 +72,71 @@ namespace eagle private List commandSelectors; - public void Awake() - { + public void Awake() { commandSelectors = new List(); - foreach (Transform child in gameObject.transform) - { + foreach (Transform child in gameObject.transform) { var sel = child.gameObject.GetComponent(); - if (sel != null) - { - commandSelectors.Add(sel); - } + if (sel != null) { commandSelectors.Add(sel); } } - foreach (var kvp in commandSelectors) - { + foreach (var kvp in commandSelectors) { kvp.SetFocusInfoPanelController(focusPanel); kvp.gameObject.SetActive(true); kvp.Hide(); } } - public void Start() - { - foreach (var kvp in commandSelectors) - { - kvp.gameObject.SetActive(false); - } + public void Start() { + foreach (var kvp in commandSelectors) { kvp.gameObject.SetActive(false); } } - public void PointerEnteredCommitButton() - { - if (Selector != null) - { - if (!Selector.EnableCommitButton) - { - if (Selector.DisabledCommitButtonReason == null || Selector.DisabledCommitButtonReason == "") - { - commandWarningPanelController.SetWarning("Invalid", "CROSBY NEEDS TO PUT SOME TEXT HERE"); + public void PointerEnteredCommitButton() { + if (Selector != null) { + if (!Selector.EnableCommitButton) { + if (Selector.DisabledCommitButtonReason == null || + Selector.DisabledCommitButtonReason == "") { + commandWarningPanelController.SetWarning( + "Invalid", + "CROSBY NEEDS TO PUT SOME TEXT HERE"); + } else { + commandWarningPanelController.SetWarning( + "Invalid", + Selector.DisabledCommitButtonReason); } - else - { - commandWarningPanelController.SetWarning("Invalid", Selector.DisabledCommitButtonReason); - } - } - else if (Selector.WarnOnCommitButton) - { - commandWarningPanelController.SetWarning("Are you sure?", Selector.CommitWarningText); + } else if (Selector.WarnOnCommitButton) { + commandWarningPanelController.SetWarning( + "Are you sure?", + Selector.CommitWarningText); } } } - public void PointerExitedCommitButton() - { - commandWarningPanelController.ClearWarning(); - } + public void PointerExitedCommitButton() { commandWarningPanelController.ClearWarning(); } - public void OnGUI() - { + public void OnGUI() { var eventType = Event.current.type; - try - { - if (Selector == null) - { + try { + if (Selector == null) { commitCommandButton.gameObject.SetActive(false); - } - else - { + } else { bool disableWarningPanel = !commitCommandButton.gameObject.activeSelf; - if (Selector.WarnOnCommitButton) - { - commitButtonText.text = $"{Selector.CommitButtonString}"; - } - else - { + if (Selector.WarnOnCommitButton) { + commitButtonText.text = + $"{Selector.CommitButtonString}"; + } else { commitButtonText.text = Selector.CommitButtonString; } commitCommandButton.gameObject.SetActive(true); commitCommandButton.interactable = Selector.EnableCommitButton; - if (disableWarningPanel) - { - MainQueue.Q.EnqueueForNextUpdate(() => - { - commandWarningPanelController.ClearWarning(); - }); + if (disableWarningPanel) { + MainQueue.Q.EnqueueForNextUpdate( + () => { commandWarningPanelController.ClearWarning(); }); } } - } - catch (Exception e) - { + } catch (Exception e) { Debug.Log($"Event type is {eventType}"); errorPanel.Add(e); } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/AlmsCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/AlmsCommandSelector.cs index be0678534a..069e4643d9 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/AlmsCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/AlmsCommandSelector.cs @@ -5,13 +5,11 @@ using TMPro; using UnityEngine.UI; using System; -namespace eagle -{ +namespace eagle { using HeroId = Int32; using ProvinceId = Int32; - public class AlmsCommandSelector : CommandSelector - { + public class AlmsCommandSelector : CommandSelector { public HeroDropdownController heroDropdownController; public Slider foodSlider; public TMP_Text foodGivenLabel; @@ -24,7 +22,8 @@ namespace eagle private int SelectedFoodAmount => (int)foodSlider.value; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.AlmsCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.AlmsCommand; public override string HeaderString => "Give Alms"; public override string CommitButtonString => "Commit Alms"; @@ -32,38 +31,35 @@ namespace eagle public override string DisabledCommitButtonReason => "Must include some food"; public override List TargetedHeroIds => new List { SelectedHeroId }; - public override bool HeroIsTargetable(HeroId heroId) => AlmsCommand.AvailableHeroIds.Contains(heroId); - public override void AddTargetedHero(HeroId heroId) => heroDropdownController.SelectedHeroId = heroId; + public override bool HeroIsTargetable(HeroId heroId) => + AlmsCommand.AvailableHeroIds.Contains(heroId); + public override void AddTargetedHero(HeroId heroId) => + heroDropdownController.SelectedHeroId = heroId; - protected override void SetUpUI() - { - heroDropdownController.AvailableHeroes = AlmsCommand.AvailableHeroIds - .Select(hid => _model.Heroes[hid]) - .ToList(); + protected override void SetUpUI() { + heroDropdownController.AvailableHeroes = + AlmsCommand.AvailableHeroIds.Select(hid => _model.Heroes[hid]).ToList(); foodSlider.maxValue = AvailableFoodAmount; foodSlider.value = 0; foodGivenLabel.text = "0"; } - public void SelectedProvinceChanged(int newValue) - { + public void SelectedProvinceChanged(int newValue) { foodSlider.value = Math.Min(foodSlider.value, AvailableFoodAmount); foodSlider.maxValue = AvailableFoodAmount; } - public void FoodSliderChanged(float newValue) - { + public void FoodSliderChanged(float newValue) { foodGivenLabel.text = ((int)newValue).ToString(); } - public override SelectedCommand Command => new SelectedCommand - { - AlmsCommand = new AlmsSelectedCommand - { - Amount = SelectedFoodAmount, - ActingHeroId = SelectedHeroId - } + public override SelectedCommand Command => new SelectedCommand { + AlmsCommand = + new AlmsSelectedCommand { + Amount = SelectedFoodAmount, + ActingHeroId = SelectedHeroId + } }; } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ApprehendOutlawCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ApprehendOutlawCommandSelector.cs index 751c26a64a..628d16d652 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ApprehendOutlawCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ApprehendOutlawCommandSelector.cs @@ -5,20 +5,22 @@ using System.Collections.Generic; using System; using UnityEngine; -namespace eagle -{ +namespace eagle { using HeroId = Int32; using BattalionId = Int32; using ProvinceId = Int32; using FactionId = Int32; - public class ApprehendOutlawCommandSelector : CommandSelector - { + public class ApprehendOutlawCommandSelector : CommandSelector { private HeroId SelectedHeroId => actingHeroDropdownController.SelectedHeroId; - private BattalionId? SelectedBattalionId => actingBattalionDropdown.value == 0 ? null : (BattalionId?)AvailableBattalions[actingBattalionDropdown.value - 1].Id; + private BattalionId? SelectedBattalionId => + actingBattalionDropdown.value == 0 + ? null + : (BattalionId?)AvailableBattalions[actingBattalionDropdown.value - 1].Id; private HeroId TargetedHeroId => AvailableTargetHeroIds[targetOutlawDropdown.value]; - private ApprehendOutlawAvailableCommand ApprehendOutlawCommand => _availableCommand.ApprehendOutlawCommand; + private ApprehendOutlawAvailableCommand ApprehendOutlawCommand => + _availableCommand.ApprehendOutlawCommand; private ProvinceId ActingProvinceId => ApprehendOutlawCommand.ActingProvinceId; public HeroDropdownController actingHeroDropdownController; @@ -27,76 +29,76 @@ namespace eagle public EagleCommonTextures textures; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.ApprehendOutlawCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.ApprehendOutlawCommand; public override string HeaderString => "Apprehend Outlaw"; public override string CommitButtonString => "Commit Apprehend Outlaw"; - public override bool HeroIsTargetable(HeroId heroId) => ApprehendOutlawCommand.AvailableHeroIds.Contains(heroId); - public override void AddTargetedHero(HeroId heroId) => actingHeroDropdownController.SelectedHeroId = heroId; + public override bool HeroIsTargetable(HeroId heroId) => + ApprehendOutlawCommand.AvailableHeroIds.Contains(heroId); + public override void AddTargetedHero(HeroId heroId) => + actingHeroDropdownController.SelectedHeroId = heroId; private List AvailableTargetHeroIds { get; set; } private ProvinceView Province => _model.Provinces[ActingProvinceId]; private List AvailableBattalions => - ApprehendOutlawCommand.AvailableBattalionIds - .Select(id => Province.FullInfo.Battalions.First(b => b.Id == id)) - .OrderBy(batt => batt.Type) - .ToList(); + ApprehendOutlawCommand.AvailableBattalionIds + .Select(id => Province.FullInfo.Battalions.First(b => b.Id == id)) + .OrderBy(batt => batt.Type) + .ToList(); - private string outlawDropdownString(ResidentOutlaw outlaw) - { + private string outlawDropdownString(ResidentOutlaw outlaw) { string lastFactionString = ""; - if (outlaw.LastFactionId is FactionId fid) - { + if (outlaw.LastFactionId is FactionId fid) { lastFactionString = $" ({_model.FactionName(fid)})"; } return $"{outlaw.Hero.Name}{lastFactionString}"; } - private TMP_Dropdown.OptionData BattalionOption(BattalionView bv) - { + private TMP_Dropdown.OptionData BattalionOption(BattalionView bv) { var texture = textures.BattalionType(bv.Type); - return new TMP_Dropdown.OptionData - { - image = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)), + return new TMP_Dropdown.OptionData { + image = Sprite.Create( + texture, + new Rect(0, 0, texture.width, texture.height), + new Vector2(0.5f, 0.5f)), text = bv.Size.ToString() }; } - protected override void SetUpUI() - { - actingHeroDropdownController.AvailableHeroes = ApprehendOutlawCommand.AvailableHeroIds - .Select(hid => _model.Heroes[hid]) - .ToList(); + protected override void SetUpUI() { + actingHeroDropdownController.AvailableHeroes = + ApprehendOutlawCommand.AvailableHeroIds.Select(hid => _model.Heroes[hid]) + .ToList(); - AvailableTargetHeroIds = ApprehendOutlawCommand - .Outlaws - .Select(uh => uh.Hero.Id) - .ToList(); + AvailableTargetHeroIds = + ApprehendOutlawCommand.Outlaws.Select(uh => uh.Hero.Id).ToList(); actingBattalionDropdown.ClearOptions(); - actingBattalionDropdown.AddOptions(new List { new TMP_Dropdown.OptionData { text = "No Battalion" } }); - actingBattalionDropdown.AddOptions(AvailableBattalions.Select(BattalionOption).ToList()); + actingBattalionDropdown.AddOptions(new List { + new TMP_Dropdown.OptionData { text = "No Battalion" } + }); + actingBattalionDropdown.AddOptions( + AvailableBattalions.Select(BattalionOption).ToList()); actingBattalionDropdown.value = Math.Min(1, AvailableBattalions.Count); targetOutlawDropdown.ClearOptions(); - var outlawNames = ApprehendOutlawCommand - .Outlaws - .Select(opt => outlawDropdownString(opt)) - .ToList(); + var outlawNames = + ApprehendOutlawCommand.Outlaws.Select(opt => outlawDropdownString(opt)) + .ToList(); targetOutlawDropdown.AddOptions(outlawNames); targetOutlawDropdown.value = 0; } - public override SelectedCommand Command => new SelectedCommand - { - ApprehendOutlawSelectedCommand = new ApprehendOutlawSelectedCommand - { - HeroIdToApprehend = TargetedHeroId, - BattalionId = SelectedBattalionId, - ActingHeroId = SelectedHeroId - } + public override SelectedCommand Command => new SelectedCommand { + ApprehendOutlawSelectedCommand = + new ApprehendOutlawSelectedCommand { + HeroIdToApprehend = TargetedHeroId, + BattalionId = SelectedBattalionId, + ActingHeroId = SelectedHeroId + } }; } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ArmTroopsCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ArmTroopsCommandSelector.cs index 77e0fbbe8e..9c93d8630c 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ArmTroopsCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ArmTroopsCommandSelector.cs @@ -8,12 +8,10 @@ using TMPro; using common; using Net.Eagle0.Eagle.Api.Command.Util; -namespace eagle -{ +namespace eagle { using ProvinceId = Int32; - public class ArmTroopsCommandSelector : CommandSelector - { + public class ArmTroopsCommandSelector : CommandSelector { List costs; List newArmaments; List battalions; @@ -26,23 +24,24 @@ namespace eagle public TMP_Text availableText; public TMP_Text maxLabel; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.ArmTroopsCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.ArmTroopsCommand; - private ArmTroopsAvailableCommand ArmTroopsAvailableCommand => _availableCommand.ArmTroopsCommand; + private ArmTroopsAvailableCommand ArmTroopsAvailableCommand => + _availableCommand.ArmTroopsCommand; private ProvinceId ActingProvinceId => ArmTroopsAvailableCommand.ActingProvinceId; - override protected void SetUpUI() - { + override protected void SetUpUI() { var province = _model.Provinces[ActingProvinceId]; - battalions = ArmTroopsAvailableCommand.AvailableBattalions - .Select(bid => province.FullInfo.Battalions.First(b => b.Id == bid)) - .OrderBy(b => b, BattalionUtils.BattalionComparer) - .ToList(); + battalions = + ArmTroopsAvailableCommand.AvailableBattalions + .Select(bid => province.FullInfo.Battalions.First(b => b.Id == bid)) + .OrderBy(b => b, BattalionUtils.BattalionComparer) + .ToList(); newArmaments = battalions.Select(b => (int)b.Armament).ToList(); var costDict = new Dictionary(); - foreach (var t in ArmTroopsAvailableCommand.ArmamentCosts) - { + foreach (var t in ArmTroopsAvailableCommand.ArmamentCosts) { costDict[t.Type] = t.Cost; } @@ -66,8 +65,7 @@ namespace eagle private string _disabledCommitButtonReason; public override string DisabledCommitButtonReason => _disabledCommitButtonReason; - private void PopulateRow(int index) - { + private void PopulateRow(int index) { var row = armTroopsTable.ComponentAt(index); var battalion = battalions[index]; row.BattalionImage = textures.BattalionType(battalion.Type); @@ -82,8 +80,7 @@ namespace eagle SetValuesAndButtons(index); } - private void SetValuesAndButtons(int index) - { + private void SetValuesAndButtons(int index) { var row = armTroopsTable.ComponentAt(index); var battalion = battalions[index]; var newArmament = newArmaments[index]; @@ -100,86 +97,67 @@ namespace eagle UpdateCost(); } - private void UpdateCost() - { + private void UpdateCost() { _enableCommit = true; totalCostText.color = Color.black; int cost = Cost(); totalCostText.text = cost.ToString(); - if (cost > availableGold) - { + if (cost > availableGold) { totalCostText.color = Color.red; _enableCommit = false; _disabledCommitButtonReason = "Not enough gold"; } - if (cost == 0) - { + if (cost == 0) { _enableCommit = false; _disabledCommitButtonReason = "No battalions have changed"; } } - private void UpdateTableAndCost() - { + private void UpdateTableAndCost() { armTroopsTable.RowCount = battalions.Count; - for (int i = 0; i < battalions.Count; i++) - { - PopulateRow(i); - } + for (int i = 0; i < battalions.Count; i++) { PopulateRow(i); } UpdateCost(); } - public void PlusClicked(int index) - { + public void PlusClicked(int index) { newArmaments[index] = Math.Min(maxArmament, newArmaments[index] + 1); SetValuesAndButtons(index); } - - public void MinusClicked(int index) - { - newArmaments[index] = Math.Max((int)battalions[index].Armament, newArmaments[index] - 1); + public void MinusClicked(int index) { + newArmaments[index] = + Math.Max((int)battalions[index].Armament, newArmaments[index] - 1); SetValuesAndButtons(index); } - - public void ResetClicked(int index) - { + public void ResetClicked(int index) { newArmaments[index] = (int)battalions[index].Armament; SetValuesAndButtons(index); } - - public void MaxClicked(int index) - { + public void MaxClicked(int index) { newArmaments[index] = maxArmament; SetValuesAndButtons(index); } - public void MaxAllClicked() - { + public void MaxAllClicked() { newArmaments = battalions.Select(b => maxArmament).ToList(); UpdateTableAndCost(); } - public void ResetAllClicked() - { + public void ResetAllClicked() { newArmaments = battalions.Select(b => (int)b.Armament).ToList(); UpdateTableAndCost(); } - public override SelectedCommand Command - { - get - { + public override SelectedCommand Command { + get { var atc = new ArmTroopsSelectedCommand(); - for (int i = 0; i < newArmaments.Count; i++) - { - if (newArmaments[i] > battalions[i].Armament) - { + for (int i = 0; i < newArmaments.Count; i++) { + if (newArmaments[i] > battalions[i].Armament) { var ab = new ArmedBattalion(); ab.Id = battalions[i].Id; ab.NewArmament = (int)newArmaments[i]; @@ -187,21 +165,16 @@ namespace eagle } } - var cmd = new SelectedCommand - { - ArmTroopsCommand = atc - }; + var cmd = new SelectedCommand { ArmTroopsCommand = atc }; return cmd; } } - private int Cost() - { + private int Cost() { double totalCost = 0.0; - for (int i = 0; i < newArmaments.Count; i++) - { + for (int i = 0; i < newArmaments.Count; i++) { var battalion = battalions[i]; totalCost += costs[i] * Math.Max(newArmaments[i] - battalion.Armament, 0.0); diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/AttackDecisionCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/AttackDecisionCommandSelector.cs index 9a2445386a..d8cc38a66a 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/AttackDecisionCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/AttackDecisionCommandSelector.cs @@ -7,27 +7,29 @@ using TMPro; using System.Collections.Generic; using UnityEngine.UI; -namespace eagle -{ +namespace eagle { using ProvinceId = System.Int32; - public class AttackDecisionCommandSelector : CommandSelector - { + public class AttackDecisionCommandSelector : CommandSelector { public EventBasedTable unitsTable; public EventBasedTable armiesTable; - private static Dictionary commitStrings = new Dictionary - { - {AttackDecisionType.AdvanceDecision, "Commit Advance"}, - {AttackDecisionType.DemandTributeDecision, "Commit Demand Tribute"}, - {AttackDecisionType.WithdrawDecision, "Commit Withdraw"}, - }; + private static Dictionary commitStrings = + new Dictionary { + { AttackDecisionType.AdvanceDecision, "Commit Advance" }, + { AttackDecisionType.DemandTributeDecision, "Commit Demand Tribute" }, + { AttackDecisionType.WithdrawDecision, "Commit Withdraw" }, + }; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.AttackDecisionCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.AttackDecisionCommand; public override string HeaderString => "Attack Decision"; public override string CommitButtonString => commitStrings[SelectedDecision]; - public override bool EnableCommitButton => SelectedDecision != AttackDecisionType.DemandTributeDecision || FoodDemanded > 0 || GoldDemanded > 0; - public override string DisabledCommitButtonReason => "Must select some food or gold for tribute"; + public override bool EnableCommitButton => + SelectedDecision != AttackDecisionType.DemandTributeDecision || FoodDemanded > 0 || + GoldDemanded > 0; + public override string DisabledCommitButtonReason => + "Must select some food or gold for tribute"; public Toggle AdvanceToggle; public Toggle DemandTributeToggle; @@ -44,49 +46,48 @@ namespace eagle public TMP_Text GoldLabel; public TMP_Text FoodLabel; - private AttackDecisionAvailableCommand AttackDecisionCommand => _availableCommand.AttackDecisionCommand; + private AttackDecisionAvailableCommand AttackDecisionCommand => + _availableCommand.AttackDecisionCommand; private ProvinceId ActingProvinceId => AttackDecisionCommand.ActingProvinceId; private AttackDecisionType SelectedDecision => - (AdvanceToggle.isOn) ? AttackDecisionType.AdvanceDecision : - (DemandTributeToggle.isOn) ? AttackDecisionType.DemandTributeDecision : - AttackDecisionType.WithdrawDecision; + (AdvanceToggle.isOn) ? AttackDecisionType.AdvanceDecision + : (DemandTributeToggle.isOn) ? AttackDecisionType.DemandTributeDecision + : AttackDecisionType.WithdrawDecision; private int FoodDemanded => (int)FoodSlider.value; private int GoldDemanded => (int)GoldSlider.value; - private TributeAmount Tribute => DemandTributeToggle.isOn ? new TributeAmount { Food = FoodDemanded, Gold = GoldDemanded } : null; + private TributeAmount Tribute => + DemandTributeToggle.isOn + ? new TributeAmount { Food = FoodDemanded, Gold = GoldDemanded } + : null; - public override SelectedCommand Command => new SelectedCommand - { - AttackDecisionCommand = new AttackDecisionSelectedCommand - { - Decision = SelectedDecision, - Tribute = Tribute - } + public override SelectedCommand Command => new SelectedCommand { + AttackDecisionCommand = + new AttackDecisionSelectedCommand { + Decision = SelectedDecision, + Tribute = Tribute + } }; - protected override void SetUpUI() - { + protected override void SetUpUI() { unitsTable.RowCount = AttackDecisionCommand.ActingUnits.Count; ProvinceView province = _model.Provinces[ActingProvinceId]; - AttackDecisionCommand.ActingUnits.Each((cu, idx) => - { + AttackDecisionCommand.ActingUnits.Each((cu, idx) => { CombatUnitRowController row = unitsTable.ComponentAt(idx); row.Hero = cu.Hero; row.Battalion = cu.Battalion; }); armiesTable.RowCount = AttackDecisionCommand.Armies.Count; - AttackDecisionCommand.Armies.Each((army, idx) => - { + AttackDecisionCommand.Armies.Each((army, idx) => { IncomingArmyTableRow row = armiesTable.ComponentAt(idx); row.Faction = _model.FactionName(army.FactionId); row.HeroCount = army.HeroCount; row.TroopCount = army.TroopCount; - switch (army.Hostility) - { + switch (army.Hostility) { case Net.Eagle0.Common.Hostility.AlliedHostility: row.TextColor = Color.green; break; @@ -100,17 +101,20 @@ namespace eagle row.Origin = _model.Provinces[army.OriginProvinceId].Name; }); - var enableAttack = AttackDecisionCommand.AvailableDecisions.Contains(AttackDecisionType.AdvanceDecision); + var enableAttack = AttackDecisionCommand.AvailableDecisions.Contains( + AttackDecisionType.AdvanceDecision); AdvanceToggle.enabled = enableAttack; AdvanceToggle.gameObject.SetActive(enableAttack); AdvanceImage.SetActive(enableAttack); - var enableWithdraw = AttackDecisionCommand.AvailableDecisions.Contains(AttackDecisionType.WithdrawDecision); + var enableWithdraw = AttackDecisionCommand.AvailableDecisions.Contains( + AttackDecisionType.WithdrawDecision); WithdrawToggle.enabled = enableWithdraw; WithdrawToggle.gameObject.SetActive(enableWithdraw); WithdrawImage.SetActive(enableWithdraw); - var enableDemandTribute = AttackDecisionCommand.AvailableDecisions.Contains(AttackDecisionType.DemandTributeDecision); + var enableDemandTribute = AttackDecisionCommand.AvailableDecisions.Contains( + AttackDecisionType.DemandTributeDecision); DemandTributeToggle.enabled = enableDemandTribute; DemandTributeToggle.gameObject.SetActive(enableDemandTribute); DemandTributeImage.SetActive(enableDemandTribute); @@ -133,18 +137,15 @@ namespace eagle EnableSliders(false); } - public void GoldSliderChanged(float newValue) - { + public void GoldSliderChanged(float newValue) { GoldLabel.text = ((int)newValue).ToString(); } - public void FoodSliderChanged(float newValue) - { + public void FoodSliderChanged(float newValue) { FoodLabel.text = ((int)newValue).ToString(); } - private void EnableSliders(bool enabled) - { + private void EnableSliders(bool enabled) { GoldIcon.gameObject.SetActive(enabled); FoodIcon.gameObject.SetActive(enabled); GoldSlider.gameObject.SetActive(enabled); @@ -153,17 +154,13 @@ namespace eagle FoodLabel.gameObject.SetActive(enabled); } - public void ToggleChanged(bool value) - { + public void ToggleChanged(bool value) { bool enableSliders = (SelectedDecision == AttackDecisionType.DemandTributeDecision); EnableSliders(enableSliders); } // Use this for initialization - void Start() - { - - } + void Start() {} } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/CommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/CommandSelector.cs index c49ee4b9bc..cdb03f6a60 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/CommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/CommandSelector.cs @@ -3,60 +3,52 @@ using System.Collections.Generic; using Net.Eagle0.Eagle.Api; using UnityEngine; -namespace eagle -{ +namespace eagle { using ProvinceId = Int32; using HeroId = Int32; using BattalionId = Int32; using FactionId = Int32; - public abstract class CommandSelector : MonoBehaviour - { + public abstract class CommandSelector : MonoBehaviour { public Texture ButtonImage; public abstract AvailableCommand.SealedValueOneofCase CommandType { get; } - public virtual bool IsAppropriateFor(AvailableCommand cmd) => cmd.SealedValueCase == CommandType; + public virtual bool IsAppropriateFor(AvailableCommand cmd) => cmd.SealedValueCase + == CommandType; public abstract string HeaderString { get; } public abstract string CommitButtonString { get; } public abstract SelectedCommand Command { get; } protected abstract void SetUpUI(); // Optional accessors - protected virtual ProvinceId? TargetedProvince - { + protected virtual ProvinceId? TargetedProvince { get => null; - set { } + set {} } - public virtual List TargetedProvinces - { - get - { - if (TargetedFactionIds.Count > 0) - { + public virtual List TargetedProvinces { + get { + if (TargetedFactionIds.Count > 0) { var list = new List(); - foreach (ProvinceView province in _model.Provinces.Values) - { - if (province.RulingFactionId is FactionId fid && TargetedFactionIds.Contains(fid)) - { + foreach (ProvinceView province in _model.Provinces.Values) { + if (province.RulingFactionId is FactionId fid && + TargetedFactionIds.Contains(fid)) { list.Add(province.Id); } } return list; } - if (TargetedProvince is ProvinceId pid) - { + if (TargetedProvince is ProvinceId pid) { return new List { pid }; - } - else return new List(); + } else + return new List(); } - set - { - switch (value.Count) - { + set { + switch (value.Count) { case 0: return; case 1: TargetedProvince = value[0]; break; default: - throw new ArgumentException("Unable to handle multiple targeted provinces in default"); + throw new ArgumentException( + "Unable to handle multiple targeted provinces in default"); } } } @@ -67,42 +59,34 @@ namespace eagle public virtual List TargetedHeroIds => new List(); public virtual bool HeroIsTargetable(HeroId heroId) => false; - public virtual void AddTargetedHero(HeroId heroId) { } - public virtual void RemoveTargetedHero(HeroId heroId) { } + public virtual void AddTargetedHero(HeroId heroId) {} + public virtual void RemoveTargetedHero(HeroId heroId) {} public virtual List TargetedBattalionIds => new List(); public virtual bool BattalionIsTargetable(BattalionId battalionId) => false; - public virtual void AddTargetedBattalion(BattalionId battalionId) { } - public virtual void RemoveTargetedBattalion(BattalionId battalionId) { } + public virtual void AddTargetedBattalion(BattalionId battalionId) {} + public virtual void RemoveTargetedBattalion(BattalionId battalionId) {} public virtual List TargetedFactionIds => new List(); public virtual bool FactionIsTargetable(FactionId factionId) => false; - public virtual void AddTargetedFaction(FactionId factionId) { } - public virtual void RemoveTargetedFaction(FactionId factionId) { } + public virtual void AddTargetedFaction(FactionId factionId) {} + public virtual void RemoveTargetedFaction(FactionId factionId) {} public GameObject Panel => gameObject; protected FocusInfoPanelController _focusInfoPanelController; - public void SetFocusInfoPanelController(FocusInfoPanelController newController) - { + public void SetFocusInfoPanelController(FocusInfoPanelController newController) { _focusInfoPanelController = newController; } protected GameModel _model = null; protected AvailableCommand _availableCommand = null; - public void Show() - { - Panel.gameObject.SetActive(true); - } + public void Show() { Panel.gameObject.SetActive(true); } - public void Hide() - { - Panel.gameObject.SetActive(false); - } + public void Hide() { Panel.gameObject.SetActive(false); } - public void UpdateAvailableCommand(GameModel model, AvailableCommand ac) - { + public void UpdateAvailableCommand(GameModel model, AvailableCommand ac) { _model = model; _availableCommand = ac; SetUpUI(); diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ControlWeatherCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ControlWeatherCommandSelector.cs index ef03edcd4c..9d5bdc6172 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ControlWeatherCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ControlWeatherCommandSelector.cs @@ -6,77 +6,77 @@ using Net.Eagle0.Eagle.Api.Command.Util; using EagleGUIUtils; using TMPro; -namespace eagle -{ +namespace eagle { using static Net.Eagle0.Eagle.Api.ControlWeatherAvailableCommand.Types; using HeroId = Int32; using ProvinceId = Int32; - public class ControlWeatherCommandSelector : CommandSelector - { + public class ControlWeatherCommandSelector : CommandSelector { public HeroDropdownController heroDropdownController; public TMP_Dropdown targetDropdown; public TMP_Dropdown actionDropdown; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.ControlWeatherAvailableCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.ControlWeatherAvailableCommand; public override string HeaderString => "Control Weather"; - public override string CommitButtonString => $"Commit {DisplayNames.ControlWeatherTypeName(SelectedOption.ControlWeatherTypes[actionDropdown.value])}"; + public override string CommitButtonString => + $"Commit {DisplayNames.ControlWeatherTypeName(SelectedOption.ControlWeatherTypes[actionDropdown.value])}"; public override List TargetedHeroIds => new List { SelectedHeroId }; - public override bool HeroIsTargetable(HeroId heroId) => ControlWeatherAvailableCommand.AvailableHeroIds.Contains(heroId); - public override void AddTargetedHero(HeroId heroId) => heroDropdownController.SelectedHeroId = heroId; + public override bool HeroIsTargetable(HeroId heroId) => + ControlWeatherAvailableCommand.AvailableHeroIds.Contains(heroId); + public override void AddTargetedHero(HeroId heroId) => + heroDropdownController.SelectedHeroId = heroId; private HeroId SelectedHeroId => heroDropdownController.SelectedHeroId; - private ControlWeatherAvailableCommand ControlWeatherAvailableCommand => _availableCommand.ControlWeatherAvailableCommand; + private ControlWeatherAvailableCommand ControlWeatherAvailableCommand => + _availableCommand.ControlWeatherAvailableCommand; - private TargetProvinceOptions SelectedOption => ControlWeatherAvailableCommand.Options[targetDropdown.value]; - private ControlWeatherType SelectedType => SelectedOption.ControlWeatherTypes[actionDropdown.value]; + private TargetProvinceOptions SelectedOption => + ControlWeatherAvailableCommand.Options[targetDropdown.value]; + private ControlWeatherType SelectedType => + SelectedOption.ControlWeatherTypes[actionDropdown.value]; - protected override ProvinceId? TargetedProvince - { + protected override ProvinceId? TargetedProvince { get => SelectedOption.ProvinceId; - set - { - if (value.HasValue) - { - int index = ControlWeatherAvailableCommand.Options.ToList().FindIndex(tpo => tpo.ProvinceId == value.Value); - if (index != -1) - targetDropdown.value = index; + set { + if (value.HasValue) { + int index = ControlWeatherAvailableCommand.Options.ToList().FindIndex( + tpo => tpo.ProvinceId == value.Value); + if (index != -1) targetDropdown.value = index; } } } - public override SelectedCommand Command => - new SelectedCommand - { - ControlWeatherSelectedCommand = new ControlWeatherSelectedCommand - { - SelectedProvinceId = SelectedOption.ProvinceId, - SelectedType = SelectedType, - ActingHeroId = SelectedHeroId - } - }; + public override SelectedCommand Command => new SelectedCommand { + ControlWeatherSelectedCommand = + new ControlWeatherSelectedCommand { + SelectedProvinceId = SelectedOption.ProvinceId, + SelectedType = SelectedType, + ActingHeroId = SelectedHeroId + } + }; - public void SetOptions() - { + public void SetOptions() { var availableTypes = SelectedOption.ControlWeatherTypes; actionDropdown.ClearOptions(); - actionDropdown.AddOptions(availableTypes.Select(tp => DisplayNames.ControlWeatherTypeName(tp)).ToList()); + actionDropdown.AddOptions( + availableTypes.Select(tp => DisplayNames.ControlWeatherTypeName(tp)).ToList()); } - protected override void SetUpUI() - { - heroDropdownController.AvailableHeroes = ControlWeatherAvailableCommand - .AvailableHeroIds - .Select(hid => _model.Heroes[hid]) - .ToList(); + protected override void SetUpUI() { + heroDropdownController.AvailableHeroes = ControlWeatherAvailableCommand.AvailableHeroIds + .Select(hid => _model.Heroes[hid]) + .ToList(); targetDropdown.ClearOptions(); - var destinationProvinceNames = ControlWeatherAvailableCommand.Options - .Select(opt => opt.ProvinceId) - .Select(id => GUIUtils.DarkColoredProvinceName(_model.Provinces[id], _model.PlayerId.Value)) - .ToList(); + var destinationProvinceNames = + ControlWeatherAvailableCommand.Options.Select(opt => opt.ProvinceId) + .Select(id => GUIUtils.DarkColoredProvinceName( + _model.Provinces[id], + _model.PlayerId.Value)) + .ToList(); targetDropdown.AddOptions(destinationProvinceNames); targetDropdown.value = 0; @@ -84,9 +84,6 @@ namespace eagle } // Start is called before the first frame update - void Start() - { - - } + void Start() {} } } \ No newline at end of file diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DefendCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DefendCommandSelector.cs index dbea557124..f57428af81 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DefendCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DefendCommandSelector.cs @@ -5,65 +5,73 @@ using Net.Eagle0.Eagle.Common; using EagleGUIUtils; using TMPro; -namespace eagle -{ +namespace eagle { using BattalionId = System.Int32; using ProvinceId = System.Int32; using HeroId = System.Int32; - public class DefendCommandSelector : CommandSelector - { + public class DefendCommandSelector : CommandSelector { private int RallyPointProvinceIndex => rallyPointDropdown.value; private List SelectedActingUnits => unitSelector.SelectedActingUnits; public EventBasedUnitSelector unitSelector; public TMP_Dropdown rallyPointDropdown; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.DefendCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.DefendCommand; public override string HeaderString => "Defend"; public override string CommitButtonString => "Commit Defend"; - public override List TargetedHeroIds => unitSelector.SelectedIds.Where(u => u.heroId.HasValue).Select(u => u.heroId.Value).ToList(); - public override bool HeroIsTargetable(HeroId heroId) => unitSelector.HeroIsTargetable(heroId); + public override List TargetedHeroIds => + unitSelector.SelectedIds.Where(u => u.heroId.HasValue) + .Select(u => u.heroId.Value) + .ToList(); + public override bool HeroIsTargetable(HeroId heroId) => + unitSelector.HeroIsTargetable(heroId); public override void AddTargetedHero(HeroId heroId) => unitSelector.AddTargetedHero(heroId); - public override void RemoveTargetedHero(HeroId heroId) => unitSelector.RemoveTargetedHero(heroId); + public override void RemoveTargetedHero(HeroId heroId) => + unitSelector.RemoveTargetedHero(heroId); - public override List TargetedBattalionIds => unitSelector.SelectedIds.Where(u => u.battalion != null).Select(u => u.battalion.Id).ToList(); - public override bool BattalionIsTargetable(BattalionId bid) => unitSelector.BattalionIsTargetable(bid); - public override void AddTargetedBattalion(BattalionId bid) => unitSelector.AddTargetedBattalion(bid); - public override void RemoveTargetedBattalion(BattalionId bid) => unitSelector.RemoveTargetedBattalion(bid); + public override List TargetedBattalionIds => + unitSelector.SelectedIds.Where(u => u.battalion != null) + .Select(u => u.battalion.Id) + .ToList(); + public override bool BattalionIsTargetable(BattalionId bid) => + unitSelector.BattalionIsTargetable(bid); + public override void AddTargetedBattalion(BattalionId bid) => + unitSelector.AddTargetedBattalion(bid); + public override void RemoveTargetedBattalion(BattalionId bid) => + unitSelector.RemoveTargetedBattalion(bid); private DefendAvailableCommand DefendCommand => _availableCommand.DefendCommand; private ProvinceId ActingProvinceId => DefendCommand.ActingProvinceId; - private ProvinceId? RallyPointProvinceId => DefendCommand.AvailableFleeProvinceIds.Count > 0 ? DefendCommand.AvailableFleeProvinceIds[RallyPointProvinceIndex] : (ProvinceId?)null; + private ProvinceId? RallyPointProvinceId => + DefendCommand.AvailableFleeProvinceIds.Count > + 0? DefendCommand.AvailableFleeProvinceIds[RallyPointProvinceIndex] + : (ProvinceId?)null; - private bool BadlyConstructedUnits => unitSelector.HeroIdsLeadingInappropriateUnits.Count > 0; + private bool BadlyConstructedUnits => + unitSelector.HeroIdsLeadingInappropriateUnits.Count > 0; - private bool NoBattalions => unitSelector.BattalionCount == 0 && DefendCommand.AvailableBattalions.Count > 0; + private bool NoBattalions => + unitSelector.BattalionCount == 0 && DefendCommand.AvailableBattalions.Count > 0; public override bool WarnOnCommitButton => BadlyConstructedUnits || NoBattalions; - public override string CommitWarningText - { - get - { + public override string CommitWarningText { + get { if (!(WarnOnCommitButton)) return null; string txt = ""; - if (NoBattalions) - { - txt = txt + "You have not selected any troops.\n\n"; - } - if (BadlyConstructedUnits) - { + if (NoBattalions) { txt = txt + "You have not selected any troops.\n\n"; } + if (BadlyConstructedUnits) { var count = unitSelector.HeroIdsLeadingInappropriateUnits.Count; - if (count == 1) - { - txt = txt + $"{_model.Heroes[unitSelector.HeroIdsLeadingInappropriateUnits[0]].Name} is leading a battalion type that would restrict their abilities.\n\n"; - } - else - { - txt = txt + $"Some of your heroes are leading battalion types that would restrict their abilities.\n\n"; + if (count == 1) { + txt = txt + + $"{_model.Heroes[unitSelector.HeroIdsLeadingInappropriateUnits[0]].Name} is leading a battalion type that would restrict their abilities.\n\n"; + } else { + txt = txt + + $"Some of your heroes are leading battalion types that would restrict their abilities.\n\n"; } } @@ -71,17 +79,13 @@ namespace eagle } } - protected override ProvinceId? TargetedProvince - { + protected override ProvinceId? TargetedProvince { get => RallyPointProvinceId; - set - { - if (value.HasValue) - { + set { + if (value.HasValue) { int index = DefendCommand.AvailableFleeProvinceIds.IndexOf(value.Value); - if (index != -1) - rallyPointDropdown.value = index; + if (index != -1) rallyPointDropdown.value = index; else rallyPointDropdown.value = 0; } @@ -91,80 +95,73 @@ namespace eagle public override bool EnableCommitButton => unitSelector.UnitsAreValid; public override string DisabledCommitButtonReason => unitSelector.InvalidUnitsReason; - private void SetUpRallyPointProvinceDropdown() - { - var destinationProvinceNames = DefendCommand - .AvailableFleeProvinceIds - .Select(id => GUIUtils.DarkColoredProvinceName(_model.Provinces[id], _model.PlayerId.Value)) - .ToList(); + private void SetUpRallyPointProvinceDropdown() { + var destinationProvinceNames = DefendCommand.AvailableFleeProvinceIds + .Select(id => GUIUtils.DarkColoredProvinceName( + _model.Provinces[id], + _model.PlayerId.Value)) + .ToList(); rallyPointDropdown.ClearOptions(); rallyPointDropdown.AddOptions(destinationProvinceNames); rallyPointDropdown.value = 0; } - private void SetUpUnitSelector() - { - var dict = new Dictionary>(); - foreach (var kv in DefendCommand.SuitableBattalionsForHeroes) - { + private void SetUpUnitSelector() { + var dict = new Dictionary< + HeroId, + List>(); + foreach (var kv in DefendCommand.SuitableBattalionsForHeroes) { dict.Add(kv.Key, kv.Value.BattalionIdsWithSuitability.ToList()); } - List recommendedUnits = DefendCommand.RecommendedUnits == null ? new List() : DefendCommand.RecommendedUnits.ToList(); + List recommendedUnits = DefendCommand.RecommendedUnits == null + ? new List() + : DefendCommand.RecommendedUnits.ToList(); var province = _model.Provinces[ActingProvinceId]; - var availableBattalionIds = DefendCommand.AvailableBattalions.Select(b => b.BattalionId).ToList(); - var orderedBattalions = ProvinceUtils.OrderedBattalions(province).Where(batt => availableBattalionIds.Contains(batt.Id)).ToList(); + var availableBattalionIds = + DefendCommand.AvailableBattalions.Select(b => b.BattalionId).ToList(); + var orderedBattalions = ProvinceUtils.OrderedBattalions(province) + .Where(batt => availableBattalionIds.Contains(batt.Id)) + .ToList(); unitSelector.SetUpUnits( - _model, - DefendCommand.AvailableHeroIds.ToList(), - orderedBattalions, - dict, - recommendedUnits); + _model, + DefendCommand.AvailableHeroIds.ToList(), + orderedBattalions, + dict, + recommendedUnits); } - protected override void SetUpUI() - { - if (DefendCommand.AvailableFleeProvinceIds.Count > 0) - { - var availableRallyPointProvinceNames = DefendCommand - .AvailableFleeProvinceIds - .Select(pid => _model.Provinces[pid].Name) - .ToList(); + protected override void SetUpUI() { + if (DefendCommand.AvailableFleeProvinceIds.Count > 0) { + var availableRallyPointProvinceNames = + DefendCommand.AvailableFleeProvinceIds + .Select(pid => _model.Provinces[pid].Name) + .ToList(); rallyPointDropdown.ClearOptions(); rallyPointDropdown.AddOptions(availableRallyPointProvinceNames); rallyPointDropdown.value = 0; rallyPointDropdown.gameObject.SetActive(true); - } - else - { + } else { rallyPointDropdown.gameObject.SetActive(false); } SetUpUnitSelector(); } - public override SelectedCommand Command - { - get - { + public override SelectedCommand Command { + get { var dc = new DefendSelectedCommand(); - if (RallyPointProvinceId.HasValue) - { - dc = new DefendSelectedCommand - { - FleeProvinceId = RallyPointProvinceId.Value - }; + if (RallyPointProvinceId.HasValue) { + dc = new DefendSelectedCommand { FleeProvinceId = RallyPointProvinceId.Value }; } dc.DefendingUnits.AddRange(SelectedActingUnits); - var cmd = new SelectedCommand - { - DefendCommand = dc - }; + var cmd = new SelectedCommand { DefendCommand = dc }; return cmd; } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DiplomacyCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DiplomacyCommandSelector.cs index 9dd6615a4f..54e7452a07 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DiplomacyCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DiplomacyCommandSelector.cs @@ -7,19 +7,21 @@ using UnityEngine.UI; using UnityEngine; using Net.Eagle0.Eagle.Api.Command.Util; -namespace eagle -{ +namespace eagle { using HeroId = System.Int32; using FactionId = System.Int32; using ProvinceId = System.Int32; - public class DiplomacyCommandSelector : CommandSelector - { + public class DiplomacyCommandSelector : CommandSelector { private HeroId SelectedHeroId => ambassadorDropdownController.SelectedHeroId; - private FactionId SelectedFactionId => AvailableTargetFactionIds[targetFactionDropdown.value]; + private FactionId SelectedFactionId => + AvailableTargetFactionIds[targetFactionDropdown.value]; public override bool IsAppropriateFor(AvailableCommand cmd) => - cmd.SealedValueCase == CommandType && cmd.DiplomacyCommand.Options.Any(opt => opt.SealedValueCase != DiplomacyOption.SealedValueOneofCase.RansomOfferOption); + cmd.SealedValueCase == CommandType + && cmd.DiplomacyCommand.Options.Any( + opt => opt.SealedValueCase != + DiplomacyOption.SealedValueOneofCase.RansomOfferOption); private DiplomacyAvailableCommand DiplomacyCommand => _availableCommand.DiplomacyCommand; private ProvinceId ActingProvinceId => DiplomacyCommand.ActingProvinceId; @@ -34,59 +36,59 @@ namespace eagle public TMP_Text allianceLabel; public TMP_Text inviteLabel; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.DiplomacyCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.DiplomacyCommand; public override string HeaderString => "Diplomacy"; - public override string CommitButtonString - { - get - { - switch (SelectedDiplomacyOptionType) - { + public override string CommitButtonString { + get { + switch (SelectedDiplomacyOptionType) { case DiplomacyOption.SealedValueOneofCase.TreatyOption: return "Commit Treaty Offer"; case DiplomacyOption.SealedValueOneofCase.InvitationOption: return "Commit Invite"; - default: - throw new KeyNotFoundException("Unknown diplomacy option"); + default: throw new KeyNotFoundException("Unknown diplomacy option"); } } } public override List TargetedHeroIds => new List { SelectedHeroId }; - public override bool HeroIsTargetable(HeroId heroId) => DiplomacyCommand.AvailableHeroIds.Contains(heroId); - public override void AddTargetedHero(HeroId heroId) => ambassadorDropdownController.SelectedHeroId = heroId; + public override bool HeroIsTargetable(HeroId heroId) => + DiplomacyCommand.AvailableHeroIds.Contains(heroId); + public override void AddTargetedHero(HeroId heroId) => + ambassadorDropdownController.SelectedHeroId = heroId; - public override List TargetedFactionIds => new List { SelectedFactionId }; - public override bool FactionIsTargetable(FactionId factionId) => AvailableTargetFactionIds.Contains(factionId); - public override void AddTargetedFaction(FactionId factionId) => targetFactionDropdown.value = AvailableTargetFactionIds.IndexOf(factionId); + public override List TargetedFactionIds => + new List { SelectedFactionId }; + public override bool FactionIsTargetable(FactionId factionId) => + AvailableTargetFactionIds.Contains(factionId); + public override void AddTargetedFaction(FactionId factionId) => + targetFactionDropdown.value = AvailableTargetFactionIds.IndexOf(factionId); - public override bool WarnOnCommitButton => _model.ActiveFactions[_model.PlayerId.Value].Leaders.Contains(ambassadorDropdownController.SelectedHeroId); - public override string CommitWarningText => "You're putting your faction leader at risk. Are you sure?"; + public override bool WarnOnCommitButton => + _model.ActiveFactions[_model.PlayerId.Value].Leaders.Contains( + ambassadorDropdownController.SelectedHeroId); + public override string CommitWarningText => + "You're putting your faction leader at risk. Are you sure?"; private List AvailableTargetFactionIds { get; set; } - private DiplomacyOption.SealedValueOneofCase SelectedDiplomacyOptionType - { - get - { + private DiplomacyOption.SealedValueOneofCase SelectedDiplomacyOptionType { + get { if (allianceToggle.isOn) return DiplomacyOption.SealedValueOneofCase.TreatyOption; - else if (inviteToggle.isOn) return DiplomacyOption.SealedValueOneofCase.InvitationOption; - else throw new KeyNotFoundException("Unknown diplomacy option"); + else if (inviteToggle.isOn) + return DiplomacyOption.SealedValueOneofCase.InvitationOption; + else + throw new KeyNotFoundException("Unknown diplomacy option"); } } - protected override ProvinceId? TargetedProvince - { + protected override ProvinceId? TargetedProvince { get => null; - set - { - if (value.HasValue) - { + set { + if (value.HasValue) { var targetFaction = _model.Provinces[value.Value].RulingFactionId; - if (targetFaction.HasValue) - { + if (targetFaction.HasValue) { var dropdownIndex = AvailableTargetFactionIds.IndexOf(targetFaction.Value); - if (dropdownIndex != -1) - { + if (dropdownIndex != -1) { targetFactionDropdown.value = dropdownIndex; SetOptions(); costText.text = SelectedOptionCost.ToString(); @@ -96,86 +98,73 @@ namespace eagle } } - private FactionId TargetFactionId(DiplomacyOption option) - { - switch (option.SealedValueCase) - { + private FactionId TargetFactionId(DiplomacyOption option) { + switch (option.SealedValueCase) { case DiplomacyOption.SealedValueOneofCase.TreatyOption: return option.TreatyOption.TargetFactionId; case DiplomacyOption.SealedValueOneofCase.InvitationOption: return option.InvitationOption.TargetFactionId; - default: - throw new System.ArgumentException("Unknown diplomacy option"); + default: throw new System.ArgumentException("Unknown diplomacy option"); } } - private int GoldCost(DiplomacyOption option) - { - switch (option.SealedValueCase) - { + private int GoldCost(DiplomacyOption option) { + switch (option.SealedValueCase) { case DiplomacyOption.SealedValueOneofCase.TreatyOption: return option.TreatyOption.GoldCost; case DiplomacyOption.SealedValueOneofCase.InvitationOption: return option.InvitationOption.GoldCost; - default: - throw new System.ArgumentException("Unknown diplomacy option"); + default: throw new System.ArgumentException("Unknown diplomacy option"); } } - private DiplomacyOption SelectedOption => - DiplomacyCommand.Options.First(opt => opt.SealedValueCase == SelectedDiplomacyOptionType && TargetFactionId(opt) == SelectedFactionId); + private DiplomacyOption SelectedOption => DiplomacyCommand.Options.First( + opt => opt.SealedValueCase == SelectedDiplomacyOptionType && + TargetFactionId(opt) == SelectedFactionId); - protected override void SetUpUI() - { - ambassadorDropdownController.AvailableHeroes = DiplomacyCommand.AvailableHeroIds.Select(hid => _model.Heroes[hid]).ToList(); + protected override void SetUpUI() { + ambassadorDropdownController.AvailableHeroes = + DiplomacyCommand.AvailableHeroIds.Select(hid => _model.Heroes[hid]).ToList(); ambassadorDropdownController.SelectedHeroId = DiplomacyCommand.RecommendedHeroId; - AvailableTargetFactionIds = DiplomacyCommand - .Options - .Where(opt => opt.SealedValueCase != DiplomacyOption.SealedValueOneofCase.RansomOfferOption) - .Select(opt => TargetFactionId(opt)) - .Distinct() - .ToList(); + AvailableTargetFactionIds = + DiplomacyCommand.Options + .Where(opt => opt.SealedValueCase != + DiplomacyOption.SealedValueOneofCase.RansomOfferOption) + .Select(opt => TargetFactionId(opt)) + .Distinct() + .ToList(); targetFactionDropdown.ClearOptions(); targetFactionDropdown.AddOptions( - AvailableTargetFactionIds - .Select(fid => _model.FactionName(fid)) - .ToList()); + AvailableTargetFactionIds.Select(fid => _model.FactionName(fid)).ToList()); targetFactionDropdown.value = 0; SetOptions(); costText.text = SelectedOptionCost.ToString(); } - public void ToggleChanged() - { - costText.text = SelectedOptionCost.ToString(); - } + public void ToggleChanged() { costText.text = SelectedOptionCost.ToString(); } - public override SelectedCommand Command => new SelectedCommand - { - DiplomacyCommand = new DiplomacySelectedCommand - { - SentHeroId = SelectedHeroId, - TargetFactionId = SelectedFactionId, - SelectedOption = SelectedOption - } + public override SelectedCommand Command => new SelectedCommand { + DiplomacyCommand = + new DiplomacySelectedCommand { + SentHeroId = SelectedHeroId, + TargetFactionId = SelectedFactionId, + SelectedOption = SelectedOption + } }; - public void TargetDropdownChanged(int value) - { - SetOptions(); - } + public void TargetDropdownChanged(int value) { SetOptions(); } - private void SetOptions() - { + private void SetOptions() { var targetFid = SelectedFactionId; - var enableInvite = DiplomacyCommand.Options.Any(opt => opt.InvitationOption != null && TargetFactionId(opt) == targetFid); + var enableInvite = DiplomacyCommand.Options.Any( + opt => opt.InvitationOption != null && TargetFactionId(opt) == targetFid); if (!enableInvite) allianceToggle.isOn = true; ConditionallyEnable(inviteToggle, inviteLabel, enableInvite); @@ -183,16 +172,13 @@ namespace eagle costText.text = SelectedOptionCost.ToString(); } - private void ConditionallyEnable(Toggle toggle, TMP_Text label, bool enable) - { + private void ConditionallyEnable(Toggle toggle, TMP_Text label, bool enable) { toggle.gameObject.SetActive(enable); Color color = label.color; color.a = enable ? 1.0f : 0.25f; label.color = color; } - private int SelectedOptionCost => _availableCommand != null - ? GoldCost(SelectedOption) - : 0; + private int SelectedOptionCost => _availableCommand != null ? GoldCost(SelectedOption) : 0; } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DivineCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DivineCommandSelector.cs index e2c73d71a0..956611258a 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DivineCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/DivineCommandSelector.cs @@ -5,13 +5,11 @@ using Net.Eagle0.Eagle.Api; using TMPro; using UnityEngine.UI; -namespace eagle -{ +namespace eagle { using HeroId = System.Int32; using ProvinceId = System.Int32; - public class DivineCommandSelector : CommandSelector - { + public class DivineCommandSelector : CommandSelector { public HeroDetailsController heroDetails; public TMP_Text goldCostLabel; public Button nextHeroButton; @@ -23,29 +21,31 @@ namespace eagle private DivineAvailableCommand DivineCommand => _availableCommand.DivineCommand; private ProvinceId ActingProvinceId => DivineCommand.ActingProvinceId; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.DivineCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.DivineCommand; public override string HeaderString => "Divine Heroes"; - public override string CommitButtonString => divineAllSelected ? "Commit Divine All" : "Commit Divine"; + public override string CommitButtonString => + divineAllSelected ? "Commit Divine All" : "Commit Divine"; - public override bool HeroIsTargetable(HeroId heroId) => DivineCommand.DivinableHeroes.Any(uh => uh.Hero.Id == heroId); + public override bool HeroIsTargetable(HeroId heroId) => + DivineCommand.DivinableHeroes.Any(uh => uh.Hero.Id == heroId); public override List TargetedHeroIds => new List { SelectedHeroId }; private int _selectedHeroIndex; - private HeroView SelectedHero => DivineCommand.DivinableHeroes.ToArray()[_selectedHeroIndex].Hero; + private HeroView SelectedHero => + DivineCommand.DivinableHeroes.ToArray()[_selectedHeroIndex].Hero; private HeroId SelectedHeroId => SelectedHero.Id; private int DivinableCount => DivineCommand.DivinableHeroes.Count; - protected override void SetUpUI() - { - if (_selectedHeroIndex >= DivinableCount) - { - _selectedHeroIndex = 0; - } + protected override void SetUpUI() { + if (_selectedHeroIndex >= DivinableCount) { _selectedHeroIndex = 0; } heroDetails.SetHero(SelectedHero, _model); nextHeroButton.gameObject.SetActive(DivinableCount > 1); - bool enableDivineAll = DivinableCount > 1 && _model.Provinces[ActingProvinceId].FullInfo.Gold >= DivinableCount * DivineCommand.CostPerHero; + bool enableDivineAll = + DivinableCount > 1 && _model.Provinces[ActingProvinceId].FullInfo.Gold >= + DivinableCount * DivineCommand.CostPerHero; divineAllToggle.enabled = enableDivineAll; divineAllToggle.gameObject.SetActive(enableDivineAll); divineAllText.text = $"Divine All ({DivinableCount})"; @@ -56,53 +56,34 @@ namespace eagle SetCostLabel(); } - public override SelectedCommand Command - { - get - { + public override SelectedCommand Command { + get { var dc = new DivineSelectedCommand(); - if (divineAllSelected) - { + if (divineAllSelected) { dc.HeroIds.Add(DivineCommand.DivinableHeroes.Select(h => h.Hero.Id)); - } - else - { + } else { dc.HeroIds.Add(SelectedHeroId); } - var cmd = new SelectedCommand - { - DivineCommand = dc - }; + var cmd = new SelectedCommand { DivineCommand = dc }; return cmd; } } - public void NextHero() - { + public void NextHero() { _selectedHeroIndex++; - if (_selectedHeroIndex >= DivinableCount) - { - _selectedHeroIndex = 0; - } + if (_selectedHeroIndex >= DivinableCount) { _selectedHeroIndex = 0; } heroDetails.SetHero(SelectedHero, _model); } - private void SetCostLabel() - { - if (divineAllToggle.isOn) - { + private void SetCostLabel() { + if (divineAllToggle.isOn) { goldCostLabel.text = (DivineCommand.CostPerHero * DivinableCount).ToString(); - } - else - { + } else { goldCostLabel.text = DivineCommand.CostPerHero.ToString(); } } - public void ToggleClicked(bool value) - { - SetCostLabel(); - } + public void ToggleClicked(bool value) { SetCostLabel(); } } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ExileVassalCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ExileVassalCommandSelector.cs index 8dad329975..acd828df56 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ExileVassalCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ExileVassalCommandSelector.cs @@ -4,19 +4,18 @@ using System.Linq; using Net.Eagle0.Eagle.Api; using Net.Eagle0.Eagle.Common; -namespace eagle -{ +namespace eagle { using HeroId = Int32; using ProvinceId = Int32; - public class ExileVassalCommandSelector : CommandSelector - { + public class ExileVassalCommandSelector : CommandSelector { // Unity accessors public HeroDropdownController heroSelectionDropdownController; public HeroDetailsController heroDetails; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.ExileVassalCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.ExileVassalCommand; public override string HeaderString => "Exile Vassal"; public override string CommitButtonString => $"Commit Exile"; @@ -24,34 +23,28 @@ namespace eagle public HeroView SelectedHero => _model.Heroes[SelectedHeroId]; public override List TargetedHeroIds => new List { SelectedHeroId }; - public override bool HeroIsTargetable(HeroId heroId) => ExileVassalAvailableCommand.ExilableHeroIds.Contains(heroId); - public override void AddTargetedHero(HeroId heroId) => heroSelectionDropdownController.SelectedHeroId = heroId; + public override bool HeroIsTargetable(HeroId heroId) => + ExileVassalAvailableCommand.ExilableHeroIds.Contains(heroId); + public override void AddTargetedHero(HeroId heroId) => + heroSelectionDropdownController.SelectedHeroId = heroId; - private ExileVassalAvailableCommand ExileVassalAvailableCommand => _availableCommand.ExileVassalCommand; + private ExileVassalAvailableCommand ExileVassalAvailableCommand => + _availableCommand.ExileVassalCommand; - protected override void SetUpUI() - { - heroSelectionDropdownController.AvailableHeroes = ExileVassalAvailableCommand.ExilableHeroIds.Select(hid => _model.Heroes[hid]).ToList(); + protected override void SetUpUI() { + heroSelectionDropdownController.AvailableHeroes = + ExileVassalAvailableCommand.ExilableHeroIds.Select(hid => _model.Heroes[hid]) + .ToList(); heroSelectionDropdownController.SelectedHeroIdUpdated = () => DisplaySelectedHero(); DisplaySelectedHero(); } - public override SelectedCommand Command => new SelectedCommand - { - ExileVassalCommand = new ExileVassalSelectedCommand - { - ExiledHeroId = SelectedHeroId - } + public override SelectedCommand Command => new SelectedCommand { + ExileVassalCommand = new ExileVassalSelectedCommand { ExiledHeroId = SelectedHeroId } }; - public void DropdownSelected(int value) - { - DisplaySelectedHero(); - } + public void DropdownSelected(int value) { DisplaySelectedHero(); } - private void DisplaySelectedHero() - { - heroDetails.SetHero(SelectedHero, _model); - } + private void DisplaySelectedHero() { heroDetails.SetHero(SelectedHero, _model); } } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/FeastCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/FeastCommandSelector.cs index d8115c2f2f..96276b411b 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/FeastCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/FeastCommandSelector.cs @@ -3,13 +3,12 @@ using Net.Eagle0.Eagle.Api; using Net.Eagle0.Eagle.Common; using TMPro; -namespace eagle -{ +namespace eagle { using ProvinceId = Int32; - public class FeastCommandSelector : CommandSelector - { - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.FeastCommand; + public class FeastCommandSelector : CommandSelector { + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.FeastCommand; public override string HeaderString => "Feast"; public override string CommitButtonString => "Commit Feast"; @@ -18,13 +17,10 @@ namespace eagle private FeastAvailableCommand FeastAvailableCommand => _availableCommand.FeastCommand; private ProvinceId ActingProvinceId => FeastAvailableCommand.ActingProvinceId; - public override SelectedCommand Command => new SelectedCommand - { - FeastCommand = new FeastSelectedCommand() - }; + public override SelectedCommand Command => + new SelectedCommand { FeastCommand = new FeastSelectedCommand() }; - protected override void SetUpUI() - { + protected override void SetUpUI() { GoldCostLabel.text = _availableCommand.FeastCommand.GoldCost.ToString(); } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/FreeForAllDecisionCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/FreeForAllDecisionCommandSelector.cs index fb7d6f9391..90d8c62d3e 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/FreeForAllDecisionCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/FreeForAllDecisionCommandSelector.cs @@ -6,55 +6,52 @@ using Net.Eagle0.Eagle.Api.Command.Util; using UnityEngine.UI; using System; -namespace eagle -{ +namespace eagle { using ProvinceId = Int32; - public class FreeForAllDecisionCommandSelector : CommandSelector - { + public class FreeForAllDecisionCommandSelector : CommandSelector { public EventBasedTable unitsTable; public EventBasedTable armiesTable; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.FreeForAllDecisionCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.FreeForAllDecisionCommand; public override string HeaderString => "Free-For-All Decision"; - public override string CommitButtonString => AdvanceToggle.isOn ? "Commit Advance" : "Commit Withdraw"; + public override string CommitButtonString => + AdvanceToggle.isOn ? "Commit Advance" : "Commit Withdraw"; public Toggle AdvanceToggle; public Toggle WithdrawToggle; - private FreeForAllDecisionAvailableCommand FreeForAllDecisionCommand => _availableCommand.FreeForAllDecisionCommand; + private FreeForAllDecisionAvailableCommand FreeForAllDecisionCommand => + _availableCommand.FreeForAllDecisionCommand; private ProvinceId ActingProvinceId => FreeForAllDecisionCommand.ProvinceId; - public override SelectedCommand Command => new SelectedCommand - { - FreeForAllDecisionCommand = new FreeForAllDecisionSelectedCommand - { - ProvinceId = ActingProvinceId, - Decision = AdvanceToggle.isOn ? AttackDecisionType.AdvanceDecision : AttackDecisionType.WithdrawDecision - } + public override SelectedCommand Command => new SelectedCommand { + FreeForAllDecisionCommand = + new FreeForAllDecisionSelectedCommand { + ProvinceId = ActingProvinceId, + Decision = AdvanceToggle.isOn ? AttackDecisionType.AdvanceDecision + : AttackDecisionType.WithdrawDecision + } }; - protected override void SetUpUI() - { + protected override void SetUpUI() { unitsTable.RowCount = FreeForAllDecisionCommand.ActingUnits.Count; ProvinceView province = _model.Provinces[ActingProvinceId]; - FreeForAllDecisionCommand.ActingUnits.Each((cu, idx) => - { + FreeForAllDecisionCommand.ActingUnits.Each((cu, idx) => { CombatUnitRowController row = unitsTable.ComponentAt(idx); row.Hero = cu.Hero; row.Battalion = cu.Battalion; }); armiesTable.RowCount = FreeForAllDecisionCommand.Armies.Count; - FreeForAllDecisionCommand.Armies.Each((army, idx) => - { + FreeForAllDecisionCommand.Armies.Each((army, idx) => { IncomingArmyTableRow row = armiesTable.ComponentAt(idx); row.Faction = _model.FactionName(army.FactionId); row.HeroCount = army.HeroCount; row.TroopCount = army.TroopCount; - switch (army.Hostility) - { + switch (army.Hostility) { case Net.Eagle0.Common.Hostility.AlliedHostility: row.TextColor = Color.green; break; @@ -70,13 +67,11 @@ namespace eagle AdvanceToggle.isOn = true; AdvanceToggle.enabled = true; - WithdrawToggle.enabled = FreeForAllDecisionCommand.AvailableDecisions.Contains(AttackDecisionType.WithdrawDecision); + WithdrawToggle.enabled = FreeForAllDecisionCommand.AvailableDecisions.Contains( + AttackDecisionType.WithdrawDecision); } // Use this for initialization - void Start() - { - - } + void Start() {} } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleCapturedHeroesCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleCapturedHeroesCommandSelector.cs index 9858ccf209..cee4710bdd 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleCapturedHeroesCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleCapturedHeroesCommandSelector.cs @@ -5,12 +5,10 @@ using UnityEngine.UI; using TMPro; using Net.Eagle0.Eagle.Api.Command.Util; -namespace eagle -{ +namespace eagle { using ProvinceId = Int32; - public class HandleCapturedHeroesCommandSelector : CommandSelector - { + public class HandleCapturedHeroesCommandSelector : CommandSelector { // Unity accessors public Toggle RecruitToggle; public Toggle ImprisonToggle; @@ -32,88 +30,101 @@ namespace eagle public HeroView SelectedHero => SelectedHeroWithOptions.Hero; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.HandleCapturedHeroCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.HandleCapturedHeroCommand; public override string HeaderString => "Handle Captured Hero"; - public override string CommitButtonString => $"Commit {DisplayNames.CapturedHeroOptionNames[SelectedOption]}"; + public override string CommitButtonString => + $"Commit {DisplayNames.CapturedHeroOptionNames[SelectedOption]}"; private int _selectedHeroIndex; - private ExpandedCapturedHero SelectedHeroWithOptions => HandleCapturedHeroCommand.AvailableHeroes[_selectedHeroIndex]; + private ExpandedCapturedHero SelectedHeroWithOptions => + HandleCapturedHeroCommand.AvailableHeroes[_selectedHeroIndex]; - private HandleCapturedHeroAvailableCommand HandleCapturedHeroCommand => _availableCommand.HandleCapturedHeroCommand; + private HandleCapturedHeroAvailableCommand HandleCapturedHeroCommand => + _availableCommand.HandleCapturedHeroCommand; private ProvinceId ActingProvinceId => HandleCapturedHeroCommand.ActingProvinceId; - public override bool WarnOnCommitButton => SelectedOption == CapturedHeroOption.ReturnCapturedHeroOption; - public override string CommitWarningText => $"This will create a treaty with {_model.FactionName(SelectedHero.FactionId.Value)}"; + public override bool WarnOnCommitButton => + SelectedOption == CapturedHeroOption.ReturnCapturedHeroOption; + public override string CommitWarningText => + $"This will create a treaty with {_model.FactionName(SelectedHero.FactionId.Value)}"; - private CapturedHeroOption SelectedOption - { - get - { + private CapturedHeroOption SelectedOption { + get { if (RecruitToggle.isOn) return CapturedHeroOption.RecruitCapturedHeroOption; - else if (ImprisonToggle.isOn) return CapturedHeroOption.ImprisonCapturedHeroOption; - else if (ExileToggle.isOn) return CapturedHeroOption.ExileCapturedHeroOption; - else if (ExecuteToggle.isOn) return CapturedHeroOption.ExecuteCapturedHeroOption; - else if (ReturnToggle.isOn) return CapturedHeroOption.ReturnCapturedHeroOption; - else throw new ArgumentOutOfRangeException("Unknown captured hero option"); + else if (ImprisonToggle.isOn) + return CapturedHeroOption.ImprisonCapturedHeroOption; + else if (ExileToggle.isOn) + return CapturedHeroOption.ExileCapturedHeroOption; + else if (ExecuteToggle.isOn) + return CapturedHeroOption.ExecuteCapturedHeroOption; + else if (ReturnToggle.isOn) + return CapturedHeroOption.ReturnCapturedHeroOption; + else + throw new ArgumentOutOfRangeException("Unknown captured hero option"); } } - protected override void SetUpUI() - { - if (_selectedHeroIndex >= HandleCapturedHeroCommand.AvailableHeroes.Count) _selectedHeroIndex = 0; - NextHeroButton.gameObject.SetActive(HandleCapturedHeroCommand.AvailableHeroes.Count > 1); + protected override void SetUpUI() { + if (_selectedHeroIndex >= HandleCapturedHeroCommand.AvailableHeroes.Count) + _selectedHeroIndex = 0; + NextHeroButton.gameObject.SetActive( + HandleCapturedHeroCommand.AvailableHeroes.Count > 1); DisplaySelectedHero(); } - public override SelectedCommand Command => new SelectedCommand - { - HandleCapturedHeroCommand = new HandleCapturedHeroSelectedCommand() - { - HeroId = SelectedHero.Id, - SelectedOption = SelectedOption - } + public override SelectedCommand Command => new SelectedCommand { + HandleCapturedHeroCommand = + new HandleCapturedHeroSelectedCommand() { + HeroId = SelectedHero.Id, + SelectedOption = SelectedOption + } }; - public void NextHeroButtonClicked() - { + public void NextHeroButtonClicked() { _selectedHeroIndex++; - if (_selectedHeroIndex >= HandleCapturedHeroCommand.AvailableHeroes.Count) - { + if (_selectedHeroIndex >= HandleCapturedHeroCommand.AvailableHeroes.Count) { _selectedHeroIndex = 0; } DisplaySelectedHero(); } - private void DisplaySelectedHero() - { + private void DisplaySelectedHero() { heroDetails.SetHero(SelectedHero, _model); - if (String.IsNullOrEmpty(SelectedHeroWithOptions.Message)) - { + if (String.IsNullOrEmpty(SelectedHeroWithOptions.Message)) { MessageText.text = $"What should we do with {SelectedHero.Name}?"; - } - else - { + } else { MessageText.text = SelectedHeroWithOptions.Message; } // The order here is important: the last available toggle in this list // will be on by default - ConditionallyEnable(ExecuteToggle, ExecuteIcon, CapturedHeroOption.ExecuteCapturedHeroOption); + ConditionallyEnable( + ExecuteToggle, + ExecuteIcon, + CapturedHeroOption.ExecuteCapturedHeroOption); ConditionallyEnable(ExileToggle, ExileIcon, CapturedHeroOption.ExileCapturedHeroOption); - ConditionallyEnable(ReturnToggle, ReturnIcon, CapturedHeroOption.ReturnCapturedHeroOption); - ConditionallyEnable(ImprisonToggle, ImprisonIcon, CapturedHeroOption.ImprisonCapturedHeroOption); - ConditionallyEnable(RecruitToggle, RecruitIcon, CapturedHeroOption.RecruitCapturedHeroOption); + ConditionallyEnable( + ReturnToggle, + ReturnIcon, + CapturedHeroOption.ReturnCapturedHeroOption); + ConditionallyEnable( + ImprisonToggle, + ImprisonIcon, + CapturedHeroOption.ImprisonCapturedHeroOption); + ConditionallyEnable( + RecruitToggle, + RecruitIcon, + CapturedHeroOption.RecruitCapturedHeroOption); } - private bool ConditionallyEnable(Toggle toggle, CapturedHeroOption option) - { + private bool ConditionallyEnable(Toggle toggle, CapturedHeroOption option) { bool enable = SelectedHeroWithOptions.Options.Contains(option); toggle.gameObject.SetActive(enable); - if (enable) - { + if (enable) { ExecuteToggle.isOn = false; ExileToggle.isOn = false; ImprisonToggle.isOn = false; @@ -121,14 +132,13 @@ namespace eagle ReturnToggle.isOn = false; toggle.isOn = true; - } - else toggle.isOn = false; + } else + toggle.isOn = false; return enable; } - private void ConditionallyEnable(Toggle toggle, RawImage img, CapturedHeroOption option) - { + private void ConditionallyEnable(Toggle toggle, RawImage img, CapturedHeroOption option) { bool enable = ConditionallyEnable(toggle, option); Color color = img.color; diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotCrackDownCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotCrackDownCommandSelector.cs index b415df3e46..911d5a4278 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotCrackDownCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotCrackDownCommandSelector.cs @@ -6,18 +6,17 @@ using Net.Eagle0.Eagle.Api.Command; using Net.Eagle0.Eagle.Common; using TMPro; -namespace eagle -{ +namespace eagle { using HeroId = Int32; using BattalionId = Int32; using ProvinceId = Int32; - public class HandleRiotCrackDownCommandSelector : CommandSelector - { + public class HandleRiotCrackDownCommandSelector : CommandSelector { public HeroDropdownController heroDropdownController; public BattalionDropdownController battalionDropdownController; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.HandleRiotCrackDownAvailableCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.HandleRiotCrackDownAvailableCommand; public override string HeaderString => "Crack Down"; public override string CommitButtonString => "Commit Crack Down"; @@ -26,42 +25,49 @@ namespace eagle public override string CommitWarningText => "You aren't sending a battalion. Are you sure?"; public override List TargetedHeroIds => new List { SelectedHeroId }; - public override bool HeroIsTargetable(HeroId heroId) => HandleRiotCrackDownAvailableCommand.AvailableHeroIds.Contains(heroId); - public override void AddTargetedHero(HeroId heroId) => heroDropdownController.SelectedHeroId = heroId; + public override bool HeroIsTargetable(HeroId heroId) => + HandleRiotCrackDownAvailableCommand.AvailableHeroIds.Contains(heroId); + public override void AddTargetedHero(HeroId heroId) => + heroDropdownController.SelectedHeroId = heroId; - public override List TargetedBattalionIds => SelectedBattalionId.HasValue ? new List { SelectedBattalionId.Value } : new List(); - public override bool BattalionIsTargetable(BattalionId bid) => HandleRiotCrackDownAvailableCommand.BattalionIdsAvailable.Contains(bid); - public override void AddTargetedBattalion(BattalionId bid) => battalionDropdownController.SelectedBattalionId = bid; + public override List TargetedBattalionIds => + SelectedBattalionId.HasValue ? new List { SelectedBattalionId.Value } + : new List(); + public override bool BattalionIsTargetable(BattalionId bid) => + HandleRiotCrackDownAvailableCommand.BattalionIdsAvailable.Contains(bid); + public override void AddTargetedBattalion(BattalionId bid) => + battalionDropdownController.SelectedBattalionId = bid; private HeroId SelectedHeroId => heroDropdownController.SelectedHeroId; private BattalionId? SelectedBattalionId => battalionDropdownController.SelectedBattalionId; - private HandleRiotCrackDownAvailableCommand HandleRiotCrackDownAvailableCommand => _availableCommand.HandleRiotCrackDownAvailableCommand; + private HandleRiotCrackDownAvailableCommand HandleRiotCrackDownAvailableCommand => + _availableCommand.HandleRiotCrackDownAvailableCommand; private ProvinceId ActingProvinceId => HandleRiotCrackDownAvailableCommand.ActingProvinceId; private ProvinceView Province => _model.Provinces[ActingProvinceId]; - public override SelectedCommand Command => new SelectedCommand - { - HandleRiotCrackDownSelectedCommand = new HandleRiotCrackDownSelectedCommand - { - HeroId = SelectedHeroId, - BattalionId = SelectedBattalionId - } + public override SelectedCommand Command => new SelectedCommand { + HandleRiotCrackDownSelectedCommand = + new HandleRiotCrackDownSelectedCommand { + HeroId = SelectedHeroId, + BattalionId = SelectedBattalionId + } }; - protected override void SetUpUI() - { - heroDropdownController.AvailableHeroes = HandleRiotCrackDownAvailableCommand.AvailableHeroIds.Select(id => _model.Heroes[id]).ToList(); - battalionDropdownController.AvailableBattalions = HandleRiotCrackDownAvailableCommand.BattalionIdsAvailable - .Select(id => Province.FullInfo.Battalions.First(b => b.Id == id)) - .OrderBy(batt => batt.Type) - .ToList(); + protected override void SetUpUI() { + heroDropdownController.AvailableHeroes = + HandleRiotCrackDownAvailableCommand.AvailableHeroIds + .Select(id => _model.Heroes[id]) + .ToList(); + battalionDropdownController.AvailableBattalions = + HandleRiotCrackDownAvailableCommand.BattalionIdsAvailable + .Select(id => Province.FullInfo.Battalions.First(b => b.Id == id)) + .OrderBy(batt => batt.Type) + .ToList(); } // Start is called before the first frame update - void Start() - { - } + void Start() {} } } \ No newline at end of file diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotDoNothingCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotDoNothingCommandSelector.cs index 7e5ee6516e..9730f1b383 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotDoNothingCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotDoNothingCommandSelector.cs @@ -1,30 +1,25 @@ using Net.Eagle0.Eagle.Api; using Net.Eagle0.Eagle.Common; -namespace eagle -{ - public class HandleRiotDoNothingCommandSelector : CommandSelector - { - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.HandleRiotDoNothingAvailableCommand; +namespace eagle { + public class HandleRiotDoNothingCommandSelector : CommandSelector { + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.HandleRiotDoNothingAvailableCommand; public override string HeaderString => "Ignore Imminent Riot"; public override string CommitButtonString => "Commit Ignore"; - private HandleRiotDoNothingAvailableCommand HandleRiotDoNothingCommand => _availableCommand.HandleRiotDoNothingAvailableCommand; + private HandleRiotDoNothingAvailableCommand HandleRiotDoNothingCommand => + _availableCommand.HandleRiotDoNothingAvailableCommand; - public override SelectedCommand Command => new SelectedCommand - { + public override SelectedCommand Command => new SelectedCommand { HandleRiotDoNothingSelectedCommand = new HandleRiotDoNothingSelectedCommand() }; - protected override void SetUpUI() - { - } + protected override void SetUpUI() {} // Start is called before the first frame update - void Start() - { - } + void Start() {} } } \ No newline at end of file diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotGiveCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotGiveCommandSelector.cs index bb248cefbf..9fa2d1cc79 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotGiveCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HandleRiotGiveCommandSelector.cs @@ -3,12 +3,10 @@ using Net.Eagle0.Eagle.Common; using TMPro; using UnityEngine.UI; -namespace eagle -{ +namespace eagle { using ProvinceId = System.Int32; - public class HandleRiotGiveCommandSelector : CommandSelector - { + public class HandleRiotGiveCommandSelector : CommandSelector { public Toggle foodToggle; public Toggle goldToggle; @@ -17,39 +15,33 @@ namespace eagle public Slider goldTakenSlider; public TMP_Text goldTakenLabel; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.HandleRiotGiveAvailableCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.HandleRiotGiveAvailableCommand; public override string HeaderString => "Give to Populace"; public override string CommitButtonString => "Commit Gift"; - private HandleRiotGiveSelectedCommand SpecializedCommand() - { + private HandleRiotGiveSelectedCommand SpecializedCommand() { var spc = new HandleRiotGiveSelectedCommand(); - if (foodToggle.isOn) - { + if (foodToggle.isOn) { spc.FoodAmount = (int)foodTakenSlider.value; - } - else if (goldToggle.isOn) - { + } else if (goldToggle.isOn) { spc.GoldAmount = (int)goldTakenSlider.value; } return spc; } - public override SelectedCommand Command => new SelectedCommand - { - HandleRiotGiveSelectedCommand = SpecializedCommand() - }; + public override SelectedCommand Command => + new SelectedCommand { HandleRiotGiveSelectedCommand = SpecializedCommand() }; - private HandleRiotGiveAvailableCommand HandleRiotCommand => _availableCommand.HandleRiotGiveAvailableCommand; + private HandleRiotGiveAvailableCommand HandleRiotCommand => + _availableCommand.HandleRiotGiveAvailableCommand; private ProvinceId ActingProvinceId => HandleRiotCommand.ActingProvinceId; - protected override void SetUpUI() - { - if (HandleRiotCommand.GoldAvailable > 0) - { + protected override void SetUpUI() { + if (HandleRiotCommand.GoldAvailable > 0) { goldTakenSlider.maxValue = HandleRiotCommand.GoldAvailable; goldTakenSlider.minValue = 1; goldTakenSlider.value = HandleRiotCommand.GoldAvailable; @@ -58,15 +50,12 @@ namespace eagle goldToggle.gameObject.SetActive(true); foodToggle.isOn = false; goldToggle.isOn = true; - } - else - { + } else { goldToggle.enabled = false; goldToggle.gameObject.SetActive(false); } - if (HandleRiotCommand.FoodAvailable > 0) - { + if (HandleRiotCommand.FoodAvailable > 0) { foodTakenSlider.maxValue = HandleRiotCommand.FoodAvailable; foodTakenSlider.minValue = 1; foodTakenSlider.value = HandleRiotCommand.FoodAvailable; @@ -75,57 +64,41 @@ namespace eagle foodToggle.gameObject.SetActive(true); goldToggle.isOn = false; foodToggle.isOn = true; - } - else - { + } else { foodToggle.enabled = false; foodToggle.gameObject.SetActive(false); } } // Start is called before the first frame update - void Start() - { + void Start() {} - } + public void FoodSliderMoved(float value) { foodTakenLabel.text = $"{(int)value}"; } + public void GoldSliderMoved(float value) { goldTakenLabel.text = $"{(int)value}"; } - public void FoodSliderMoved(float value) - { - foodTakenLabel.text = $"{(int)value}"; - } - - public void GoldSliderMoved(float value) - { - goldTakenLabel.text = $"{(int)value}"; - } - - public void FoodToggleSelected() - { + public void FoodToggleSelected() { foodTakenSlider.gameObject.SetActive(true); foodTakenLabel.gameObject.SetActive(true); goldTakenSlider.gameObject.SetActive(false); goldTakenLabel.gameObject.SetActive(false); } - public void GoldToggleSelected() - { + public void GoldToggleSelected() { foodTakenSlider.gameObject.SetActive(false); foodTakenLabel.gameObject.SetActive(false); goldTakenSlider.gameObject.SetActive(true); goldTakenLabel.gameObject.SetActive(true); } - public void CrackDownToggleSelected() - { + public void CrackDownToggleSelected() { foodTakenSlider.gameObject.SetActive(false); foodTakenLabel.gameObject.SetActive(false); goldTakenSlider.gameObject.SetActive(false); goldTakenLabel.gameObject.SetActive(false); } - public void NothingToggleSelected() - { + public void NothingToggleSelected() { foodTakenSlider.gameObject.SetActive(false); foodTakenLabel.gameObject.SetActive(false); goldTakenSlider.gameObject.SetActive(false); diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HeroGiftCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HeroGiftCommandSelector.cs index 4cfec1737e..fef2e1330b 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HeroGiftCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/HeroGiftCommandSelector.cs @@ -6,13 +6,11 @@ using Net.Eagle0.Eagle.Common; using TMPro; using UnityEngine.UI; -namespace eagle -{ +namespace eagle { using ProvinceId = System.Int32; using HeroId = System.Int32; - public class HeroGiftCommandSelector : CommandSelector - { + public class HeroGiftCommandSelector : CommandSelector { public TMP_Dropdown provinceDropdown; public HeroDropdownController heroDropdownController; public Slider goldSlider; @@ -21,51 +19,62 @@ namespace eagle private HeroGiftAvailableCommand HeroGiftCommand => _availableCommand.HeroGiftCommand; private ProvinceId ActingProvinceId => HeroGiftCommand.ActingProvinceId; - private ProvinceId? FilterProvince => provinceDropdown.value == 0 ? null : (ProvinceId?)HeroGiftCommand.EligibleGifts.GroupBy(eg => eg.RecipientProvinceId).ToList()[provinceDropdown.value - 1].Key; + private ProvinceId? FilterProvince => + provinceDropdown.value == 0 ? null + : (ProvinceId?)HeroGiftCommand.EligibleGifts + .GroupBy(eg => eg.RecipientProvinceId) + .ToList()[provinceDropdown.value - 1] + .Key; - private List FilteredEligibleGifts => FilterProvince == null ? HeroGiftCommand.EligibleGifts.ToList() : HeroGiftCommand - .EligibleGifts - .Where(eg => eg.RecipientProvinceId == FilterProvince.Value) - .ToList(); + private List FilteredEligibleGifts => + FilterProvince == null + ? HeroGiftCommand.EligibleGifts.ToList() + : HeroGiftCommand.EligibleGifts + .Where(eg => eg.RecipientProvinceId == FilterProvince.Value) + .ToList(); - private List AvailableHeroIds => FilteredEligibleGifts - .Select(eg => eg.RecipientHeroId) - .ToList(); + private List AvailableHeroIds => + FilteredEligibleGifts.Select(eg => eg.RecipientHeroId).ToList(); private HeroId SelectedHeroId => heroDropdownController.SelectedHeroId; - private int AvailableGold => HeroGiftCommand.EligibleGifts.ToList().Find(eg => eg.RecipientHeroId == SelectedHeroId).GoldAvailable; + private int AvailableGold => HeroGiftCommand.EligibleGifts.ToList() + .Find(eg => eg.RecipientHeroId == SelectedHeroId) + .GoldAvailable; private int SelectedGoldAmount => (int)goldSlider.value; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.HeroGiftCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.HeroGiftCommand; public override string HeaderString => "Give to Hero"; public override string CommitButtonString => "Commit Gift"; public override List TargetedHeroIds => new List { SelectedHeroId }; - public override bool HeroIsTargetable(HeroId heroId) => HeroGiftCommand.EligibleGifts.Where(eg => eg.RecipientHeroId == heroId).Count() > 0; - public override void AddTargetedHero(HeroId heroId) - { - var eligibleGift = HeroGiftCommand.EligibleGifts.Where(eg => eg.RecipientHeroId == heroId).First(); - if (TargetedProvince.HasValue && TargetedProvince != eligibleGift.RecipientProvinceId) TargetedProvince = null; - else heroDropdownController.SelectedHeroId = heroId; + public override bool HeroIsTargetable(HeroId heroId) => + HeroGiftCommand.EligibleGifts.Where(eg => eg.RecipientHeroId == heroId).Count() > 0; + public override void AddTargetedHero(HeroId heroId) { + var eligibleGift = + HeroGiftCommand.EligibleGifts.Where(eg => eg.RecipientHeroId == heroId).First(); + if (TargetedProvince.HasValue && TargetedProvince != eligibleGift.RecipientProvinceId) + TargetedProvince = null; + else + heroDropdownController.SelectedHeroId = heroId; } public override bool EnableCommitButton => SelectedGoldAmount > 0; public override string DisabledCommitButtonReason => "Must send some gold"; - protected override ProvinceId? TargetedProvince - { + protected override ProvinceId? TargetedProvince { get => FilterProvince; - set - { + set { var newIndex = 0; - if (value is ProvinceId pid) - { - var index = HeroGiftCommand.EligibleGifts.GroupBy(eg => eg.RecipientProvinceId).Select(x => x.Key).ToList().IndexOf(pid); + if (value is ProvinceId pid) { + var index = HeroGiftCommand.EligibleGifts.GroupBy(eg => eg.RecipientProvinceId) + .Select(x => x.Key) + .ToList() + .IndexOf(pid); if (index != -1) newIndex = index + 1; } - if (newIndex != provinceDropdown.value) - { + if (newIndex != provinceDropdown.value) { provinceDropdown.value = newIndex; SetUpHeroDropdown(); } @@ -74,16 +83,17 @@ namespace eagle public override bool WarnOnCommitButton => false; public override string CommitWarningText => null; - void Awake() - { + void Awake() { heroDropdownController.ConditionAccessor = hero => hero.Loyalty; heroDropdownController.ConditionName = "LOY"; } - protected override void SetUpUI() - { + protected override void SetUpUI() { provinceDropdown.ClearOptions(); - var availableProvinces = HeroGiftCommand.EligibleGifts.GroupBy(eg => eg.RecipientProvinceId).Select(x => x.Key).ToList(); + var availableProvinces = + HeroGiftCommand.EligibleGifts.GroupBy(eg => eg.RecipientProvinceId) + .Select(x => x.Key) + .ToList(); var optionsList = new List { "All" }; optionsList.AddRange(availableProvinces.Select(pid => _model.Provinces[pid].Name)); provinceDropdown.AddOptions(optionsList); @@ -96,47 +106,35 @@ namespace eagle goldSlider.maxValue = AvailableGold; } - public void SetUpHeroDropdown() - { - var heroes = AvailableHeroIds - .Select(hid => _model.Heroes[hid]) - .ToList(); + public void SetUpHeroDropdown() { + var heroes = AvailableHeroIds.Select(hid => _model.Heroes[hid]).ToList(); heroDropdownController.AvailableHeroes = heroes; HeroView minLoyaltyHero = null; - foreach (HeroView hero in heroes) - { - if (minLoyaltyHero == null || hero.Loyalty.Stat < minLoyaltyHero.Loyalty.Stat) - { + foreach (HeroView hero in heroes) { + if (minLoyaltyHero == null || hero.Loyalty.Stat < minLoyaltyHero.Loyalty.Stat) { minLoyaltyHero = hero; } } heroDropdownController.SelectedHeroId = minLoyaltyHero.Id; } - public void HeroSelected() - { + public void HeroSelected() { goldSlider.maxValue = AvailableGold; goldSlider.value = Math.Min(goldSlider.value, AvailableGold); } - public void GoldSliderMoved(float value) - { - goldGivenLabel.text = ((int)value).ToString(); - } + public void GoldSliderMoved(float value) { goldGivenLabel.text = ((int)value).ToString(); } - public override SelectedCommand Command - { - get - { - var cmd = new SelectedCommand - { - HeroGiftCommand = new HeroGiftSelectedCommand - { - RecipientHeroId = SelectedHeroId, - Amount = SelectedGoldAmount - } + public override SelectedCommand Command { + get { + var cmd = new SelectedCommand { + HeroGiftCommand = + new HeroGiftSelectedCommand { + RecipientHeroId = SelectedHeroId, + Amount = SelectedGoldAmount + } }; return cmd; diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ImproveCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ImproveCommandSelector.cs index 41b323e68b..60f46a0981 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ImproveCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ImproveCommandSelector.cs @@ -8,13 +8,11 @@ using TMPro; using UnityEngine.UI; using Net.Eagle0.Eagle.Api.Command.Util; -namespace eagle -{ +namespace eagle { using ProvinceId = Int32; using HeroId = Int32; - public class ImproveCommandSelector : CommandSelector - { + public class ImproveCommandSelector : CommandSelector { public HeroDropdownController heroDropdownController; public TMP_Dropdown typeDropdown; public Toggle lockToggle; @@ -24,32 +22,32 @@ namespace eagle private int SelectedTypeIndex => typeDropdown.value; private ImproveAvailableCommand ImproveAvailableCommand => _availableCommand.ImproveCommand; private ProvinceId ActingProvinceId => ImproveAvailableCommand.ActingProvinceId; - private ImprovementType SelectedType => ImproveAvailableCommand.AvailableTypes[SelectedTypeIndex]; + private ImprovementType SelectedType => + ImproveAvailableCommand.AvailableTypes[SelectedTypeIndex]; - private Dictionary lockedTypes = new Dictionary(); + private Dictionary lockedTypes = + new Dictionary(); - private double ImprovementValueForType(ImprovementType type) - { + private double ImprovementValueForType(ImprovementType type) { var province = _model.Provinces[ActingProvinceId]; - switch (type) - { + switch (type) { case ImprovementType.Agriculture: return province.FullInfo.Agriculture; case ImprovementType.Economy: return province.FullInfo.Economy; case ImprovementType.Infrastructure: return province.FullInfo.Infrastructure; - case ImprovementType.Devastation: return province.FullInfo.EconomyDevastation + province.FullInfo.AgricultureDevastation + province.FullInfo.InfrastructureDevastation; + case ImprovementType.Devastation: + return province.FullInfo.EconomyDevastation + + province.FullInfo.AgricultureDevastation + + province.FullInfo.InfrastructureDevastation; default: throw new InvalidOperationException($"unknown type {type}"); } } - private int MinimumImprovementIndex(ProvinceView province) - { + private int MinimumImprovementIndex(ProvinceView province) { var minIndex = 0; double minValue = ImprovementValueForType(ImproveAvailableCommand.AvailableTypes[0]); - for (int i = 1; i < ImproveAvailableCommand.AvailableTypes.Count; i++) - { + for (int i = 1; i < ImproveAvailableCommand.AvailableTypes.Count; i++) { double thisVal = ImprovementValueForType(ImproveAvailableCommand.AvailableTypes[i]); - if (thisVal < minValue) - { + if (thisVal < minValue) { minIndex = i; minValue = thisVal; } @@ -57,111 +55,94 @@ namespace eagle return minIndex; } - protected override void SetUpUI() - { + protected override void SetUpUI() { var province = _model.Provinces[ImproveAvailableCommand.ActingProvinceId]; var improveCommand = ImproveAvailableCommand; typeDropdown.ClearOptions(); - orderedHeroes = ImproveAvailableCommand.AvailableHeroIds.Select(id => _model.Heroes[id]).ToList(); + orderedHeroes = ImproveAvailableCommand.AvailableHeroIds.Select(id => _model.Heroes[id]) + .ToList(); heroDropdownController.AvailableHeroes = orderedHeroes; heroDropdownController.SelectedHeroId = improveCommand.RecommendedHeroId; - typeDropdown.AddOptions(improveCommand.AvailableTypes.Select(DropdownStringForType).ToList()); + typeDropdown.AddOptions( + improveCommand.AvailableTypes.Select(DropdownStringForType).ToList()); - var devastationIndex = improveCommand.AvailableTypes.IndexOf(ImprovementType.Devastation); - if (devastationIndex == -1) - { + var devastationIndex = + improveCommand.AvailableTypes.IndexOf(ImprovementType.Devastation); + if (devastationIndex == -1) { typeDropdown.value = MinimumImprovementIndex(province); - } - else - { + } else { typeDropdown.value = devastationIndex; } typeDropdown.interactable = true; - if (lockedTypes.ContainsKey(province.Id)) - { + if (lockedTypes.ContainsKey(province.Id)) { var lockedType = lockedTypes[province.Id]; var lockedTypeIndex = improveCommand.AvailableTypes.IndexOf(lockedType); - if (lockedTypeIndex > -1) - { + if (lockedTypeIndex > -1) { typeDropdown.value = lockedTypeIndex; lockToggle.isOn = true; typeDropdown.interactable = false; - } - else - { + } else { lockToggle.isOn = false; } - } - else - { + } else { lockToggle.isOn = false; } - } - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.ImproveCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.ImproveCommand; public override string HeaderString => "Improve Province"; public override string CommitButtonString => "Commit Improvement"; - public override List TargetedHeroIds => new List { heroDropdownController.SelectedHeroId }; - public override bool HeroIsTargetable(HeroId heroId) - { + public override List TargetedHeroIds => + new List { heroDropdownController.SelectedHeroId }; + public override bool HeroIsTargetable(HeroId heroId) { var index = orderedHeroes.FindIndex(h => h.Id == heroId); return index != -1; } - public override void AddTargetedHero(int heroId) - { + public override void AddTargetedHero(int heroId) { heroDropdownController.SelectedHeroId = heroId; } - public void LockToggled(bool isLocked) - { - if (isLocked) - { + public void LockToggled(bool isLocked) { + if (isLocked) { lockedTypes[ImproveAvailableCommand.ActingProvinceId] = SelectedType; typeDropdown.interactable = false; - } - else - { + } else { lockedTypes.Remove(ActingProvinceId); typeDropdown.interactable = true; } } - public override SelectedCommand Command => new SelectedCommand - { - ImproveCommand = new ImproveSelectedCommand - { - ImprovementType = SelectedType, - ActingHeroId = heroDropdownController.SelectedHeroId - } + public override SelectedCommand Command => new SelectedCommand { + ImproveCommand = + new ImproveSelectedCommand { + ImprovementType = SelectedType, + ActingHeroId = heroDropdownController.SelectedHeroId + } }; - private string DropdownStringForType(ImprovementType type) - { + private string DropdownStringForType(ImprovementType type) { return $"{type} ({RoundedNonzeroStat(ImprovementValueForType(type))})"; } - private string RoundedNonzeroStat(double stat) - { + private string RoundedNonzeroStat(double stat) { var rounded = Math.Max(1, Math.Round(stat, MidpointRounding.AwayFromZero)); return rounded.ToString(); } - private string DropdownStringForHero(HeroView hero) - { - return $"{hero.Name}: " - + $"{RoundedNonzeroStat(hero.Strength)} STR, " - + $"{RoundedNonzeroStat(hero.Agility)} AGI, " - + $"{GUIUtils.ConditionString(hero.Vigor, true)} / {RoundedNonzeroStat(hero.Constitution)} VIG" - + ((hero.Profession == Profession.Engineer) ? " (Engineer)" : ""); + private string DropdownStringForHero(HeroView hero) { + return $"{hero.Name}: " + $"{RoundedNonzeroStat(hero.Strength)} STR, " + + $"{RoundedNonzeroStat(hero.Agility)} AGI, " + + $"{GUIUtils.ConditionString(hero.Vigor, true)} / {RoundedNonzeroStat(hero.Constitution)} VIG" + + ((hero.Profession == Profession.Engineer) ? " (Engineer)" : ""); } } } \ No newline at end of file diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/IssueOrdersCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/IssueOrdersCommandSelector.cs index 04b2b55f56..a22b87a796 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/IssueOrdersCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/IssueOrdersCommandSelector.cs @@ -8,12 +8,10 @@ using UnityEngine; using TMPro; using Net.Eagle0.Eagle.Api.Command.Util; -namespace eagle -{ +namespace eagle { using ProvinceId = Int32; - public class IssueOrdersCommandSelector : CommandSelector - { + public class IssueOrdersCommandSelector : CommandSelector { IList availableOrderTypes; Dictionary currentOrders; List newOrders; @@ -27,14 +25,13 @@ namespace eagle public GameObject scrollContent; public GameObject provinceOrdersRowPrefab; - private IssueOrdersAvailableCommand IssueOrdersAvailableCommand => _availableCommand.IssueOrdersCommand; + private IssueOrdersAvailableCommand IssueOrdersAvailableCommand => + _availableCommand.IssueOrdersCommand; private ProvinceId ActingProvinceId => IssueOrdersAvailableCommand.ActingProvinceId; - protected override ProvinceId? TargetedProvince - { + protected override ProvinceId? TargetedProvince { get => SelectedFocusProvince; - set - { + set { var index = availableFocusProvinces.IndexOf(value); if (index == -1) return; @@ -42,53 +39,58 @@ namespace eagle } } - private List GetAvailableFocusProvinces() - { + private List GetAvailableFocusProvinces() { var pids = _model.ProvincesForFaction(_model.PlayerId.Value); var optionals = new List { null }; optionals.AddRange(pids.Select(x => (ProvinceId?)x)); return optionals; } - private string OptionalProvinceName(ProvinceId? pid) - { + private string OptionalProvinceName(ProvinceId? pid) { if (pid.HasValue) return _model.Provinces[pid.Value].Name; - else return "None"; + else + return "None"; } - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.IssueOrdersCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.IssueOrdersCommand; override public string HeaderString => "Issue Orders"; override public string CommitButtonString => "Commit Orders"; - override public bool EnableCommitButton => (newOrders.Any(x => x.Orders != currentOrders[x.ProvinceId])) || (SelectedFocusProvince != startingFocusProvince); + override public bool EnableCommitButton => + (newOrders.Any(x => x.Orders != currentOrders[x.ProvinceId])) || + (SelectedFocusProvince != startingFocusProvince); public override string DisabledCommitButtonReason => "No province orders have changed"; - override protected void SetUpUI() - { + override protected void SetUpUI() { availableOrderTypes = IssueOrdersAvailableCommand.AvailableOrders; - currentOrders = IssueOrdersAvailableCommand.CurrentOrders.ToDictionary(x => x.ProvinceId, x => x.Orders); + currentOrders = IssueOrdersAvailableCommand.CurrentOrders.ToDictionary( + x => x.ProvinceId, + x => x.Orders); newOrders = IssueOrdersAvailableCommand.CurrentOrders.ToList(); - newOrders.Sort((x, y) => _model.Provinces[x.ProvinceId].Name.CompareTo(_model.Provinces[y.ProvinceId].Name)); + newOrders.Sort( + (x, y) => _model.Provinces[x.ProvinceId].Name.CompareTo( + _model.Provinces[y.ProvinceId].Name)); provinceIds = newOrders.Select(x => x.ProvinceId).ToList(); - foreach (Transform row in scrollContent.transform) - { - Destroy(row.gameObject); - } + foreach (Transform row in scrollContent.transform) { Destroy(row.gameObject); } var parentTransform = scrollContent.transform; var oddColor = provinceOrdersRowPrefab.GetComponent().color; oddColor.a = 0; - for (int i = 0; i < provinceIds.Count; i++) - { + for (int i = 0; i < provinceIds.Count; i++) { var pid = provinceIds[i]; var province = _model.Provinces[pid]; - var newRow = Instantiate(provinceOrdersRowPrefab, new Vector3(0, 0, 0), new Quaternion(0, 0, 0, 0), parentTransform); + var newRow = Instantiate( + provinceOrdersRowPrefab, + new Vector3(0, 0, 0), + new Quaternion(0, 0, 0, 0), + parentTransform); // FIXME: I don't know why this reset of the z-position is necessary var position = newRow.GetComponent().anchoredPosition3D; @@ -103,43 +105,39 @@ namespace eagle var ordersDropdown = newRow.GetComponentInChildren(); ordersDropdown.ClearOptions(); - ordersDropdown.AddOptions(availableOrderTypes.Select(tp => DisplayNames.ProvinceOrderTypeNames[tp]).ToList()); + ordersDropdown.AddOptions( + availableOrderTypes.Select(tp => DisplayNames.ProvinceOrderTypeNames[tp]) + .ToList()); ordersDropdown.value = availableOrderTypes.IndexOf(currentOrders[pid]); int index = i; - ordersDropdown.onValueChanged.AddListener(newValue => ProvinceOrdersValueChanged(index, newValue)); + ordersDropdown.onValueChanged.AddListener( + newValue => ProvinceOrdersValueChanged(index, newValue)); - if (i % 2 == 1) - { - newRow.GetComponent().color = oddColor; - } + if (i % 2 == 1) { newRow.GetComponent().color = oddColor; } } - startingFocusProvince = _model.MaybeDestroyedFaction(_model.PlayerId.Value).FocusProvinceId; + startingFocusProvince = + _model.MaybeDestroyedFaction(_model.PlayerId.Value).FocusProvinceId; availableFocusProvinces = GetAvailableFocusProvinces(); - availableFocusProvinceNames = availableFocusProvinces.Select(OptionalProvinceName).ToList(); + availableFocusProvinceNames = + availableFocusProvinces.Select(OptionalProvinceName).ToList(); focusDropdown.ClearOptions(); focusDropdown.AddOptions(availableFocusProvinceNames); focusDropdown.value = availableFocusProvinces.IndexOf(startingFocusProvince); } - override public SelectedCommand Command - { - get - { + override public SelectedCommand Command { + get { var sentOrders = newOrders.Where(x => x.Orders != currentOrders[x.ProvinceId]); var ordersCommand = new IssueOrdersSelectedCommand(); ordersCommand.NewOrders.Add(sentOrders); ordersCommand.NewFocusProvince = SelectedFocusProvince; - return new SelectedCommand - { - IssueOrdersCommand = ordersCommand - }; + return new SelectedCommand { IssueOrdersCommand = ordersCommand }; } } - public void ProvinceOrdersValueChanged(int index, Int32 newValue) - { + public void ProvinceOrdersValueChanged(int index, Int32 newValue) { newOrders[index].Orders = availableOrderTypes[newValue]; } } diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ManagePrisonersCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ManagePrisonersCommandSelector.cs index 1fc58a3c22..b036cab4e2 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ManagePrisonersCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/ManagePrisonersCommandSelector.cs @@ -31,40 +31,48 @@ namespace eagle { public HeroView SelectedHero => SelectedPrisonerToManage.Prisoner.Hero; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.ManagePrisonerCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.ManagePrisonerCommand; public override string HeaderString => "Manage Prisoners"; - public override string CommitButtonString => $"Commit {DisplayNames.PrisonerManagementTypeName(SelectedOption)}"; + public override string CommitButtonString => + $"Commit {DisplayNames.PrisonerManagementTypeName(SelectedOption)}"; private int _selectedHeroIndex; - private PrisonerToManage SelectedPrisonerToManage => ManagePrisonersCommand.Prisoners[_selectedHeroIndex]; + private PrisonerToManage SelectedPrisonerToManage => + ManagePrisonersCommand.Prisoners[_selectedHeroIndex]; - private ManagePrisonersAvailableCommand ManagePrisonersCommand => _availableCommand.ManagePrisonerCommand; + private ManagePrisonersAvailableCommand ManagePrisonersCommand => + _availableCommand.ManagePrisonerCommand; private ProvinceId ActingProvinceId => ManagePrisonersCommand.ActingProvinceId; public override bool WarnOnCommitButton => false; - public override string CommitWarningText => $"This will create a treaty with {_model.FactionName(SelectedHero.FactionId.Value)}"; + public override string CommitWarningText => + $"This will create a treaty with {_model.FactionName(SelectedHero.FactionId.Value)}"; private PrisonerManagementOption SelectedOption { get { if (ExecuteToggle.isOn) - return SelectedPrisonerToManage - .AvailableOptions - .First(opt => opt.SealedValueCase == PrisonerManagementOption.SealedValueOneofCase.Execute); - else throw new ArgumentOutOfRangeException("Unknown prisoner management option"); + return SelectedPrisonerToManage.AvailableOptions.First( + opt => opt.SealedValueCase == + PrisonerManagementOption.SealedValueOneofCase.Execute); + else + throw new ArgumentOutOfRangeException("Unknown prisoner management option"); } } protected override void SetUpUI() { - if (_selectedHeroIndex >= ManagePrisonersCommand.Prisoners.Count) _selectedHeroIndex = 0; + if (_selectedHeroIndex >= ManagePrisonersCommand.Prisoners.Count) + _selectedHeroIndex = 0; NextHeroButton.gameObject.SetActive(ManagePrisonersCommand.Prisoners.Count > 1); DisplaySelectedHero(); } public override SelectedCommand Command => new SelectedCommand { - ManagePrisonersCommand = new ManagePrisonersSelectedCommand { - PrisonerHeroId = SelectedHero.Id, - ChosenOption = SelectedOption - } + ManagePrisonersCommand = + new ManagePrisonersSelectedCommand { + PrisonerHeroId = SelectedHero.Id, + ChosenOption = SelectedOption + } }; public void NextHeroButtonClicked() { @@ -83,15 +91,33 @@ namespace eagle { // The order here is important: the last available toggle in this list // will be on by default - ConditionallyEnable(ExecuteToggle, ExecuteIcon, PrisonerManagementOption.SealedValueOneofCase.Execute); - ConditionallyEnable(ExileToggle, ExileIcon, PrisonerManagementOption.SealedValueOneofCase.Exile); - ConditionallyEnable(ReturnToggle, ReturnIcon, PrisonerManagementOption.SealedValueOneofCase.Return); - ConditionallyEnable(MoveToggle, MoveIcon, PrisonerManagementOption.SealedValueOneofCase.Move); - ConditionallyEnable(ReleaseToggle, ReleaseIcon, PrisonerManagementOption.SealedValueOneofCase.Release); + ConditionallyEnable( + ExecuteToggle, + ExecuteIcon, + PrisonerManagementOption.SealedValueOneofCase.Execute); + ConditionallyEnable( + ExileToggle, + ExileIcon, + PrisonerManagementOption.SealedValueOneofCase.Exile); + ConditionallyEnable( + ReturnToggle, + ReturnIcon, + PrisonerManagementOption.SealedValueOneofCase.Return); + ConditionallyEnable( + MoveToggle, + MoveIcon, + PrisonerManagementOption.SealedValueOneofCase.Move); + ConditionallyEnable( + ReleaseToggle, + ReleaseIcon, + PrisonerManagementOption.SealedValueOneofCase.Release); } - private bool ConditionallyEnable(Toggle toggle, PrisonerManagementOption.SealedValueOneofCase option) { - bool enable = SelectedPrisonerToManage.AvailableOptions.Any(opt => opt.SealedValueCase == option); + private bool ConditionallyEnable( + Toggle toggle, + PrisonerManagementOption.SealedValueOneofCase option) { + bool enable = SelectedPrisonerToManage.AvailableOptions.Any( + opt => opt.SealedValueCase == option); toggle.gameObject.SetActive(enable); if (enable) { @@ -102,13 +128,16 @@ namespace eagle { ReturnToggle.isOn = false; toggle.isOn = true; - } - else toggle.isOn = false; + } else + toggle.isOn = false; return enable; } - private void ConditionallyEnable(Toggle toggle, RawImage img, PrisonerManagementOption.SealedValueOneofCase option) { + private void ConditionallyEnable( + Toggle toggle, + RawImage img, + PrisonerManagementOption.SealedValueOneofCase option) { bool enable = ConditionallyEnable(toggle, option); Color color = img.color; diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/MarchCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/MarchCommandSelector.cs index 6fa3d50ffd..36dd0d4d69 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/MarchCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/MarchCommandSelector.cs @@ -7,30 +7,24 @@ using UnityEngine.UI; using EagleGUIUtils; using TMPro; -namespace eagle -{ +namespace eagle { using PlayerId = System.Int32; using ProvinceId = System.Int32; using BattalionId = System.Int32; using HeroId = System.Int32; using static Net.Eagle0.Eagle.Api.Command.Util.SuitableBattalions.Types; - struct Supplies - { + struct Supplies { public int gold; public int food; } - public class MarchCommandSelector : CommandSelector - { + public class MarchCommandSelector : CommandSelector { private int SelectedOriginProvinceIndex => fromDropdown.value; private int SelectedDestinationProvinceIndex => toDropdown.value; private List SelectedActingUnits => unitSelector.SelectedActingUnits; - private Supplies SelectedSupplies => new Supplies - { - gold = SelectedGold, - food = SelectedFood - }; + private Supplies SelectedSupplies => + new Supplies { gold = SelectedGold, food = SelectedFood }; private int SelectedGold => (int)goldSlider.value; private int SelectedFood => (int)foodSlider.value; @@ -48,79 +42,93 @@ namespace eagle private int recommendedFood; private int recommendedGold; - public override AvailableCommand.SealedValueOneofCase CommandType => AvailableCommand.SealedValueOneofCase.MarchCommand; + public override AvailableCommand.SealedValueOneofCase CommandType => + AvailableCommand.SealedValueOneofCase.MarchCommand; public override string HeaderString => "March"; public override string CommitButtonString => "Commit March"; private MarchAvailableCommand MarchAvailableCommand => _availableCommand.MarchCommand; private ProvinceId ActingProvinceId => MarchAvailableCommand.ActingProvinceId; - public override List TargetedHeroIds => unitSelector.SelectedIds.Where(u => u.heroId.HasValue).Select(u => u.heroId.Value).ToList(); - public override bool HeroIsTargetable(HeroId heroId) => unitSelector.HeroIsTargetable(heroId); + public override List TargetedHeroIds => + unitSelector.SelectedIds.Where(u => u.heroId.HasValue) + .Select(u => u.heroId.Value) + .ToList(); + public override bool HeroIsTargetable(HeroId heroId) => + unitSelector.HeroIsTargetable(heroId); public override void AddTargetedHero(HeroId heroId) => unitSelector.AddTargetedHero(heroId); - public override void RemoveTargetedHero(HeroId heroId) => unitSelector.RemoveTargetedHero(heroId); + public override void RemoveTargetedHero(HeroId heroId) => + unitSelector.RemoveTargetedHero(heroId); - public override List TargetedBattalionIds => unitSelector.SelectedIds.Where(u => u.battalion != null).Select(u => u.battalion.Id).ToList(); - public override bool BattalionIsTargetable(BattalionId bid) => unitSelector.BattalionIsTargetable(bid); - public override void AddTargetedBattalion(BattalionId bid) => unitSelector.AddTargetedBattalion(bid); - public override void RemoveTargetedBattalion(BattalionId bid) => unitSelector.RemoveTargetedBattalion(bid); + public override List TargetedBattalionIds => + unitSelector.SelectedIds.Where(u => u.battalion != null) + .Select(u => u.battalion.Id) + .ToList(); + public override bool BattalionIsTargetable(BattalionId bid) => + unitSelector.BattalionIsTargetable(bid); + public override void AddTargetedBattalion(BattalionId bid) => + unitSelector.AddTargetedBattalion(bid); + public override void RemoveTargetedBattalion(BattalionId bid) => + unitSelector.RemoveTargetedBattalion(bid); private List sortedOneProvinceCommands; private List sortedDestinationProvinceIds; - private ProvinceView OriginProvince => _model.Provinces[SelectedOneProvinceCommand.OriginProvinceId]; - private ProvinceId DestinationProvinceId => sortedDestinationProvinceIds[SelectedDestinationProvinceIndex]; + private ProvinceView OriginProvince => + _model.Provinces[SelectedOneProvinceCommand.OriginProvinceId]; + private ProvinceId DestinationProvinceId => + sortedDestinationProvinceIds[SelectedDestinationProvinceIndex]; private ProvinceView DestinationProvince => _model.Provinces[DestinationProvinceId]; - private bool WouldAbandonProvince => unitSelector.SelectedActingUnits.Count() == OriginProvince.FullInfo.RulingFactionHeroIds.Count(); + private bool WouldAbandonProvince => unitSelector.SelectedActingUnits.Count() == + OriginProvince.FullInfo.RulingFactionHeroIds.Count(); - private bool NotEnoughFood => SelectedFood < Math.Min(2 * FoodCost, SelectedOneProvinceCommand.FoodAvailable); + private bool NotEnoughFood => + SelectedFood < Math.Min(2 * FoodCost, SelectedOneProvinceCommand.FoodAvailable); private PlayerId? DestinationRuler = null; - private bool MarchingOnTreatyPartner => ( - DestinationRuler.HasValue && - DestinationRuler.Value != playerId && - _model.MaybeDestroyedFaction(playerId).Treaties.ToList().Exists(t => t.TargetFactionId == DestinationRuler) - ); + private bool MarchingOnTreatyPartner => + (DestinationRuler.HasValue && DestinationRuler.Value != playerId && + _model.MaybeDestroyedFaction(playerId).Treaties.ToList().Exists( + t => t.TargetFactionId == DestinationRuler)); - private bool BadlyConstructedUnits => unitSelector.HeroIdsLeadingInappropriateUnits.Count > 0; + private bool BadlyConstructedUnits => + unitSelector.HeroIdsLeadingInappropriateUnits.Count > 0; - private bool NoBattalionsIntoEnemy => unitSelector.BattalionCount == 0 && DestinationProvince.RulingFactionId.HasValue && DestinationProvince.RulingFactionId.Value != playerId; + private bool NoBattalionsIntoEnemy => unitSelector.BattalionCount == 0 && + DestinationProvince.RulingFactionId.HasValue && + DestinationProvince.RulingFactionId.Value != playerId; - public override bool WarnOnCommitButton => WouldAbandonProvince || NotEnoughFood || MarchingOnTreatyPartner || BadlyConstructedUnits || NoBattalionsIntoEnemy; - public override string CommitWarningText - { - get - { + public override bool WarnOnCommitButton => WouldAbandonProvince || NotEnoughFood || + MarchingOnTreatyPartner || + BadlyConstructedUnits || NoBattalionsIntoEnemy; + public override string CommitWarningText { + get { if (!(WarnOnCommitButton)) return null; string txt = ""; - if (WouldAbandonProvince) - { + if (WouldAbandonProvince) { txt = txt + "This action would abandon this province\n\n"; } - if (NotEnoughFood) - { - txt = txt + $"You have not selected enough food for your battalions for 2 months ({2 * FoodCost} needed)\n\n"; + if (NotEnoughFood) { + txt = txt + + $"You have not selected enough food for your battalions for 2 months ({2 * FoodCost} needed)\n\n"; } - if (MarchingOnTreatyPartner) - { - txt = txt + $"You have a treaty with {_model.FactionName(DestinationRuler.Value)}.\n\n"; + if (MarchingOnTreatyPartner) { + txt = txt + + $"You have a treaty with {_model.FactionName(DestinationRuler.Value)}.\n\n"; + } else if (NoBattalionsIntoEnemy) { + txt = txt + + $"{DestinationProvince.Name} is occupied by a hostile faction, and you have not selected any troops\n\n"; } - else if (NoBattalionsIntoEnemy) - { - txt = txt + $"{DestinationProvince.Name} is occupied by a hostile faction, and you have not selected any troops\n\n"; - } - if (BadlyConstructedUnits) - { + if (BadlyConstructedUnits) { var count = unitSelector.HeroIdsLeadingInappropriateUnits.Count; - if (count == 1) - { - txt = txt + $"{_model.Heroes[unitSelector.HeroIdsLeadingInappropriateUnits[0]].Name} is leading a battalion type that would restrict their abilities\n\n"; - } - else - { - txt = txt + $"Some of your heroes are leading battalion types that would restrict their abilities\n\n"; + if (count == 1) { + txt = txt + + $"{_model.Heroes[unitSelector.HeroIdsLeadingInappropriateUnits[0]].Name} is leading a battalion type that would restrict their abilities\n\n"; + } else { + txt = txt + + $"Some of your heroes are leading battalion types that would restrict their abilities\n\n"; } } @@ -128,19 +136,16 @@ namespace eagle } } - private MarchCommandFromOneProvince SelectedOneProvinceCommand => sortedOneProvinceCommands[SelectedOriginProvinceIndex]; + private MarchCommandFromOneProvince SelectedOneProvinceCommand => + sortedOneProvinceCommands[SelectedOriginProvinceIndex]; - protected override ProvinceId? TargetedProvince - { + protected override ProvinceId? TargetedProvince { get => sortedDestinationProvinceIds[SelectedDestinationProvinceIndex]; - set - { - if (value.HasValue) - { + set { + if (value.HasValue) { int index = sortedDestinationProvinceIds.IndexOf(value.Value); - if (index != -1) - toDropdown.value = index; + if (index != -1) toDropdown.value = index; else toDropdown.value = 0; } @@ -148,35 +153,27 @@ namespace eagle } public int FoodCost => (int)Math.Ceiling( - SelectedActingUnits - .Where(u => u.BattalionId.HasValue) - .Select(u => u.BattalionId.Value) - .Select(bid => SelectedOneProvinceCommand.AvailableBattalions.First(bwfc => bwfc.BattalionId == bid)) - .Select(bwfc => bwfc.MonthlyFood) - .Sum() - ); + SelectedActingUnits.Where(u => u.BattalionId.HasValue) + .Select(u => u.BattalionId.Value) + .Select(bid => SelectedOneProvinceCommand.AvailableBattalions.First( + bwfc => bwfc.BattalionId == bid)) + .Select(bwfc => bwfc.MonthlyFood) + .Sum()); - public override bool EnableCommitButton => ( - unitSelector.UnitsAreValid - && (SelectedFood >= FoodCost || SelectedFood >= SelectedOneProvinceCommand.FoodAvailable) - && SelectedFood <= SelectedOneProvinceCommand.FoodAvailable - && SelectedGold >= SelectedOneProvinceCommand.GoldCost - && SelectedGold <= SelectedOneProvinceCommand.GoldAvailable - ); - public override string DisabledCommitButtonReason - { - get - { - if (SelectedGold > SelectedOneProvinceCommand.GoldAvailable) - { + public override bool EnableCommitButton => + (unitSelector.UnitsAreValid && + (SelectedFood >= FoodCost || + SelectedFood >= SelectedOneProvinceCommand.FoodAvailable) && + SelectedFood <= SelectedOneProvinceCommand.FoodAvailable && + SelectedGold >= SelectedOneProvinceCommand.GoldCost && + SelectedGold <= SelectedOneProvinceCommand.GoldAvailable); + public override string DisabledCommitButtonReason { + get { + if (SelectedGold > SelectedOneProvinceCommand.GoldAvailable) { return "Trying to send more gold than available"; - } - else if (SelectedFood > SelectedOneProvinceCommand.FoodAvailable) - { + } else if (SelectedFood > SelectedOneProvinceCommand.FoodAvailable) { return "Trying to send more food than available"; - } - else if (SelectedFood < FoodCost) - { + } else if (SelectedFood < FoodCost) { return $"Must send at least {FoodCost} food"; } @@ -184,15 +181,15 @@ namespace eagle } } - private void SetUpDestinationProvinceDropdown() - { - sortedDestinationProvinceIds = SelectedOneProvinceCommand - .AvailableDestinationProvinces - .OrderBy(pid => _model.Provinces[pid].Name) - .ToList(); + private void SetUpDestinationProvinceDropdown() { + sortedDestinationProvinceIds = SelectedOneProvinceCommand.AvailableDestinationProvinces + .OrderBy(pid => _model.Provinces[pid].Name) + .ToList(); var destinationProvinceNames = sortedDestinationProvinceIds - .Select(id => GUIUtils.DarkColoredProvinceName(_model.Provinces[id], _model.PlayerId.Value)) - .ToList(); + .Select(id => GUIUtils.DarkColoredProvinceName( + _model.Provinces[id], + _model.PlayerId.Value)) + .ToList(); toDropdown.ClearOptions(); toDropdown.AddOptions(destinationProvinceNames); @@ -201,40 +198,41 @@ namespace eagle toDropdown.value = 0; } - private void SetUpUnitSelector() - { + private void SetUpUnitSelector() { var dict = new Dictionary>(); - foreach (var kv in SelectedOneProvinceCommand.SuitableBattalionsForHeroes) - { + foreach (var kv in SelectedOneProvinceCommand.SuitableBattalionsForHeroes) { dict.Add(kv.Key, kv.Value.BattalionIdsWithSuitability.ToList()); } var recommendedConfig = SelectedOneProvinceCommand.RecommendedBattleConfig; - List recommendedUnits = recommendedConfig == null ? new List() : recommendedConfig.Units.ToList(); + List recommendedUnits = recommendedConfig == null + ? new List() + : recommendedConfig.Units.ToList(); recommendedFood = recommendedConfig == null ? 0 : recommendedConfig.Food; recommendedGold = recommendedConfig == null ? 0 : recommendedConfig.Gold; var province = _model.Provinces[SelectedOneProvinceCommand.OriginProvinceId]; - var availableBattalionIds = SelectedOneProvinceCommand.AvailableBattalions.Select(b => b.BattalionId).ToList(); - var orderedBattalions = ProvinceUtils.OrderedBattalions(province).Where(batt => availableBattalionIds.Contains(batt.Id)).ToList(); + var availableBattalionIds = + SelectedOneProvinceCommand.AvailableBattalions.Select(b => b.BattalionId) + .ToList(); + var orderedBattalions = ProvinceUtils.OrderedBattalions(province) + .Where(batt => availableBattalionIds.Contains(batt.Id)) + .ToList(); unitSelector.SetUpUnits( - _model, - SelectedOneProvinceCommand.AvailableHeroIds.ToList(), - orderedBattalions, - dict, - recommendedUnits - ); + _model, + SelectedOneProvinceCommand.AvailableHeroIds.ToList(), + orderedBattalions, + dict, + recommendedUnits); } - public void RecommendedButtonClicked() - { + public void RecommendedButtonClicked() { foodSlider.value = recommendedFood; goldSlider.value = recommendedGold; } - public void FromDropdownValueChanged(Int32 newValue) - { + public void FromDropdownValueChanged(Int32 newValue) { SetUpDestinationProvinceDropdown(); SetUpUnitSelector(); @@ -251,33 +249,29 @@ namespace eagle goldSlider.value = SelectedOneProvinceCommand.GoldCost; } - public void ToDropdownValueChanged(Int32 newValue) - { - } + public void ToDropdownValueChanged(Int32 newValue) {} - protected override void SetUpUI() - { - sortedOneProvinceCommands = MarchAvailableCommand - .OneProvinceCommands - .OrderBy(cmd => _model.Provinces[cmd.OriginProvinceId].Name) - .ToList(); + protected override void SetUpUI() { + sortedOneProvinceCommands = + MarchAvailableCommand.OneProvinceCommands + .OrderBy(cmd => _model.Provinces[cmd.OriginProvinceId].Name) + .ToList(); - var availableOriginProvinceNames = sortedOneProvinceCommands - .Select(cmd => _model.Provinces[cmd.OriginProvinceId].Name) - .ToList(); + var availableOriginProvinceNames = + sortedOneProvinceCommands + .Select(cmd => _model.Provinces[cmd.OriginProvinceId].Name) + .ToList(); fromDropdown.ClearOptions(); fromDropdown.AddOptions(availableOriginProvinceNames); fromDropdown.onValueChanged.RemoveAllListeners(); fromDropdown.onValueChanged.AddListener(FromDropdownValueChanged); - var thisProvinceIndex = sortedOneProvinceCommands.FindIndex(cmd => cmd.OriginProvinceId == ActingProvinceId); - if (thisProvinceIndex == -1) - { + var thisProvinceIndex = sortedOneProvinceCommands.FindIndex( + cmd => cmd.OriginProvinceId == ActingProvinceId); + if (thisProvinceIndex == -1) { fromDropdown.value = 0; - } - else - { + } else { fromDropdown.value = thisProvinceIndex; } @@ -295,51 +289,42 @@ namespace eagle goldSlider.maxValue = SelectedOneProvinceCommand.GoldAvailable; foodSlider.value = 0; - goldSlider.value = Math.Min(SelectedOneProvinceCommand.GoldCost, SelectedOneProvinceCommand.GoldAvailable); + goldSlider.value = Math.Min( + SelectedOneProvinceCommand.GoldCost, + SelectedOneProvinceCommand.GoldAvailable); setFoodLabels(); setGoldLabels(); } - public void onGoldSliderChanged(float value) - { - setGoldLabels(); - } + public void onGoldSliderChanged(float value) { setGoldLabels(); } - public void onFoodSliderChanged(float value) - { - setFoodLabels(); - } + public void onFoodSliderChanged(float value) { setFoodLabels(); } - public void setGoldLabels() - { + public void setGoldLabels() { int taken = (int)goldSlider.value; int left = (int)goldSlider.maxValue - taken; goldTakenLabel.text = taken.ToString(); goldLeftLabel.text = left.ToString(); } - public void setFoodLabels() - { + public void setFoodLabels() { int taken = (int)foodSlider.value; int left = (int)foodSlider.maxValue - taken; foodTakenLabel.text = taken.ToString(); foodLeftLabel.text = left.ToString(); } - public override SelectedCommand Command - { - get - { - var cmd = new SelectedCommand - { - MarchCommand = new MarchSelectedCommand - { - DestinationProvinceId = DestinationProvinceId, - Food = SelectedSupplies.food, - Gold = SelectedSupplies.gold, - OriginProvince = SelectedOneProvinceCommand.OriginProvinceId - } + public override SelectedCommand Command { + get { + var cmd = new SelectedCommand { + MarchCommand = + new MarchSelectedCommand { + DestinationProvinceId = DestinationProvinceId, + Food = SelectedSupplies.food, + Gold = SelectedSupplies.gold, + OriginProvince = SelectedOneProvinceCommand.OriginProvinceId + } }; cmd.MarchCommand.MarchingUnits.AddRange(SelectedActingUnits); diff --git a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/OrganizeTroopsCommandSelector.cs b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/OrganizeTroopsCommandSelector.cs index 480979c080..ff50cac813 100644 --- a/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/OrganizeTroopsCommandSelector.cs +++ b/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Eagle/CommandSelectors/OrganizeTroopsCommandSelector.cs @@ -8,22 +8,20 @@ using TMPro; using UnityEngine; using UnityEngine.UI; -namespace eagle -{ +namespace eagle { using static Net.Eagle0.Eagle.Api.OrganizeTroopsSelectedCommand.Types; using BattalionId = Int32; using ProvinceId = Int32; - public class OrganizeTroopsCommandSelector : CommandSelector - { + public class OrganizeTroopsCommandSelector : CommandSelector { Dictionary costDict = new Dictionary(); - private OrganizeTroopsAvailableCommand OrganizeTroopsAvailableCommand => _availableCommand.OrganizeTroopsCommand; + private OrganizeTroopsAvailableCommand OrganizeTroopsAvailableCommand => + _availableCommand.OrganizeTroopsCommand; private ProvinceId ActingProvinceId => OrganizeTroopsAvailableCommand.ActingProvinceId; private ProvinceView Province => _model.Provinces[ActingProvinceId]; - private class NewBattalionInfo : BattalionDisplayInfo - { + private class NewBattalionInfo : BattalionDisplayInfo { public NewBattalion newBattalion; private BattalionTypeId _typeId; @@ -37,36 +35,46 @@ namespace eagle public override BattalionTypeId TypeId => _typeId; public override string Name => null; - public BattalionView Update(List existingBattalions) - { + public BattalionView Update(List existingBattalions) { _updated = new BattalionView { Type = newBattalion.Type }; _updated.Size = newBattalion.NewTroops; - foreach (TroopsFromOtherBattalion merged in newBattalion.TroopsFromOtherBattalion) - { - var fromBatt = existingBattalions.Find(x => x.Original.Id == merged.FromBattalionId).Original; + foreach (TroopsFromOtherBattalion merged in newBattalion.TroopsFromOtherBattalion) { + var fromBatt = + existingBattalions.Find(x => x.Original.Id == merged.FromBattalionId) + .Original; var newSize = _updated.Size + merged.CountMoved; - _updated.Training = ((_updated.Size * _updated.Training) + (merged.CountMoved * fromBatt.Training)) / newSize; - _updated.Armament = ((_updated.Size * _updated.Armament) + (merged.CountMoved * fromBatt.Armament)) / newSize; + _updated.Training = ((_updated.Size * _updated.Training) + + (merged.CountMoved * fromBatt.Training)) / + newSize; + _updated.Armament = ((_updated.Size * _updated.Armament) + + (merged.CountMoved * fromBatt.Armament)) / + newSize; _updated.Size = newSize; } - _components = MergedComponents(newBattalion.TroopsFromOtherBattalion, newBattalion.NewTroops, existingBattalions); + _components = MergedComponents( + newBattalion.TroopsFromOtherBattalion, + newBattalion.NewTroops, + existingBattalions); return _updated; } - public NewBattalionInfo(BattalionTypeId typeId, Texture image, double cost, int capacity) : base(image, cost, capacity) - { + public NewBattalionInfo( + BattalionTypeId typeId, + Texture image, + double cost, + int capacity) + : base(image, cost, capacity) { newBattalion = new NewBattalion { NewTroops = 0, Type = typeId }; _typeId = typeId; } } - private class ExistingBattalionInfo : BattalionDisplayInfo - { + private class ExistingBattalionInfo : BattalionDisplayInfo { public BattalionView Original { get; private set; } public override int Count => _updated.Size; @@ -86,21 +94,24 @@ namespace eagle private List _components; - public BattalionView Update(List existingBattalions) - { + public BattalionView Update(List existingBattalions) { BattalionView bv = new BattalionView(Original); bv.Size -= troopsRemoved; - if (changed != null) - { - foreach (TroopsFromOtherBattalion merged in changed.TroopsFromOtherBattalion) - { - var fromBatt = existingBattalions.Find(x => x.Original.Id == merged.FromBattalionId).Original; + if (changed != null) { + foreach (TroopsFromOtherBattalion merged in changed.TroopsFromOtherBattalion) { + var fromBatt = existingBattalions + .Find(x => x.Original.Id == merged.FromBattalionId) + .Original; var newSize = bv.Size + merged.CountMoved; - bv.Training = ((bv.Size * bv.Training) + (merged.CountMoved * fromBatt.Training)) / newSize; - bv.Armament = ((bv.Size * bv.Armament) + (merged.CountMoved * fromBatt.Armament)) / newSize; + bv.Training = ((bv.Size * bv.Training) + + (merged.CountMoved * fromBatt.Training)) / + newSize; + bv.Armament = ((bv.Size * bv.Armament) + + (merged.CountMoved * fromBatt.Armament)) / + newSize; bv.Size = newSize; } @@ -113,10 +124,8 @@ namespace eagle _updated = bv; _components = new List(); - if (Original.Size > troopsRemoved) - { - _components.Add(new BattalionComponent - { + if (Original.Size > troopsRemoved) { + _components.Add(new BattalionComponent { armament = Original.Armament, training = Original.Training, count = Original.Size - troopsRemoved, @@ -124,16 +133,22 @@ namespace eagle }); } - if (changed != null) - { - _components.AddRange(MergedComponents(changed.TroopsFromOtherBattalion, changed.NewTroops, existingBattalions)); + if (changed != null) { + _components.AddRange(MergedComponents( + changed.TroopsFromOtherBattalion, + changed.NewTroops, + existingBattalions)); } return _updated; } - public ExistingBattalionInfo(BattalionView orig, Texture image, double cost, int capacity) : base(image, cost, capacity) - { + public ExistingBattalionInfo( + BattalionView orig, + Texture image, + double cost, + int capacity) + : base(image, cost, capacity) { Original = orig; } } @@ -143,25 +158,25 @@ namespace eagle public EventBasedTable battalionsTable; - static List MergedComponents(IEnumerable tfob, int newCount, List existingBattalions) - { - var list = tfob.Select(merged => - { - var fromBatt = existingBattalions.Find(x => x.Id == merged.FromBattalionId).Original; + static List MergedComponents( + IEnumerable tfob, + int newCount, + List existingBattalions) { + var list = tfob.Select(merged => { + var fromBatt = + existingBattalions.Find(x => x.Id == merged.FromBattalionId) + .Original; - return new BattalionComponent - { - armament = fromBatt.Armament, - training = fromBatt.Training, - count = merged.CountMoved, - source = BattalionComponent.ComponentSource.mergedTroops - }; - }).ToList(); + return new BattalionComponent { + armament = fromBatt.Armament, + training = fromBatt.Training, + count = merged.CountMoved, + source = BattalionComponent.ComponentSource.mergedTroops + }; + }).ToList(); - if (newCount > 0) - { - list.Add(new BattalionComponent - { + if (newCount > 0) { + list.Add(new BattalionComponent { armament = 0, training = 0, count = newCount, @@ -172,13 +187,11 @@ namespace eagle return list; } - List BattalionComponents(NewBattalion nb) - { + List BattalionComponents(NewBattalion nb) { return MergedComponents(nb.TroopsFromOtherBattalion, nb.NewTroops, existingBattalions); } - class TroopsFromBattalion - { + class TroopsFromBattalion { public BattalionId fromId; public BattalionTypeId type; public int count; @@ -206,39 +219,39 @@ namespace eagle const int increment = 100; - private bool TypeIsAllowed(BattalionTypeId battalionTypeId) - { - return OrganizeTroopsAvailableCommand.AvailableBattalionTypes.Any(tp => tp.TypeId == battalionTypeId && tp.MeetsRequirements); + private bool TypeIsAllowed(BattalionTypeId battalionTypeId) { + return OrganizeTroopsAvailableCommand.AvailableBattalionTypes.Any( + tp => tp.TypeId == battalionTypeId && tp.MeetsRequirements); } - private void MaybeActivateRow(EventBasedTable table, BattalionTypeId battalionTypeId) - { - var parent = table - .gameObject - .transform - .parent; + private void MaybeActivateRow(EventBasedTable table, BattalionTypeId battalionTypeId) { + var parent = table.gameObject.transform.parent; - var allowed = TypeIsAllowed(battalionTypeId) || extraTroops.Where(tfb => tfb.type == battalionTypeId).Select(tfb => tfb.count).Sum() > 0; + var allowed = TypeIsAllowed(battalionTypeId) || + extraTroops.Where(tfb => tfb.type == battalionTypeId) + .Select(tfb => tfb.count) + .Sum() > 0; - table.gameObject.GetComponent().Set(allowed, OrganizeTroopsAvailableCommand.AvailableBattalionTypes.First(tp => tp.TypeId == battalionTypeId), Province.FullInfo.Agriculture, Province.FullInfo.Economy); + table.gameObject.GetComponent().Set( + allowed, + OrganizeTroopsAvailableCommand.AvailableBattalionTypes.First( + tp => tp.TypeId == battalionTypeId), + Province.FullInfo.Agriculture, + Province.FullInfo.Economy); parent.GetComponentInChildren