Skip to content

Commit

Permalink
Fleet orders use the system the fleet is in, not the current view
Browse files Browse the repository at this point in the history
  • Loading branch information
behindcurtain3 committed Apr 18, 2024
1 parent b11b08b commit f9ab224
Showing 1 changed file with 87 additions and 76 deletions.
163 changes: 87 additions & 76 deletions Pulsar4X/Pulsar4X.Client/EmpireManagement/FleetWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -295,82 +295,7 @@ private void DisplayTabs()
ImGui.EndChild();
}
ImGui.SameLine();
if(ImGui.BeginChild("IssueOrders", secondChildSize, true))
{
var bodies = _uiState.SelectedSystem.GetAllEntitiesWithDataBlob<SystemBodyInfoDB>(_uiState.Faction.Id);
switch(selectedIssueOrderType)
{
case IssueOrderType.MoveTo:
foreach(var body in bodies)
{
var name = body.GetName(_uiState.Faction.Id);
if(ImGui.Button(name + "###movement-button-" + name))
{
var order = MoveToSystemBodyOrder.CreateCommand(_uiState.Faction.Id, SelectedFleet, body);
_uiState.Game.OrderHandler.HandleOrder(order);
}
}
break;
case IssueOrderType.GeoSurvey:
foreach(var body in bodies)
{
if(!body.TryGetDatablob<GeoSurveyableDB>(out var geoSurveyableDB)) continue;
if(geoSurveyableDB.IsSurveyComplete(_uiState.Faction.Id)) continue;

var name = body.GetName(_uiState.Faction.Id);
if(ImGui.Button(name + "###geosurvey-button-" + name))
{
var order = MoveToSystemBodyOrder.CreateCommand(_uiState.Faction.Id, SelectedFleet, body);
_uiState.Game.OrderHandler.HandleOrder(order);

var order2 = GeoSurveyOrder.CreateCommand(_uiState.Faction.Id, SelectedFleet, body);
_uiState.Game.OrderHandler.HandleOrder(order2);
}
}
break;
case IssueOrderType.JPSurvey:
var jumpPointDBs = _uiState.SelectedSystem.GetAllDataBlobsOfType<JPSurveyableDB>();
foreach(var jpSurveyableDB in jumpPointDBs)
{
if(jpSurveyableDB.IsSurveyComplete(_uiState.Faction.Id)) continue;

var name = jpSurveyableDB.OwningEntity?.GetName(_uiState.Faction.Id);
if(ImGui.Button(name + "###jpsurvey-button-" + name))
{
if(jpSurveyableDB.OwningEntity != null)
{
var order = MoveFleetTowardsTargetOrder.CreateCommand(SelectedFleet, jpSurveyableDB.OwningEntity);
_uiState.Game.OrderHandler.HandleOrder(order);

var order2 = JPSurveyOrder.CreateCommand(_uiState.Faction.Id, SelectedFleet, jpSurveyableDB.OwningEntity);
_uiState.Game.OrderHandler.HandleOrder(order2);
}
}
}
break;
case IssueOrderType.Jump:
var jumpGates = _uiState.SelectedSystem.GetAllDataBlobsOfType<JumpPointDB>();
foreach(var jumpGateDB in jumpGates)
{
if(!jumpGateDB.IsDiscovered.Contains(_uiState.Faction.Id)) continue;

var name = jumpGateDB.OwningEntity?.GetName(_uiState.Faction.Id);
if(ImGui.Button(name + "###jump-gate-button-" + name))
{
if(jumpGateDB.OwningEntity != null)
{
var order = MoveFleetTowardsTargetOrder.CreateCommand(SelectedFleet, jumpGateDB.OwningEntity);
_uiState.Game.OrderHandler.HandleOrder(order);

JumpOrder.CreateAndExecute(_uiState.Game, _uiState.Faction, SelectedFleet, jumpGateDB);
}
}
}
break;
}

ImGui.EndChild();
}
IssueOrdersDisplay(secondChildSize);
ImGui.EndTabItem();
}

