added Tags Location

This commit is contained in:
iAmAsval 2021-06-27 00:12:06 +02:00
parent 40c16c1c5c
commit ed5dfe0a0a
6 changed files with 50 additions and 2 deletions

@ -1 +1 @@
Subproject commit 62a11913e10409e540b34e0286a734f98d6af3c7
Subproject commit 045e3f69e6a1d44861fe36e2223e113b8ba0ca16

View File

@ -205,7 +205,7 @@ namespace FModel.Settings
{FGame.Dungeons, EGame.GAME_UE4_LATEST},
{FGame.WorldExplorers, EGame.GAME_UE4_LATEST},
{FGame.g3, EGame.GAME_UE4_22},
{FGame.StateOfDecay2, EGame.GAME_UE4_13},
{FGame.StateOfDecay2, EGame.GAME_SOD2},
{FGame.Prospect, EGame.GAME_UE4_LATEST},
{FGame.Indiana, EGame.GAME_UE4_LATEST},
{FGame.RogueCompany, EGame.GAME_UE4_LATEST},

View File

@ -38,6 +38,7 @@ namespace FModel.ViewModels.Commands
public override async void Execute(LoadingModesViewModel contextViewModel, object parameter)
{
if (_applicationView.CUE4Parse.GameDirectory.HasNoFile) return;
#if DEBUG
var loadingTime = Stopwatch.StartNew();
#endif

View File

@ -80,6 +80,7 @@ namespace FModel.ViewModels
public class GameDirectoryViewModel : ViewModel
{
public bool HasNoFile => DirectoryFiles.Count < 1;
public readonly ObservableCollection<FileItem> DirectoryFiles;
public ICollectionView DirectoryFilesView { get; }

View File

@ -4,6 +4,7 @@ using System.Linq;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports.Engine;
using CUE4Parse.UE4.Assets.Exports.Material;
using CUE4Parse.UE4.Assets.Exports.Texture;
using CUE4Parse.UE4.Assets.Objects;
@ -73,6 +74,13 @@ namespace FModel.ViewModels
get => _brPhonebooths;
set => SetProperty(ref _brPhonebooths, value, "ApolloGameplay_Phonebooths");
}
private bool _brTagsLocation;
public bool BrTagsLocation
{
get => _brTagsLocation;
set => SetProperty(ref _brTagsLocation, value, "ApolloGameplay_TagsLocation");
}
private bool _brAlienArtifacts;
public bool BrAlienArtifacts
@ -247,6 +255,9 @@ namespace FModel.ViewModels
case "ApolloGameplay_AlienArtifacts":
await LoadAlienArtifacts();
break;
case "ApolloGameplay_TagsLocation":
await LoadTagsLocation();
break;
case "PapayaGameplay_CannonballGame":
await LoadCannonballGame();
break;
@ -793,5 +804,38 @@ namespace FModel.ViewModels
_bitmaps[0]["ApolloGameplay_AlienArtifacts"] = new MapLayer {Layer = alienArtifactsBitmap, IsEnabled = false};
});
}
private async Task LoadTagsLocation()
{
await _threadWorkerView.Begin(_ =>
{
_fillPaint.StrokeWidth = 5;
var tagsLocationBitmap = new SKBitmap(_widthHeight, _widthHeight, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(tagsLocationBitmap);
if (!Utils.TryLoadObject("FortniteGame/Content/Quests/QuestTagToLocationDataRows.QuestTagToLocationDataRows", out UDataTable locationData))
return;
foreach (var (key, uObject) in locationData.RowMap)
{
if (key.Text.StartsWith("Athena.Location.POI", StringComparison.OrdinalIgnoreCase) ||
key.Text.StartsWith("Athena.Location.Unnamed", StringComparison.OrdinalIgnoreCase) ||
key.Text.Contains(".Tandem.", StringComparison.OrdinalIgnoreCase) ||
!uObject.TryGetValue(out FVector worldLocation, "WorldLocation")) continue;
var parts = key.Text.Split('.');
var displayName = parts[^2];
if (!int.TryParse(parts[^1], out var _))
displayName += " " + parts[^1];
var vector = GetMapPosition(worldLocation, _brRadius);
c.DrawPoint(vector.X, vector.Y, _pathPaint);
c.DrawText(displayName, vector.X, vector.Y - 12.5F, _fillPaint);
c.DrawText(displayName, vector.X, vector.Y - 12.5F, _textPaint);
}
_bitmaps[0]["ApolloGameplay_TagsLocation"] = new MapLayer {Layer = tagsLocationBitmap, IsEnabled = false};
});
}
}
}

View File

@ -35,6 +35,8 @@
DataContext="{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Views.MapViewer}}}" IsEnabled="{Binding IsReady}" />
<CheckBox Content="Alien Artifacts" Style="{DynamicResource {x:Static adonisUi:Styles.ToggleSwitch}}" IsChecked="{Binding MapViewer.BrAlienArtifacts}"
DataContext="{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Views.MapViewer}}}" IsEnabled="{Binding IsReady}" />
<CheckBox Content="Tags Location" Style="{DynamicResource {x:Static adonisUi:Styles.ToggleSwitch}}" IsChecked="{Binding MapViewer.BrTagsLocation}"
DataContext="{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Views.MapViewer}}}" IsEnabled="{Binding IsReady}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="PrTemplate">