mirror of
https://github.com/haven1433/HexManiacAdvance.git
synced 2026-05-18 19:16:46 -05:00
add next/prev buttons
This commit is contained in:
parent
3a9cf7ee92
commit
0cca2a6bad
|
|
@ -36,6 +36,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels.Map {
|
|||
set {
|
||||
var oldValue = selectedEvent;
|
||||
selectedEvent = value;
|
||||
NotifyPropertyChanged();
|
||||
HandleSelectedEventChanged(oldValue);
|
||||
}
|
||||
}
|
||||
|
|
@ -44,15 +45,66 @@ namespace HavenSoft.HexManiac.Core.ViewModels.Map {
|
|||
if (old == selectedEvent) return;
|
||||
if (old != null) {
|
||||
old.EventVisualUpdated -= RefreshFromEventChange;
|
||||
old.CycleEvent -= CycleActiveEvent;
|
||||
}
|
||||
if (selectedEvent != null) {
|
||||
selectedEvent.EventVisualUpdated += RefreshFromEventChange;
|
||||
selectedEvent.CycleEvent += CycleActiveEvent;
|
||||
}
|
||||
RedrawEvents();
|
||||
}
|
||||
|
||||
private void RefreshFromEventChange(object sender, EventArgs e) => RedrawEvents();
|
||||
|
||||
private void CycleActiveEvent(object sender, EventCycleDirection direction) {
|
||||
// organize events into categories
|
||||
var events = GetEvents(tokenFactory());
|
||||
var categories = new List<List<IEventModel>> { new(), new(), new(), new() };
|
||||
int selectionIndex = -1, selectedCategory = -1;
|
||||
for (int i = 0; i < events.Count; i++) {
|
||||
int currentCategory =
|
||||
events[i] is ObjectEventModel ? 0 :
|
||||
events[i] is WarpEventModel ? 1 :
|
||||
events[i] is ScriptEventModel ? 2 :
|
||||
events[i] is SignpostEventModel ? 3 :
|
||||
-1;
|
||||
categories[currentCategory].Add(events[i]);
|
||||
|
||||
if (events[i].Equals(selectedEvent)) {
|
||||
selectionIndex = categories[currentCategory].Count - 1;
|
||||
selectedCategory = currentCategory;
|
||||
};
|
||||
}
|
||||
|
||||
// remove unused categories
|
||||
for (int i = 0; i < categories.Count; i++) {
|
||||
if (categories[i].Count != 0) continue;
|
||||
categories.RemoveAt(i);
|
||||
if (selectedCategory > i) selectedCategory--;
|
||||
i--;
|
||||
}
|
||||
|
||||
// cycle
|
||||
if (direction == EventCycleDirection.PreviousCategory) {
|
||||
selectedCategory += categories.Count - 1;
|
||||
selectionIndex = 0;
|
||||
} else if (direction == EventCycleDirection.NextCategory) {
|
||||
selectedCategory += 1;
|
||||
selectionIndex = 0;
|
||||
} else if (direction == EventCycleDirection.PreviousEvent) {
|
||||
selectionIndex += categories[selectedCategory].Count - 1;
|
||||
} else if (direction == EventCycleDirection.NextEvent) {
|
||||
selectionIndex += 1;
|
||||
} else {
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
selectedCategory %= categories.Count;
|
||||
selectionIndex %= categories[selectedCategory].Count;
|
||||
|
||||
// update selection
|
||||
SelectedEvent = categories[selectedCategory][selectionIndex];
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private static int MapSizeLimit => 0x2800; // (x+15)*(y+14) must be less that 0x2800 (5*2048). This can lead to limits like 113x66 or 497x6
|
||||
|
|
@ -1163,8 +1215,11 @@ namespace HavenSoft.HexManiac.Core.ViewModels.Map {
|
|||
*/
|
||||
}
|
||||
|
||||
public interface IEventModel : INotifyPropertyChanged {
|
||||
public interface IEventModel : IEquatable<IEventModel>, INotifyPropertyChanged {
|
||||
event EventHandler EventVisualUpdated;
|
||||
public event EventHandler<EventCycleDirection> CycleEvent;
|
||||
string EventType { get; }
|
||||
string EventIndex { get; }
|
||||
int TopOffset { get; }
|
||||
int LeftOffset { get; }
|
||||
int X { get; set; }
|
||||
|
|
@ -1175,14 +1230,28 @@ namespace HavenSoft.HexManiac.Core.ViewModels.Map {
|
|||
void Delete();
|
||||
}
|
||||
|
||||
public abstract class BaseEventModel : ViewModelCore, IEventModel {
|
||||
// TODO text for event number / event count (1/4, 2/4, 3/4, 4/4, etc)
|
||||
// TODO commands for switching selection to another event/group
|
||||
public enum EventCycleDirection { PreviousCategory, PreviousEvent, NextEvent, NextCategory }
|
||||
|
||||
public abstract class BaseEventModel : ViewModelCore, IEventModel, IEquatable<IEventModel> {
|
||||
public event EventHandler EventVisualUpdated;
|
||||
public event EventHandler<EventCycleDirection> CycleEvent;
|
||||
|
||||
private StubCommand cycleEventCommand;
|
||||
public ICommand CycleEventCommand => StubCommand<EventCycleDirection>(ref cycleEventCommand, direction => {
|
||||
CycleEvent?.Invoke(this, direction);
|
||||
});
|
||||
|
||||
protected readonly ModelArrayElement element;
|
||||
private readonly string parentLengthField;
|
||||
|
||||
public string EventType => GetType().Name.Replace("EventModel", string.Empty);
|
||||
public string EventIndex {
|
||||
get {
|
||||
var eventIndex = (element.Start - element.Table.Start) / element.Table.ElementLength + 1;
|
||||
return $"{eventIndex}/{element.Table.ElementCount}";
|
||||
}
|
||||
}
|
||||
|
||||
public virtual int TopOffset => 0;
|
||||
public virtual int LeftOffset => 0;
|
||||
|
||||
|
|
@ -1245,6 +1314,11 @@ namespace HavenSoft.HexManiac.Core.ViewModels.Map {
|
|||
|
||||
public void Delete() => DeleteElement(parentLengthField);
|
||||
|
||||
public bool Equals(IEventModel other) {
|
||||
if (other is not BaseEventModel bem) return false;
|
||||
return bem.element.Start == element.Start;
|
||||
}
|
||||
|
||||
public abstract void Render(IDataModel model);
|
||||
|
||||
protected void RaiseEventVisualUpdated() => EventVisualUpdated.Raise(this);
|
||||
|
|
@ -1473,7 +1547,6 @@ namespace HavenSoft.HexManiac.Core.ViewModels.Map {
|
|||
}
|
||||
|
||||
public class ScriptEventModel : BaseEventModel {
|
||||
// trigger: index:: script<`xse`>
|
||||
public ScriptEventModel(ModelArrayElement scriptEvent) : base(scriptEvent, "scriptCount") { }
|
||||
|
||||
public int Trigger {
|
||||
|
|
|
|||
|
|
@ -185,11 +185,13 @@ namespace HavenSoft.HexManiac.Core.ViewModels.Map {
|
|||
if (primaryMap != map) {
|
||||
if (primaryMap != null) {
|
||||
primaryMap.NeighborsChanged -= PrimaryMapNeighborsChanged;
|
||||
primaryMap.PropertyChanged -= PrimaryMapPropertyChanged;
|
||||
primaryMap.CollisionHighlight = -1;
|
||||
}
|
||||
PrimaryMap = map;
|
||||
if (primaryMap != null) {
|
||||
primaryMap.NeighborsChanged += PrimaryMapNeighborsChanged;
|
||||
primaryMap.PropertyChanged += PrimaryMapPropertyChanged;
|
||||
primaryMap.CollisionHighlight = collisionIndex;
|
||||
}
|
||||
NotifyPropertyChanged(nameof(Blocks));
|
||||
|
|
@ -232,6 +234,15 @@ namespace HavenSoft.HexManiac.Core.ViewModels.Map {
|
|||
UpdatePrimaryMap(primaryMap);
|
||||
}
|
||||
|
||||
private void PrimaryMapPropertyChanged(object sender, PropertyChangedEventArgs e) {
|
||||
var map = (BlockMapViewModel)sender;
|
||||
if (e.PropertyName == nameof(BlockMapViewModel.SelectedEvent)) {
|
||||
if (map.SelectedEvent != selectedEvent) {
|
||||
SelectedEvent = map.SelectedEvent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<BlockMapViewModel> GetMapNeighbors(BlockMapViewModel map, int recursionLevel) {
|
||||
if (recursionLevel < 1) yield break;
|
||||
var directions = new List<MapDirection> {
|
||||
|
|
|
|||
|
|
@ -42,199 +42,224 @@
|
|||
<ScrollViewer Grid.Column="0" Grid.RowSpan="2" Background="{DynamicResource Background}" Panel.ZIndex="1"
|
||||
Width="{Binding ActualWidth, ElementName=BlockPanel}"
|
||||
Visibility="{Binding ShowEventPanel, Converter={StaticResource BoolToVisibility}}">
|
||||
<ContentControl DataContext="{Binding SelectedEvent}" Content="{Binding}">
|
||||
<ContentControl.Resources>
|
||||
<DataTemplate DataType="{x:Type map:ObjectEventModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<DockPanel>
|
||||
<Grid DockPanel.Dock="Top">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<local:AngleButton Grid.Column="0" Content="Group" Direction="Left" VerticalAlignment="Bottom"
|
||||
Command="{Binding SelectedEvent.CycleEventCommand}" CommandParameter="{x:Static map:EventCycleDirection.PreviousCategory}" />
|
||||
<local:AngleButton Grid.Column="1" Content="Event" Direction="Left" VerticalAlignment="Bottom"
|
||||
Command="{Binding SelectedEvent.CycleEventCommand}" CommandParameter="{x:Static map:EventCycleDirection.PreviousEvent}" />
|
||||
<StackPanel Grid.Column="2">
|
||||
<TextBlock TextAlignment="Center" Text="{Binding SelectedEvent.EventType}" />
|
||||
<local:AngleBorder Direction="Out">
|
||||
<TextBlock TextAlignment="Center" Text="{Binding SelectedEvent.EventIndex}" />
|
||||
</local:AngleBorder>
|
||||
</StackPanel>
|
||||
<local:AngleButton Grid.Column="3" Content="Event" Direction="Right" VerticalAlignment="Bottom"
|
||||
Command="{Binding SelectedEvent.CycleEventCommand}" CommandParameter="{x:Static map:EventCycleDirection.NextEvent}" />
|
||||
<local:AngleButton Grid.Column="4" Content="Group" Direction="Right" VerticalAlignment="Bottom"
|
||||
Command="{Binding SelectedEvent.CycleEventCommand}" CommandParameter="{x:Static map:EventCycleDirection.NextCategory}" />
|
||||
</Grid>
|
||||
<ContentControl DataContext="{Binding SelectedEvent}" Content="{Binding}">
|
||||
<ContentControl.Resources>
|
||||
<DataTemplate DataType="{x:Type map:ObjectEventModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel>
|
||||
<local:AngleBorder Direction="Out">
|
||||
<TextBlock Text="ID:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Direction="Out" TextBinding="{Binding ObjectID}" />
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<local:AngleBorder Direction="Out">
|
||||
<TextBlock Text="ID:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Direction="Out" TextBinding="{Binding ObjectID}" />
|
||||
</StackPanel>
|
||||
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" SelectedIndex="{Binding Graphics}" ItemsSource="{Binding Options}">
|
||||
<ComboBox.Resources>
|
||||
<DataTemplate DataType="{x:Type tools:VisualComboOption}">
|
||||
<local:PixelImage />
|
||||
</DataTemplate>
|
||||
</ComboBox.Resources>
|
||||
</ComboBox>
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" SelectedIndex="{Binding Graphics}" ItemsSource="{Binding Options}">
|
||||
<ComboBox.Resources>
|
||||
<DataTemplate DataType="{x:Type tools:VisualComboOption}">
|
||||
<local:PixelImage />
|
||||
</DataTemplate>
|
||||
</ComboBox.Resources>
|
||||
</ComboBox>
|
||||
|
||||
<local:AngleBorder Grid.Row="1" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(x, y):" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding XY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<local:AngleBorder Grid.Row="1" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(x, y):" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding XY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="2" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Elevation:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Elevation}" />
|
||||
<local:AngleBorder Grid.Row="2" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Elevation:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Elevation}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="3" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Movement Type:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding MoveType, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<local:AngleBorder Grid.Row="3" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Movement Type:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding MoveType, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="4" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Range:" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding RangeXY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<local:AngleBorder Grid.Row="4" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Range:" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding RangeXY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="5" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Trainer Type:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="5" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding TrainerType}" />
|
||||
<local:AngleBorder Grid.Row="5" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Trainer Type:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="5" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding TrainerType}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="6" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="TrainerRange / BerryID:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="6" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding TrainerRangeOrBerryID}" />
|
||||
<local:AngleBorder Grid.Row="6" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="TrainerRange / BerryID:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="6" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding TrainerRangeOrBerryID}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="7" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Script Address:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="7" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding ScriptAddressText, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<local:AngleBorder Grid.Row="7" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Script Address:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="7" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding ScriptAddressText, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="8" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Flag:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="8" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding FlagText}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
<DataTemplate DataType="{x:Type map:WarpEventModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<local:AngleBorder Grid.Row="8" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Flag:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="8" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding FlagText}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
<DataTemplate DataType="{x:Type map:WarpEventModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<local:AngleBorder Grid.Row="1" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(x, y):" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding XY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<local:AngleBorder Grid.Row="1" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(x, y):" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding XY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="2" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Elevation:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Elevation}" />
|
||||
<local:AngleBorder Grid.Row="2" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Elevation:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Elevation}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="3" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(bank, map):"/>
|
||||
</local:AngleBorder>
|
||||
<StackPanel Grid.Row="3" Grid.Column="1" VerticalAlignment="Top">
|
||||
<local:AngleTextBox Direction="Out" TextBinding="{Binding BankMap}" />
|
||||
<TextBlock Text="{Binding TargetMapName}" />
|
||||
</StackPanel>
|
||||
<local:AngleBorder Grid.Row="3" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(bank, map):"/>
|
||||
</local:AngleBorder>
|
||||
<StackPanel Grid.Row="3" Grid.Column="1" VerticalAlignment="Top">
|
||||
<local:AngleTextBox Direction="Out" TextBinding="{Binding BankMap}" />
|
||||
<TextBlock Text="{Binding TargetMapName}" />
|
||||
</StackPanel>
|
||||
|
||||
<local:AngleBorder Grid.Row="4" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Destination ID:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding WarpID}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
<DataTemplate DataType="{x:Type map:ScriptEventModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<local:AngleBorder Grid.Row="4" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Destination ID:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding WarpID}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
<DataTemplate DataType="{x:Type map:ScriptEventModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<local:AngleBorder Grid.Row="1" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(x, y):" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding XY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<local:AngleBorder Grid.Row="1" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(x, y):" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding XY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="2" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Elevation:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Elevation}" />
|
||||
<local:AngleBorder Grid.Row="2" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Elevation:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Elevation}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="3" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Trigger:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Trigger}" />
|
||||
<local:AngleBorder Grid.Row="3" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Trigger:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Trigger}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="4" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Index:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Index}" />
|
||||
<local:AngleBorder Grid.Row="4" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Index:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Index}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="7" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Script Address:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="7" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding ScriptAddressText, UpdateSourceTrigger=PropertyChanged}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
<DataTemplate DataType="{x:Type map:SignpostEventModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<local:AngleBorder Grid.Row="7" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Script Address:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="7" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding ScriptAddressText, UpdateSourceTrigger=PropertyChanged}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
<DataTemplate DataType="{x:Type map:SignpostEventModel}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition /> <RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<local:AngleBorder Grid.Row="1" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(x, y):" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding XY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<local:AngleBorder Grid.Row="1" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="(x, y):" />
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding XY, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="2" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Elevation:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Elevation}" />
|
||||
<local:AngleBorder Grid.Row="2" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Elevation:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Elevation}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="3" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Kind:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Kind}" />
|
||||
<local:AngleBorder Grid.Row="3" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Kind:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Kind}" />
|
||||
|
||||
<local:AngleBorder Grid.Row="4" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Arg:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Arg}" />
|
||||
<local:AngleBorder Grid.Row="4" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Arg:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding Arg}" />
|
||||
|
||||
<!-- TODO break Arg into multiple pieces and show individual UI based on the value of Kind -->
|
||||
<!--<local:AngleBorder Grid.Row="7" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Script Address:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="7" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding ScriptAddressText, UpdateSourceTrigger=PropertyChanged}" />-->
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ContentControl.Resources>
|
||||
</ContentControl>
|
||||
<!-- TODO break Arg into multiple pieces and show individual UI based on the value of Kind -->
|
||||
<!--<local:AngleBorder Grid.Row="7" VerticalAlignment="Top" Direction="Left">
|
||||
<TextBlock Text="Script Address:"/>
|
||||
</local:AngleBorder>
|
||||
<local:AngleTextBox Grid.Row="7" Grid.Column="1" VerticalAlignment="Top" Direction="Out" TextBinding="{Binding ScriptAddressText, UpdateSourceTrigger=PropertyChanged}" />-->
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ContentControl.Resources>
|
||||
</ContentControl>
|
||||
</DockPanel>
|
||||
</ScrollViewer>
|
||||
<ItemsControl Grid.Column="1" Grid.Row="1" Name="MapView" ItemsSource="{Binding VisibleMaps}"
|
||||
SnapsToDevicePixels="True" ClipToBounds="True" Focusable="False"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user