Expand Down Expand Up @@ -585,6 +510,92 @@ private void DisplayTabs()
}
}

private void IssueOrdersDisplay(Vector2 size)
{
if(ImGui.BeginChild("IssueOrders", size, true))
{
if(SelectedFleet == null || SelectedFleet.Manager == null)
{
ImGui.EndChild();
return;
}

var bodies = SelectedFleet.Manager.GetAllEntitiesWithDataBlob<SystemBodyInfoDB>(_uiState.Faction.Id);
switch(selectedIssueOrderType)
{
case IssueOrderType.MoveTo:
foreach(var body in bodies)
{
var name = body.GetName(_uiState.Faction.Id);
if(ImGui.Button(name + "###movement-button-" + name))
{
var order = MoveToSystemBodyOrder.CreateCommand(_uiState.Faction.Id, SelectedFleet, body);
_uiState.Game.OrderHandler.HandleOrder(order);
}
}
break;
case IssueOrderType.GeoSurvey:
foreach(var body in bodies)
{
if(!body.TryGetDatablob<GeoSurveyableDB>(out var geoSurveyableDB)) continue;
if(geoSurveyableDB.IsSurveyComplete(_uiState.Faction.Id)) continue;

var name = body.GetName(_uiState.Faction.Id);
if(ImGui.Button(name + "###geosurvey-button-" + name))
{
var order = MoveToSystemBodyOrder.CreateCommand(_uiState.Faction.Id, SelectedFleet, body);
_uiState.Game.OrderHandler.HandleOrder(order);

var order2 = GeoSurveyOrder.CreateCommand(_uiState.Faction.Id, SelectedFleet, body);
_uiState.Game.OrderHandler.HandleOrder(order2);
}
}
break;
case IssueOrderType.JPSurvey:
var jumpPointDBs = SelectedFleet.Manager.GetAllDataBlobsOfType<JPSurveyableDB>();
foreach(var jpSurveyableDB in jumpPointDBs)
{
if(jpSurveyableDB.IsSurveyComplete(_uiState.Faction.Id)) continue;

var name = jpSurveyableDB.OwningEntity?.GetName(_uiState.Faction.Id);
if(ImGui.Button(name + "###jpsurvey-button-" + name))
{
if(jpSurveyableDB.OwningEntity != null)
{
var order = MoveFleetTowardsTargetOrder.CreateCommand(SelectedFleet, jpSurveyableDB.OwningEntity);
_uiState.Game.OrderHandler.HandleOrder(order);

var order2 = JPSurveyOrder.CreateCommand(_uiState.Faction.Id, SelectedFleet, jpSurveyableDB.OwningEntity);
_uiState.Game.OrderHandler.HandleOrder(order2);
}
}
}
break;
case IssueOrderType.Jump:
var jumpGates = SelectedFleet.Manager.GetAllDataBlobsOfType<JumpPointDB>();
foreach(var jumpGateDB in jumpGates)
{
if(!jumpGateDB.IsDiscovered.Contains(_uiState.Faction.Id)) continue;

var name = jumpGateDB.OwningEntity?.GetName(_uiState.Faction.Id);
if(ImGui.Button(name + "###jump-gate-button-" + name))
{
if(jumpGateDB.OwningEntity != null)
{
var order = MoveFleetTowardsTargetOrder.CreateCommand(SelectedFleet, jumpGateDB.OwningEntity);
_uiState.Game.OrderHandler.HandleOrder(order);

JumpOrder.CreateAndExecute(_uiState.Game, _uiState.Faction, SelectedFleet, jumpGateDB);
}
}
}
break;
}

ImGui.EndChild();
}
}

private void DisplayShips()
{
if(SelectedFleet == null) return;
Expand Down

0 comments on commit f9ab224

Please sign in to comment.