mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 23:15:41 +00:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
deb0e33c5a | ||
|
|
0191455d5d | ||
|
|
98ed70c2e0 |
+50
-53
@@ -21,12 +21,7 @@ namespace eagle {
|
||||
public Toggle ExileToggle;
|
||||
public Toggle ExecuteToggle;
|
||||
public Toggle ReturnToggle;
|
||||
|
||||
public RawImage ReleaseIcon;
|
||||
public RawImage MoveIcon;
|
||||
public RawImage ExileIcon;
|
||||
public RawImage ExecuteIcon;
|
||||
public RawImage ReturnIcon;
|
||||
public ToggleGroup decisionToggleGroup;
|
||||
|
||||
public TMP_Dropdown moveToDropdown;
|
||||
|
||||
@@ -143,28 +138,43 @@ namespace eagle {
|
||||
|
||||
MessageText.text = GetQuestMessagesForPrisoner(SelectedHero.Id);
|
||||
|
||||
// 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);
|
||||
var options = SelectedPrisonerToManage.AvailableOptions;
|
||||
bool hasRelease = options.Any(
|
||||
opt => opt.SealedValueCase ==
|
||||
PrisonerManagementOption.SealedValueOneofCase.Release);
|
||||
bool hasMove = options.Any(
|
||||
opt => opt.SealedValueCase ==
|
||||
PrisonerManagementOption.SealedValueOneofCase.Move);
|
||||
bool hasExile = options.Any(
|
||||
opt => opt.SealedValueCase ==
|
||||
PrisonerManagementOption.SealedValueOneofCase.Exile);
|
||||
bool hasExecute = options.Any(
|
||||
opt => opt.SealedValueCase ==
|
||||
PrisonerManagementOption.SealedValueOneofCase.Execute);
|
||||
bool hasReturn = options.Any(
|
||||
opt => opt.SealedValueCase ==
|
||||
PrisonerManagementOption.SealedValueOneofCase.Return);
|
||||
|
||||
ConfigureToggle(ReleaseToggle, hasRelease);
|
||||
ConfigureToggle(MoveToggle, hasMove);
|
||||
ConfigureToggle(ExileToggle, hasExile);
|
||||
ConfigureToggle(ExecuteToggle, hasExecute);
|
||||
ConfigureToggle(ReturnToggle, hasReturn);
|
||||
|
||||
// Select first available option (priority order: Release > Move > Exile > Execute >
|
||||
// Return)
|
||||
if (hasRelease) ReleaseToggle.isOn = true;
|
||||
else if (hasMove)
|
||||
MoveToggle.isOn = true;
|
||||
else if (hasExile)
|
||||
ExileToggle.isOn = true;
|
||||
else if (hasExecute)
|
||||
ExecuteToggle.isOn = true;
|
||||
else if (hasReturn)
|
||||
ReturnToggle.isOn = true;
|
||||
|
||||
// Update dropdown visibility based on selected toggle
|
||||
moveToDropdown.gameObject.SetActive(MoveToggle.isOn);
|
||||
}
|
||||
|
||||
private string GetQuestMessagesForPrisoner(HeroId prisonerId) {
|
||||
@@ -225,36 +235,23 @@ namespace eagle {
|
||||
: "A free hero";
|
||||
}
|
||||
|
||||
private bool ConditionallyEnable(
|
||||
Toggle toggle,
|
||||
PrisonerManagementOption.SealedValueOneofCase option) {
|
||||
bool enable = SelectedPrisonerToManage.AvailableOptions.Any(
|
||||
opt => opt.SealedValueCase == option);
|
||||
toggle.gameObject.SetActive(enable);
|
||||
private const float DisabledAlpha = 0.35f;
|
||||
|
||||
if (enable) {
|
||||
ExecuteToggle.isOn = false;
|
||||
ExileToggle.isOn = false;
|
||||
MoveToggle.isOn = false;
|
||||
ReleaseToggle.isOn = false;
|
||||
ReturnToggle.isOn = false;
|
||||
private void ConfigureToggle(Toggle toggle, bool available) {
|
||||
if (toggle == null) return;
|
||||
|
||||
toggle.isOn = true;
|
||||
} else
|
||||
toggle.isOn = false;
|
||||
toggle.gameObject.SetActive(true);
|
||||
toggle.interactable = available;
|
||||
|
||||
return enable;
|
||||
}
|
||||
if (!available) { toggle.isOn = false; }
|
||||
|
||||
private void ConditionallyEnable(
|
||||
Toggle toggle,
|
||||
RawImage img,
|
||||
PrisonerManagementOption.SealedValueOneofCase option) {
|
||||
bool enable = ConditionallyEnable(toggle, option);
|
||||
toggle.group = available ? decisionToggleGroup : null;
|
||||
|
||||
Color color = img.color;
|
||||
color.a = enable ? 1.0f : 0.25f;
|
||||
img.color = color;
|
||||
var canvasGroup = toggle.GetComponent<CanvasGroup>();
|
||||
if (canvasGroup == null) {
|
||||
canvasGroup = toggle.gameObject.AddComponent<CanvasGroup>();
|
||||
}
|
||||
canvasGroup.alpha = available ? 1f : DisabledAlpha;
|
||||
}
|
||||
}
|
||||
}
|
||||
+16
-6
@@ -345,18 +345,28 @@ namespace eagle {
|
||||
var details = quest.Details.DevelopProvincesQuest;
|
||||
var targetMonths = quest.ComponentCount;
|
||||
var currentMonths = quest.ComponentsFulfilled;
|
||||
var progressText =
|
||||
currentMonths > 0 ? $" ({currentMonths}/{targetMonths} months)" : "";
|
||||
return $"Maintain {details.TargetProvinceCount} provinces with Develop orders for {targetMonths} months{progressText}";
|
||||
var currentProvinces =
|
||||
model.PlayerId.HasValue
|
||||
? model.ProvincesForFaction(model.PlayerId.Value)
|
||||
.Count(pid => model.Provinces[pid]
|
||||
.FullInfo?.ProvinceOrders ==
|
||||
ProvinceOrderType.Develop)
|
||||
: 0;
|
||||
return $"Maintain {details.TargetProvinceCount} provinces with Develop orders for {targetMonths} months ({currentProvinces}/{details.TargetProvinceCount} provinces, {currentMonths}/{targetMonths} months)";
|
||||
}
|
||||
|
||||
case SealedValueOneofCase.MobilizeProvincesQuest: {
|
||||
var details = quest.Details.MobilizeProvincesQuest;
|
||||
var targetMonths = quest.ComponentCount;
|
||||
var currentMonths = quest.ComponentsFulfilled;
|
||||
var progressText =
|
||||
currentMonths > 0 ? $" ({currentMonths}/{targetMonths} months)" : "";
|
||||
return $"Maintain {details.TargetProvinceCount} provinces with Mobilize orders for {targetMonths} months{progressText}";
|
||||
var currentProvinces =
|
||||
model.PlayerId.HasValue
|
||||
? model.ProvincesForFaction(model.PlayerId.Value)
|
||||
.Count(pid => model.Provinces[pid]
|
||||
.FullInfo?.ProvinceOrders ==
|
||||
ProvinceOrderType.Mobilize)
|
||||
: 0;
|
||||
return $"Maintain {details.TargetProvinceCount} provinces with Mobilize orders for {targetMonths} months ({currentProvinces}/{details.TargetProvinceCount} provinces, {currentMonths}/{targetMonths} months)";
|
||||
}
|
||||
|
||||
case SealedValueOneofCase.BattalionDiversityQuest:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user