Merge branch 'master' of https://bitbucket.org/Regalis11/subsurface-private
Conflicts: Subsurface/Source/Characters/AI/Objectives/AIObjectiveManager.cs
This commit is contained in:
@@ -63,6 +63,7 @@
|
|||||||
<Compile Include="Source\Characters\AI\IndoorsSteeringManager.cs" />
|
<Compile Include="Source\Characters\AI\IndoorsSteeringManager.cs" />
|
||||||
<Compile Include="Source\Characters\AI\Objectives\AIObjectiveCombat.cs" />
|
<Compile Include="Source\Characters\AI\Objectives\AIObjectiveCombat.cs" />
|
||||||
<Compile Include="Source\Characters\AI\Objectives\AIObjectiveContainItem.cs" />
|
<Compile Include="Source\Characters\AI\Objectives\AIObjectiveContainItem.cs" />
|
||||||
|
<Compile Include="Source\Characters\AI\Objectives\AIObjectiveFixLeaks.cs" />
|
||||||
<Compile Include="Source\Characters\AI\Order.cs" />
|
<Compile Include="Source\Characters\AI\Order.cs" />
|
||||||
<Compile Include="Source\Characters\AI\CrewCommander.cs" />
|
<Compile Include="Source\Characters\AI\CrewCommander.cs" />
|
||||||
<Compile Include="Source\Characters\AI\HumanAIController.cs" />
|
<Compile Include="Source\Characters\AI\HumanAIController.cs" />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<ErrorReportUrlHistory />
|
<ErrorReportUrlHistory />
|
||||||
<FallbackCulture>en-US</FallbackCulture>
|
<FallbackCulture>en-US</FallbackCulture>
|
||||||
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||||
<ProjectView>ProjectFiles</ProjectView>
|
<ProjectView>ShowAllFiles</ProjectView>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ReferencePath>
|
<ReferencePath>
|
||||||
|
|||||||
@@ -20,4 +20,8 @@
|
|||||||
<Order name="Operate Railgun" doingtext="Operating Railgun" targetitemtype="Turret" usecontroller="true" options="Fire at will, Hold fire" color="1.0,0.0,0.0,1.0">
|
<Order name="Operate Railgun" doingtext="Operating Railgun" targetitemtype="Turret" usecontroller="true" options="Fire at will, Hold fire" color="1.0,0.0,0.0,1.0">
|
||||||
<Sprite texture="Content/UI/orderSymbols.png" sourcerect="0,64,64,64"/>
|
<Sprite texture="Content/UI/orderSymbols.png" sourcerect="0,64,64,64"/>
|
||||||
</Order>
|
</Order>
|
||||||
|
|
||||||
|
<Order name="Fix Leaks" doingtext="Fixing Leaks" color="0.6,0.85,1.0,1.0">
|
||||||
|
<Sprite texture="Content/UI/orderSymbols.png" sourcerect="64,64,64,64"/>
|
||||||
|
</Order>
|
||||||
</Orders>
|
</Orders>
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 8.9 KiB |
@@ -0,0 +1,76 @@
|
|||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Barotrauma
|
||||||
|
{
|
||||||
|
class AIObjectiveFixLeaks : AIObjective
|
||||||
|
{
|
||||||
|
const float UpdateGapListInterval = 10.0f;
|
||||||
|
|
||||||
|
private float updateGapListTimer;
|
||||||
|
|
||||||
|
private List<AIObjectiveFixLeak> objectiveList;
|
||||||
|
|
||||||
|
public AIObjectiveFixLeaks(Character character)
|
||||||
|
: base (character, "")
|
||||||
|
{
|
||||||
|
objectiveList = new List<AIObjectiveFixLeak>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool IsCompleted()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Act(float deltaTime)
|
||||||
|
{
|
||||||
|
updateGapListTimer -= deltaTime;
|
||||||
|
|
||||||
|
if (updateGapListTimer<=0.0f)
|
||||||
|
{
|
||||||
|
UpdateGapList();
|
||||||
|
|
||||||
|
updateGapListTimer = UpdateGapListInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (objectiveList.Any())
|
||||||
|
{
|
||||||
|
objectiveList[objectiveList.Count-1].TryComplete(deltaTime);
|
||||||
|
|
||||||
|
if (!objectiveList[objectiveList.Count-1].CanBeCompleted || objectiveList[objectiveList.Count-1].IsCompleted())
|
||||||
|
{
|
||||||
|
objectiveList.RemoveAt(objectiveList.Count - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateGapList()
|
||||||
|
{
|
||||||
|
objectiveList.Clear();
|
||||||
|
|
||||||
|
foreach (Gap gap in Gap.GapList)
|
||||||
|
{
|
||||||
|
if (gap.IsRoomToRoom || gap.ConnectedDoor != null || gap.Open < 0.1f) continue;
|
||||||
|
|
||||||
|
float dist = Vector2.DistanceSquared(character.WorldPosition, gap.WorldPosition);
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
while (index<objectiveList.Count &&
|
||||||
|
Vector2.DistanceSquared(objectiveList[index].Leak.WorldPosition, character.WorldPosition)>dist)
|
||||||
|
{
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
objectiveList.Insert(index, new AIObjectiveFixLeak(gap, character));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool IsDuplicate(AIObjective otherObjective)
|
||||||
|
{
|
||||||
|
return otherObjective is AIObjectiveFixLeaks;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -54,13 +54,6 @@ namespace Barotrauma
|
|||||||
|
|
||||||
//sort objectives according to priority
|
//sort objectives according to priority
|
||||||
objectives.Sort((x, y) => y.GetPriority(character).CompareTo(x.GetPriority(character)));
|
objectives.Sort((x, y) => y.GetPriority(character).CompareTo(x.GetPriority(character)));
|
||||||
|
|
||||||
foreach (Gap gap in Gap.GapList)
|
|
||||||
{
|
|
||||||
if (gap.IsRoomToRoom || gap.ConnectedDoor != null || gap.Open<0.01f) continue;
|
|
||||||
|
|
||||||
AddObjective(new AIObjectiveFixLeak(gap, character));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DoCurrentObjective(float deltaTime)
|
public void DoCurrentObjective(float deltaTime)
|
||||||
@@ -87,6 +80,10 @@ namespace Barotrauma
|
|||||||
case "wait":
|
case "wait":
|
||||||
currentObjective = new AIObjectiveGoTo(character, character, true);
|
currentObjective = new AIObjectiveGoTo(character, character, true);
|
||||||
break;
|
break;
|
||||||
|
case "fixleaks":
|
||||||
|
case "fix leaks":
|
||||||
|
currentObjective = new AIObjectiveFixLeaks(character);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (order.TargetItem == null) return;
|
if (order.TargetItem == null) return;
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user