mirror of
https://github.com/LorisYounger/VPet.ModMaker.git
synced 2024-08-30 18:22:21 +00:00
更新
This commit is contained in:
parent
23ddacdeb1
commit
906faf69cf
@ -98,14 +98,6 @@ public class FoodAnimeTypeModel
|
|||||||
: this()
|
: this()
|
||||||
{
|
{
|
||||||
Name.Value = Path.GetFileName(path);
|
Name.Value = Path.GetFileName(path);
|
||||||
//var infoFile = Path.Combine(path, ModMakerInfo.InfoFile);
|
|
||||||
//if (
|
|
||||||
// Directory.EnumerateFiles(path, ModMakerInfo.InfoFile, SearchOption.AllDirectories).Any()
|
|
||||||
// is false
|
|
||||||
//)
|
|
||||||
// throw new Exception("信息文件\n{0}\n不存在".Translate(infoFile));
|
|
||||||
//if (File.Exists(infoFile))
|
|
||||||
// ParseInfoFile(path, infoFile);
|
|
||||||
var infoFiles = Directory.EnumerateFiles(
|
var infoFiles = Directory.EnumerateFiles(
|
||||||
path,
|
path,
|
||||||
ModMakerInfo.InfoFile,
|
ModMakerInfo.InfoFile,
|
||||||
@ -320,7 +312,7 @@ public class FoodAnimeTypeModel
|
|||||||
var frontLayName = $"{Name.Value.ToLower()}_{FrontLayName}_{anime.Index}";
|
var frontLayName = $"{Name.Value.ToLower()}_{FrontLayName}_{anime.Index}";
|
||||||
var backLayName = $"{Name.Value.ToLower()}_{BackLayName}_{anime.Index}";
|
var backLayName = $"{Name.Value.ToLower()}_{BackLayName}_{anime.Index}";
|
||||||
SaveInfoFile(infoFile, frontLayName, backLayName, anime.Value, mode);
|
SaveInfoFile(infoFile, frontLayName, backLayName, anime.Value, mode);
|
||||||
SaveImages(anime.Value, indexPath, frontLayName, backLayName);
|
SaveImages(anime.Value, indexPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,15 +323,10 @@ public class FoodAnimeTypeModel
|
|||||||
/// <param name="indexPath">索引路径</param>
|
/// <param name="indexPath">索引路径</param>
|
||||||
/// <param name="frontLayName">顶层名称</param>
|
/// <param name="frontLayName">顶层名称</param>
|
||||||
/// <param name="backLayName">底层名称</param>
|
/// <param name="backLayName">底层名称</param>
|
||||||
private static void SaveImages(
|
private static void SaveImages(FoodAnimeModel anime, string indexPath)
|
||||||
FoodAnimeModel anime,
|
|
||||||
string indexPath,
|
|
||||||
string frontLayName,
|
|
||||||
string backLayName
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
var frontLayPath = Path.Combine(indexPath, frontLayName);
|
var frontLayPath = Path.Combine(indexPath, FrontLayName);
|
||||||
var backLayPath = Path.Combine(indexPath, backLayName);
|
var backLayPath = Path.Combine(indexPath, BackLayName);
|
||||||
Directory.CreateDirectory(frontLayPath);
|
Directory.CreateDirectory(frontLayPath);
|
||||||
Directory.CreateDirectory(backLayPath);
|
Directory.CreateDirectory(backLayPath);
|
||||||
foreach (var frontImage in anime.FrontImages.Enumerate())
|
foreach (var frontImage in anime.FrontImages.Enumerate())
|
||||||
@ -401,27 +388,6 @@ public class FoodAnimeTypeModel
|
|||||||
lps.Add(line);
|
lps.Add(line);
|
||||||
File.WriteAllText(infoFile, lps.ToString());
|
File.WriteAllText(infoFile, lps.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存图片
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="imagesPath"></param>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
static void SaveImages(string imagesPath, AnimeModel model)
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(imagesPath);
|
|
||||||
var imageIndex = 0;
|
|
||||||
foreach (var image in model.Images)
|
|
||||||
{
|
|
||||||
image.Image.Value.SaveToPng(
|
|
||||||
Path.Combine(
|
|
||||||
imagesPath,
|
|
||||||
$"{model.Id.Value}_{imageIndex:000}_{image.Duration.Value}.png"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
imageIndex++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PNGAnimeInfo
|
public class PNGAnimeInfo
|
||||||
|
@ -75,6 +75,8 @@ public class PetModel : I18nModel<I18nPetInfoModel>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public ObservableCollection<FoodAnimeTypeModel> FoodAnimes { get; } = new();
|
public ObservableCollection<FoodAnimeTypeModel> FoodAnimes { get; } = new();
|
||||||
|
|
||||||
|
public ObservableValue<int> AnimeCount { get; } = new();
|
||||||
|
|
||||||
public bool IsSimplePetModel { get; } = false;
|
public bool IsSimplePetModel { get; } = false;
|
||||||
|
|
||||||
public PetModel()
|
public PetModel()
|
||||||
@ -84,6 +86,12 @@ public class PetModel : I18nModel<I18nPetInfoModel>
|
|||||||
{
|
{
|
||||||
DescriptionId.Value = $"{n}_{nameof(DescriptionId)}";
|
DescriptionId.Value = $"{n}_{nameof(DescriptionId)}";
|
||||||
};
|
};
|
||||||
|
AnimeCount.AddNotifyReceiver(Animes);
|
||||||
|
AnimeCount.AddNotifyReceiver(FoodAnimes);
|
||||||
|
AnimeCount.NotifyReceived += (ref int v) =>
|
||||||
|
{
|
||||||
|
v = Animes.Count + FoodAnimes.Count;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public PetModel(PetModel model)
|
public PetModel(PetModel model)
|
||||||
|
@ -158,7 +158,7 @@ public class FoodAnimeEditWindowVM
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加食物定位命令
|
/// 添加食物定位命令
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ObservableCommand<FoodAnimeModel> AddeFoodLocationCommand { get; } = new();
|
public ObservableCommand<FoodAnimeModel> AddFoodLocationCommand { get; } = new();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 删除食物定位命令
|
/// 删除食物定位命令
|
||||||
@ -228,7 +228,7 @@ public class FoodAnimeEditWindowVM
|
|||||||
ClearBackImageCommand.ExecuteEvent += ClearBackImageCommand_ExecuteEvent;
|
ClearBackImageCommand.ExecuteEvent += ClearBackImageCommand_ExecuteEvent;
|
||||||
ChangeBackImageCommand.ExecuteEvent += ChangeBackImageCommand_ExecuteEvent;
|
ChangeBackImageCommand.ExecuteEvent += ChangeBackImageCommand_ExecuteEvent;
|
||||||
|
|
||||||
AddeFoodLocationCommand.ExecuteEvent += AddeFoodLocationCommand_ExecuteEvent;
|
AddFoodLocationCommand.ExecuteEvent += AddeFoodLocationCommand_ExecuteEvent;
|
||||||
RemoveFoodLocationCommand.ExecuteEvent += RemoveFoodLocationCommand_ExecuteEvent;
|
RemoveFoodLocationCommand.ExecuteEvent += RemoveFoodLocationCommand_ExecuteEvent;
|
||||||
ClearFoodLocationCommand.ExecuteEvent += ClearFoodLocationCommand_ExecuteEvent;
|
ClearFoodLocationCommand.ExecuteEvent += ClearFoodLocationCommand_ExecuteEvent;
|
||||||
}
|
}
|
||||||
|
@ -26,32 +26,19 @@
|
|||||||
<Expander
|
<Expander
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
VerticalAlignment="Top"
|
VerticalAlignment="Top"
|
||||||
d:DataContext=""
|
d:DataContext="">
|
||||||
Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}}">
|
<Expander.Header>
|
||||||
<Expander.ContextMenu>
|
<Grid Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}}">
|
||||||
|
<Grid.ContextMenu>
|
||||||
<ContextMenu d:DataContext="">
|
<ContextMenu d:DataContext="">
|
||||||
<MenuItem
|
|
||||||
d:Header="添加图片"
|
|
||||||
Command="{Binding PlacementTarget.Tag.AddImageCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
|
||||||
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
|
||||||
Header="{ll:Str 添加图片}"
|
|
||||||
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
|
||||||
<MenuItem
|
|
||||||
d:Header="添加图片"
|
|
||||||
Command="{Binding PlacementTarget.Tag.ClearImageCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
|
||||||
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
|
||||||
Header="{ll:Str 清空图片}"
|
|
||||||
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
d:Header="添加图片"
|
d:Header="添加图片"
|
||||||
Command="{Binding PlacementTarget.Tag.RemoveAnimeCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
Command="{Binding PlacementTarget.Tag.RemoveAnimeCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
Header="{ll:Str 删除此项}"
|
Header="{ll:Str 删除此动画}"
|
||||||
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
||||||
</ContextMenu>
|
</ContextMenu>
|
||||||
</Expander.ContextMenu>
|
</Grid.ContextMenu>
|
||||||
<Expander.Header>
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
@ -80,7 +67,23 @@
|
|||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<GroupBox>
|
<GroupBox>
|
||||||
<GroupBox.Header>
|
<GroupBox.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}}">
|
||||||
|
<StackPanel.ContextMenu>
|
||||||
|
<ContextMenu d:DataContext="">
|
||||||
|
<MenuItem
|
||||||
|
d:Header="添加图片"
|
||||||
|
Command="{Binding PlacementTarget.Tag.AddFrontImageCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
Header="{ll:Str 添加图片}"
|
||||||
|
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
||||||
|
<MenuItem
|
||||||
|
d:Header="添加图片"
|
||||||
|
Command="{Binding PlacementTarget.Tag.ClearFrontImageCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
Header="{ll:Str 清空图片}"
|
||||||
|
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
||||||
|
</ContextMenu>
|
||||||
|
</StackPanel.ContextMenu>
|
||||||
<Label d:Content="顶层图片" Content="{ll:Str 顶层图片}" />
|
<Label d:Content="顶层图片" Content="{ll:Str 顶层图片}" />
|
||||||
<TextBlock Margin="10,0,0,0">
|
<TextBlock Margin="10,0,0,0">
|
||||||
<TextBlock.Text>
|
<TextBlock.Text>
|
||||||
@ -158,7 +161,23 @@
|
|||||||
</GroupBox>
|
</GroupBox>
|
||||||
<GroupBox Grid.Row="1">
|
<GroupBox Grid.Row="1">
|
||||||
<GroupBox.Header>
|
<GroupBox.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}}">
|
||||||
|
<StackPanel.ContextMenu>
|
||||||
|
<ContextMenu d:DataContext="">
|
||||||
|
<MenuItem
|
||||||
|
d:Header="添加图片"
|
||||||
|
Command="{Binding PlacementTarget.Tag.AddBackImageCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
Header="{ll:Str 添加图片}"
|
||||||
|
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
||||||
|
<MenuItem
|
||||||
|
d:Header="添加图片"
|
||||||
|
Command="{Binding PlacementTarget.Tag.ClearBackImageCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
Header="{ll:Str 清空图片}"
|
||||||
|
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
||||||
|
</ContextMenu>
|
||||||
|
</StackPanel.ContextMenu>
|
||||||
<Label d:Content="底层图片" Content="{ll:Str 底层图片}" />
|
<Label d:Content="底层图片" Content="{ll:Str 底层图片}" />
|
||||||
<TextBlock Margin="10,0,0,0">
|
<TextBlock Margin="10,0,0,0">
|
||||||
<TextBlock.Text>
|
<TextBlock.Text>
|
||||||
@ -236,7 +255,23 @@
|
|||||||
</GroupBox>
|
</GroupBox>
|
||||||
<GroupBox Grid.Row="2">
|
<GroupBox Grid.Row="2">
|
||||||
<GroupBox.Header>
|
<GroupBox.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}}">
|
||||||
|
<StackPanel.ContextMenu>
|
||||||
|
<ContextMenu d:DataContext="">
|
||||||
|
<MenuItem
|
||||||
|
d:Header="添加食物定位"
|
||||||
|
Command="{Binding PlacementTarget.Tag.AddFoodLocationCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
Header="{ll:Str 添加食物定位}"
|
||||||
|
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
||||||
|
<MenuItem
|
||||||
|
d:Header="清空食物定位"
|
||||||
|
Command="{Binding PlacementTarget.Tag.ClearFoodLocationCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
Header="{ll:Str 清空食物定位}"
|
||||||
|
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
||||||
|
</ContextMenu>
|
||||||
|
</StackPanel.ContextMenu>
|
||||||
<Label d:Content="食物位置" Content="{ll:Str 食物位置}" />
|
<Label d:Content="食物位置" Content="{ll:Str 食物位置}" />
|
||||||
<TextBlock Margin="10,0,0,0">
|
<TextBlock Margin="10,0,0,0">
|
||||||
<TextBlock.Text>
|
<TextBlock.Text>
|
||||||
@ -262,6 +297,16 @@
|
|||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Grid>
|
<Grid>
|
||||||
|
<Grid.ContextMenu>
|
||||||
|
<ContextMenu>
|
||||||
|
<MenuItem
|
||||||
|
d:Header="删除食物定位"
|
||||||
|
Command="{Binding PlacementTarget.Tag.RemoveFoodLocationCommand, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}"
|
||||||
|
Header="{ll:Str 删除食物定位}"
|
||||||
|
IsEnabled="{Binding PlacementTarget.Tag.PlayCommand.CurrentCanExecute.Value, RelativeSource={RelativeSource AncestorType=ContextMenu, Mode=FindAncestor}}" />
|
||||||
|
</ContextMenu>
|
||||||
|
</Grid.ContextMenu>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
|
@ -200,7 +200,7 @@
|
|||||||
<TabItem.Header>
|
<TabItem.Header>
|
||||||
<MultiBinding Converter="{StaticResource StringFormatConverter}" ConverterParameter="{}{0} ({1})">
|
<MultiBinding Converter="{StaticResource StringFormatConverter}" ConverterParameter="{}{0} ({1})">
|
||||||
<Binding Path="Tag" RelativeSource="{RelativeSource Mode=Self}" />
|
<Binding Path="Tag" RelativeSource="{RelativeSource Mode=Self}" />
|
||||||
<Binding Path="ModEditWindow.AnimePage.ViewModel.CurrentPet.Value.Animes.Count" />
|
<Binding Path="ModEditWindow.AnimePage.ViewModel.CurrentPet.Value.AnimeCount" />
|
||||||
</MultiBinding>
|
</MultiBinding>
|
||||||
</TabItem.Header>
|
</TabItem.Header>
|
||||||
<Frame Content="{Binding ModEditWindow.AnimePage}" />
|
<Frame Content="{Binding ModEditWindow.AnimePage}" />
|
||||||
|
Loading…
Reference in New Issue
Block a user