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()
|
||||
{
|
||||
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(
|
||||
path,
|
||||
ModMakerInfo.InfoFile,
|
||||
@ -320,7 +312,7 @@ public class FoodAnimeTypeModel
|
||||
var frontLayName = $"{Name.Value.ToLower()}_{FrontLayName}_{anime.Index}";
|
||||
var backLayName = $"{Name.Value.ToLower()}_{BackLayName}_{anime.Index}";
|
||||
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="frontLayName">顶层名称</param>
|
||||
/// <param name="backLayName">底层名称</param>
|
||||
private static void SaveImages(
|
||||
FoodAnimeModel anime,
|
||||
string indexPath,
|
||||
string frontLayName,
|
||||
string backLayName
|
||||
)
|
||||
private static void SaveImages(FoodAnimeModel anime, string indexPath)
|
||||
{
|
||||
var frontLayPath = Path.Combine(indexPath, frontLayName);
|
||||
var backLayPath = Path.Combine(indexPath, backLayName);
|
||||
var frontLayPath = Path.Combine(indexPath, FrontLayName);
|
||||
var backLayPath = Path.Combine(indexPath, BackLayName);
|
||||
Directory.CreateDirectory(frontLayPath);
|
||||
Directory.CreateDirectory(backLayPath);
|
||||
foreach (var frontImage in anime.FrontImages.Enumerate())
|
||||
@ -401,27 +388,6 @@ public class FoodAnimeTypeModel
|
||||
lps.Add(line);
|
||||
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
|
||||
|
@ -75,6 +75,8 @@ public class PetModel : I18nModel<I18nPetInfoModel>
|
||||
/// </summary>
|
||||
public ObservableCollection<FoodAnimeTypeModel> FoodAnimes { get; } = new();
|
||||
|
||||
public ObservableValue<int> AnimeCount { get; } = new();
|
||||
|
||||
public bool IsSimplePetModel { get; } = false;
|
||||
|
||||
public PetModel()
|
||||
@ -84,6 +86,12 @@ public class PetModel : I18nModel<I18nPetInfoModel>
|
||||
{
|
||||
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)
|
||||
|
@ -158,7 +158,7 @@ public class FoodAnimeEditWindowVM
|
||||
/// <summary>
|
||||
/// 添加食物定位命令
|
||||
/// </summary>
|
||||
public ObservableCommand<FoodAnimeModel> AddeFoodLocationCommand { get; } = new();
|
||||
public ObservableCommand<FoodAnimeModel> AddFoodLocationCommand { get; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 删除食物定位命令
|
||||
@ -228,7 +228,7 @@ public class FoodAnimeEditWindowVM
|
||||
ClearBackImageCommand.ExecuteEvent += ClearBackImageCommand_ExecuteEvent;
|
||||
ChangeBackImageCommand.ExecuteEvent += ChangeBackImageCommand_ExecuteEvent;
|
||||
|
||||
AddeFoodLocationCommand.ExecuteEvent += AddeFoodLocationCommand_ExecuteEvent;
|
||||
AddFoodLocationCommand.ExecuteEvent += AddeFoodLocationCommand_ExecuteEvent;
|
||||
RemoveFoodLocationCommand.ExecuteEvent += RemoveFoodLocationCommand_ExecuteEvent;
|
||||
ClearFoodLocationCommand.ExecuteEvent += ClearFoodLocationCommand_ExecuteEvent;
|
||||
}
|
||||
|
@ -26,32 +26,19 @@
|
||||
<Expander
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Top"
|
||||
d:DataContext=""
|
||||
Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}}">
|
||||
<Expander.ContextMenu>
|
||||
d:DataContext="">
|
||||
<Expander.Header>
|
||||
<Grid Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}}">
|
||||
<Grid.ContextMenu>
|
||||
<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
|
||||
d:Header="添加图片"
|
||||
Command="{Binding PlacementTarget.Tag.RemoveAnimeCommand, 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}}" />
|
||||
</ContextMenu>
|
||||
</Expander.ContextMenu>
|
||||
<Expander.Header>
|
||||
<Grid>
|
||||
</Grid.ContextMenu>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
@ -80,7 +67,23 @@
|
||||
</Grid.RowDefinitions>
|
||||
<GroupBox>
|
||||
<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 顶层图片}" />
|
||||
<TextBlock Margin="10,0,0,0">
|
||||
<TextBlock.Text>
|
||||
@ -158,7 +161,23 @@
|
||||
</GroupBox>
|
||||
<GroupBox Grid.Row="1">
|
||||
<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 底层图片}" />
|
||||
<TextBlock Margin="10,0,0,0">
|
||||
<TextBlock.Text>
|
||||
@ -236,7 +255,23 @@
|
||||
</GroupBox>
|
||||
<GroupBox Grid.Row="2">
|
||||
<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 食物位置}" />
|
||||
<TextBlock Margin="10,0,0,0">
|
||||
<TextBlock.Text>
|
||||
@ -262,6 +297,16 @@
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<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>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
|
@ -200,7 +200,7 @@
|
||||
<TabItem.Header>
|
||||
<MultiBinding Converter="{StaticResource StringFormatConverter}" ConverterParameter="{}{0} ({1})">
|
||||
<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>
|
||||
</TabItem.Header>
|
||||
<Frame Content="{Binding ModEditWindow.AnimePage}" />
|
||||
|
Loading…
Reference in New Issue
Block a user