支持显示前中后3层夹心动画

This commit is contained in:
ZouJin 2023-06-01 18:16:45 +10:00
parent 67b394055e
commit 3a5ac7765c
108 changed files with 313 additions and 333 deletions

View File

@ -53,9 +53,14 @@
* 桌宠动画
* 物品/食物/饮料等
* 桌宠工作
* 自定义桌宠工作
* 说话文本
* 主题
* 代码插件 - 通过编写代码给桌宠添加内容
* 添加新的动画逻辑/显示方案 (eg: l2d/spine 等)
* 添加新功能 (闹钟/记事板等等)
* 几乎无所不能, 示例例子参见 [VPet.Plugin.Demo](https://github.com/LorisYounger/VPet.Plugin.Demo)
### 反馈&建议&联系我们
@ -188,7 +193,7 @@
## 参与开发
欢迎参与虚拟桌宠模拟器的开发! 为保证代码可维护度和游戏性,如果想要开发新的功能,请先[邮件联系](mailto:zoujin.dev@exlb.org)我想要添加的功能/玩法, 以确保该功能/玩法适用于虚拟桌宠模拟器. 以免未来提交时因不合适被拒(而造成代码浪费)<br/>
欢迎参与虚拟桌宠模拟器的开发! 为保证代码可维护度和游戏性,如果想要开发新的功能,请先[邮件联系](mailto:zoujin.dev@exlb.org)或发[Issues](https://github.com/LorisYounger/VPet/issues)我想要添加的功能/玩法, 以确保该功能/玩法适用于虚拟桌宠模拟器. 以免未来提交时因不合适被拒(而造成代码浪费)<br/>
如果是修复错误或者BUG,无需联系我,修好后直接PR即可
当想法通过后,您可以通过 [fork](https://github.com/LorisYounger/VPet/fork) 功能拷贝代码至自己的github以方便编写自己的代码, 编写完毕后通过[pull requests](https://github.com/LorisYounger/VPet/compare) 提交<br/>

View File

@ -1,20 +1,12 @@
using LinePutScript;
using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static VPet_Simulator.Core.GraphCore;
namespace VPet_Simulator.Core

View File

@ -1,13 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.AccessControl;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Threading;
using static VPet_Simulator.Core.GraphCore;
@ -1217,5 +1210,65 @@ namespace VPet_Simulator.Core
petgridcrlf = !petgridcrlf;
GC.Collect();
}
/// <summary>
/// 查找可用与显示的Border (自动多层切换)
/// </summary>
/// <param name="graph">动画</param>
public Border FindDisplayBorder(IGraph graph)
{
DisplayType = graph.GraphType;
var PetGridTag = Dispatcher.Invoke(() => PetGrid.Tag);
var PetGrid2Tag = Dispatcher.Invoke(() => PetGrid2.Tag);
if (PetGridTag == graph)
{
petgridcrlf = true;
((IGraph)(PetGrid2Tag)).Stop(true);
Dispatcher.Invoke(() =>
{
PetGrid.Visibility = Visibility.Visible;
PetGrid2.Visibility = Visibility.Hidden;
});
return PetGrid;
}
else if (PetGrid2Tag == graph)
{
petgridcrlf = false;
((IGraph)(PetGridTag)).Stop(true);
Dispatcher.Invoke(() =>
{
PetGrid2.Visibility = Visibility.Visible;
PetGrid.Visibility = Visibility.Hidden;
});
return PetGrid2;
}
if (petgridcrlf)
{
((IGraph)(PetGridTag)).Stop(true);
Dispatcher.Invoke(() =>
{
PetGrid.Visibility = Visibility.Hidden;
PetGrid2.Visibility = Visibility.Visible;
//PetGrid2.Tag = graph;
});
petgridcrlf = !petgridcrlf;
GC.Collect();
return PetGrid2;
}
else
{
((IGraph)(PetGrid2Tag)).Stop(true);
Dispatcher.Invoke(() =>
{
PetGrid2.Visibility = Visibility.Hidden;
PetGrid.Visibility = Visibility.Visible;
//PetGrid.Tag = graph;
});
petgridcrlf = !petgridcrlf;
GC.Collect();
return PetGrid;
}
}
}
}

View File

@ -1,7 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Windows;

View File

@ -1,19 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Timer = System.Timers.Timer;
namespace VPet_Simulator.Core

View File

@ -101,11 +101,8 @@
<UniformGrid Columns="5" />
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem x:Name="MenuFeed" Header="投喂" HorizontalContentAlignment="Center" Padding="0">
<MenuItem Header="食物" HorizontalContentAlignment="Center" IsEnabled="False" />
<MenuItem Header="饮料" HorizontalContentAlignment="Center" IsEnabled="False" />
<MenuItem Header="药品" HorizontalContentAlignment="Center" IsEnabled="False" />
</MenuItem>
<MenuItem x:Name="MenuFeed" Header="投喂" HorizontalContentAlignment="Center" Padding="0"
x:FieldModifier="public" />
<MenuItem x:Name="MenuPanel" Header="面板" MouseEnter="MenuPanel_MouseEnter" MouseLeave="MenuPanel_MouseLeave"
HorizontalContentAlignment="Center" Padding="0" />
<MenuItem x:Name="MenuInteract" Header="互动" HorizontalContentAlignment="Center" Width="99" Padding="0">
@ -120,7 +117,7 @@
<MenuItem x:Name="MenuDIY" Header="自定" HorizontalContentAlignment="Center" Click="MenuDIY_Click"
x:FieldModifier="public" Padding="0" />
<MenuItem x:Name="MenuSetting" Header="系统" HorizontalContentAlignment="Center" x:FieldModifier="public"
Padding="0" />
Padding="0" />
</Menu>
</Grid>
</UserControl>

View File

@ -1,17 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Timers;
using Timer = System.Timers.Timer;
using Panuon.WPF.UI;
@ -260,6 +251,7 @@ namespace VPet_Simulator.Core
private void Sleep_Click(object sender, RoutedEventArgs e)
{
this.Visibility = Visibility.Collapsed;
if (m.Core.Save.Mode != GameSave.ModeType.Ill)
if (m.State == Main.WorkingState.Sleep)
m.Display(GraphCore.GraphType.Sleep_C_End, m.DisplayNomal);
@ -269,34 +261,33 @@ namespace VPet_Simulator.Core
{
m.WorkTimer.Stop(() => m.DisplaySleep(true));
}
this.Visibility = Visibility.Collapsed;
}
private void Study_Click(object sender, RoutedEventArgs e)
{
this.Visibility = Visibility.Collapsed;
if (m.Core.Save.Mode != GameSave.ModeType.Ill)
if (m.State == Main.WorkingState.Study)
m.WorkTimer.Stop();
else m.WorkTimer.Start(Main.WorkingState.Study);
this.Visibility = Visibility.Collapsed;
}
private void Work1_Click(object sender, RoutedEventArgs e)
{
this.Visibility = Visibility.Collapsed;
if (m.Core.Save.Mode != GameSave.ModeType.Ill)
if (m.State == Main.WorkingState.WorkONE)
m.WorkTimer.Stop();
else m.WorkTimer.Start(Main.WorkingState.WorkONE);
this.Visibility = Visibility.Collapsed;
}
private void Work2_Click(object sender, RoutedEventArgs e)
{
this.Visibility = Visibility.Collapsed;
if (m.Core.Save.Mode != GameSave.ModeType.Ill)
if (m.State == Main.WorkingState.WorkTWO)
m.WorkTimer.Stop();
else m.WorkTimer.Start(Main.WorkingState.WorkTWO);
this.Visibility = Visibility.Collapsed;
}
}
}

View File

@ -1,18 +1,9 @@
using LinePutScript;
using LinePutScript.Converter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace VPet_Simulator.Core

View File

@ -1,17 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Controls;
namespace VPet_Simulator.Core
{

View File

@ -1,19 +1,103 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using static System.Windows.Forms.AxHost;
using System.Windows.Media;
using static VPet_Simulator.Core.Picture;
using static VPet_Simulator.Core.IGraph;
using LinePutScript;
using System.IO;
using static VPet_Simulator.Core.GraphCore;
namespace VPet_Simulator.Core
{
public class FoodAnimation : IGraph
/// <summary>
/// 食物动画 支持显示前中后3层夹心动画
/// 不一定只用于食物,只是叫这个名字
/// </summary>
public class FoodAnimation : IRunImage
{
/// <summary>
/// 创建食物动画 第二层夹心为运行时提供
/// </summary>
/// <param name="graphCore">动画核心</param>
/// <param name="modetype">动画模式</param>
/// <param name="graphtype">动画类型</param>
/// <param name="front_Lay">前层 动画名</param>
/// <param name="back_Lay">后层 动画名</param>
/// <param name="animations">中间层运动轨迹</param>
/// <param name="isLoop">是否循环</param>
public FoodAnimation(GraphCore graphCore, GameSave.ModeType modetype, GraphCore.GraphType graphtype, string front_Lay,
string back_Lay, ILine animations, bool isLoop = false)
{
IsLoop = isLoop;
GraphType = graphtype;
ModeType = modetype;
GraphCore = graphCore;
Front_Lay = front_Lay;
Back_Lay = back_Lay;
Animations = new List<Animation>();
int i = 0;
ISub sub = animations.Find("a" + i);
while (sub != null)
{
Animations.Add(new Animation(this, sub));
sub = animations.Find("a" + ++i);
}
}
public static void LoadGraph(GraphCore graph, FileSystemInfo path, ILine info)
{
GameSave.ModeType modetype;
var path_name = path.FullName.Trim('_').ToLower();
if (!Enum.TryParse(info[(gstr)"mode"], true, out modetype))
{
if (path_name.Contains("happy"))
{
modetype = GameSave.ModeType.Happy;
}
else if (path_name.Contains("nomal"))
{
modetype = GameSave.ModeType.Nomal;
}
else if (path_name.Contains("poorcondition"))
{
modetype = GameSave.ModeType.PoorCondition;
}
else if (path_name.Contains("ill"))
{
modetype = GameSave.ModeType.Ill;
}
else
{
modetype = GameSave.ModeType.Nomal;
}
}
GraphType graphtype = GraphType.Not_Able;
if (!Enum.TryParse(info[(gstr)"graph"], true, out graphtype))
{
for (int i = 0; i < GraphTypeValue.Length; i++)
{
if (path_name.StartsWith(GraphTypeValue[i]))
{
graphtype = (GraphType)i;
break;
}
}
}
bool isLoop = info[(gbol)"loop"];
FoodAnimation pa = new FoodAnimation(graph, modetype, graphtype, info[(gstr)"front_lay"], info[(gstr)"back_lay"], info, isLoop);
if (graphtype == GraphType.Not_Able)
{
graph.AddCOMMGraph(pa, info.info);
}
else
{
graph.AddGraph(pa, graphtype);
}
}
/// <summary>
/// 前层名字
/// </summary>
@ -67,7 +151,10 @@ namespace VPet_Simulator.Core
{
private FoodAnimation parent;
public Thickness MarginWI;
public double Rotate;
public double Rotate = 0;
public double Opacity = 1;
public bool IsVisiable = true;
public double Width;
/// <summary>
/// 帧时间
/// </summary>
@ -78,12 +165,37 @@ namespace VPet_Simulator.Core
/// <param name="parent">FoodAnimation</param>
/// <param name="time">持续时间</param>
/// <param name="wx"></param>
public Animation(FoodAnimation parent, int time, Thickness wx, double rotate)
public Animation(FoodAnimation parent, int time, Thickness wx, double width, double rotate = 0, bool isVisiable = true, double opacity = 1)
{
this.parent = parent;
Time = time;
MarginWI = wx;
Rotate = rotate;
IsVisiable = isVisiable;
Width = width;
Opacity = opacity;
}
/// <summary>
/// 创建单帧动画
/// </summary>
public Animation(FoodAnimation parent, ISub sub)
{
this.parent = parent;
var strs = sub.GetInfos();
Time = int.Parse(strs[0]);
if (strs.Length == 1)
IsVisiable = false;
else
{
MarginWI = new Thickness(double.Parse(strs[1]), double.Parse(strs[2]), 0, 0);
Width = double.Parse(strs[3]);
if (strs.Length > 4)
{
Rotate = double.Parse(strs[4]);
if (strs.Length > 5)
Opacity = double.Parse(strs[5]);
}
}
}
/// <summary>
/// 运行该图层
@ -93,8 +205,19 @@ namespace VPet_Simulator.Core
//先显示该图层
This.Dispatcher.Invoke(() =>
{
This.Margin = MarginWI;
This.LayoutTransform = new RotateTransform(Rotate);
if (IsVisiable)
{
This.Visibility = Visibility.Visible;
This.Margin = MarginWI;
This.LayoutTransform = new RotateTransform(Rotate);
This.Opacity = 1;
This.Width = Width;
}
else
{
This.Visibility = Visibility.Collapsed;
}
});
//然后等待帧时间毫秒
Thread.Sleep(Time);
@ -157,24 +280,62 @@ namespace VPet_Simulator.Core
Height = 500;
Front = new Image();
Back = new Image();
Food = new Image();
Food.RenderTransformOrigin = new Point(0.5, 0.5);
this.Children.Add(Front);
Food = new Image
{
RenderTransformOrigin = new Point(0.5, 0.5),
VerticalAlignment = VerticalAlignment.Top,
HorizontalAlignment = HorizontalAlignment.Left,
Visibility = Visibility.Collapsed,
};
this.Children.Add(Back);
this.Children.Add(Food);
this.Children.Add(Front);
}
public Image Front;
public Image Food;
public Image Back;
}
public void Run(Border parant, Action EndAction = null)
public void Run(Border parant, Action EndAction = null) => Run(parant, null, EndAction);
public void Run(Border parant, ImageSource image, Action EndAction = null)
{
throw new NotImplementedException();
if (PlayState)
{//如果当前正在运行,重置状态
//IsResetPlay = true;
Stop();
StopAction = () => Run(parant, image, EndAction);
return;
}
nowid = 0;
PlayState = true;
DoEndAction = true;
parant.Dispatcher.Invoke(() =>
{
parant.Tag = this;
if (parant.Child != FoodGrid)
{
if (FoodGrid.Parent != null)
{
((Border)FoodGrid.Parent).Child = null;
}
parant.Child = FoodGrid;
}
IImageRun FL = (IImageRun)GraphCore.FindCOMMGraph(Front_Lay, ModeType);
IImageRun BL = (IImageRun)GraphCore.FindCOMMGraph(Back_Lay, ModeType);
var t1 = FL.Run(FoodGrid.Front);
var t2 = BL.Run(FoodGrid.Back);
FoodGrid.Food.Source = image;
Task.Run(() => Animations[0].Run(FoodGrid.Food, EndAction));
Task.Run(t1.Start);
Task.Run(t2.Start);
});
}
public void Stop(bool StopEndAction = false)
{
throw new NotImplementedException();
DoEndAction = !StopEndAction;
PlayState = false;
}
}
}

View File

@ -1,10 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using static VPet_Simulator.Core.GraphCore;
namespace VPet_Simulator.Core
@ -33,7 +29,7 @@ namespace VPet_Simulator.Core
/// <summary>
/// 是否准备完成
/// </summary>
bool IsReady { get; }
bool IsReady { get; }
///// <summary>
///// 从0开始运行该动画, 等待部署完成后执行
///// </summary>
@ -55,5 +51,18 @@ namespace VPet_Simulator.Core
/// </summary>
/// <param name="StopEndAction">停止动画时是否允许执行停止帧</param>
void Stop(bool StopEndAction = false);
/// <summary>
/// 指示该ImageRun支持
/// </summary>
public interface IRunImage : IGraph
{
/// <summary>
/// 从0开始运行该动画
/// </summary>
/// <param name="parant">显示位置</param>
/// <param name="EndAction">结束方法</param>
/// <param name="image">额外图片</param>
void Run(Border parant, ImageSource image, Action EndAction = null);
}
}
}

View File

@ -1,27 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows;
using System.Windows.Threading;
using System.Threading;
using System.Drawing;
using LinePutScript;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TreeView;
using Panuon.WPF.UI;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
using System.Security.Policy;
using System.Runtime.InteropServices.ComTypes;
using static VPet_Simulator.Core.GraphCore;
using static VPet_Simulator.Core.Picture;
@ -30,7 +17,7 @@ namespace VPet_Simulator.Core
/// <summary>
/// PNGAnimation.xaml 的交互逻辑
/// </summary>
public partial class PNGAnimation : IGraph, IImageRun
public partial class PNGAnimation : IImageRun
{
/// <summary>
/// 所有动画帧
@ -358,7 +345,7 @@ namespace VPet_Simulator.Core
if (PlayState)
{//如果当前正在运行,重置状态
//IsResetPlay = true;
Stop(true);
Stop();
StopAction = () => Run(parant, EndAction);
return;
}

View File

@ -1,25 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using System.Windows;
using System.IO;
using System.Windows.Controls;
using System.Windows.Threading;
using LinePutScript;
using static VPet_Simulator.Core.GraphCore;
using static VPet_Simulator.Core.Picture;
using System.Security.Cryptography;
namespace VPet_Simulator.Core
{
/// <summary>
/// Picture.xaml 的交互逻辑
/// </summary>
public partial class Picture : IGraph, IImageRun
public partial class Picture : IImageRun
{
/// <summary>
/// 新建新静态图像
@ -122,7 +117,7 @@ namespace VPet_Simulator.Core
{
if (PlayState)
{
IsLoop = true;
IsContinue = true;
return;
}
PlayState = true;
@ -228,7 +223,7 @@ namespace VPet_Simulator.Core
});
});
}
public interface IImageRun
public interface IImageRun : IGraph
{
/// <summary>
/// 指定图像图像控件准备运行该动画

View File

@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;

View File

@ -1,9 +1,6 @@
using System;
using System.Collections.Generic;
using System.Windows;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VPet_Simulator.Core
{

View File

@ -1,11 +1,6 @@
using LinePutScript;
using LinePutScript.Converter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace VPet_Simulator.Core
{

View File

@ -1,11 +1,4 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VPet_Simulator.Core
namespace VPet_Simulator.Core
{
/// <summary>
/// 桌宠控制器 需自行实现

View File

@ -1,14 +1,8 @@
using LinePutScript;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Threading;
using static VPet_Simulator.Core.GraphCore;
namespace VPet_Simulator.Core
@ -56,6 +50,8 @@ namespace VPet_Simulator.Core
public static Dictionary<string, LoadGraphDelegate> IGraphConvert = new Dictionary<string, LoadGraphDelegate>()
{
{ "pnganimation", PNGAnimation.LoadGraph},
{ "picture", Picture.LoadGraph },
{ "foodanimation", FoodAnimation.LoadGraph },
};
public static void LoadGraph(GraphCore graph, DirectoryInfo di, string path_name)
{
@ -72,7 +68,7 @@ namespace VPet_Simulator.Core
if (!string.IsNullOrEmpty(str))
{
var p = Path.Combine(di.FullName, str);
if(Directory.Exists(p))
if (Directory.Exists(p))
func.Invoke(graph, new DirectoryInfo(p), line);
else if (File.Exists(p))
func.Invoke(graph, new FileInfo(p), line);

View File

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VPet_Simulator.Core
namespace VPet_Simulator.Core
{
internal class Drink
{

View File

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VPet_Simulator.Core
namespace VPet_Simulator.Core
{
internal class Food
{

View File

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VPet_Simulator.Core
namespace VPet_Simulator.Core
{
internal class Item
{

View File

@ -1,6 +1,4 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
@ -31,13 +29,13 @@ using System.Windows;
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly:ThemeInfo(
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(未在页面中找到资源时使用,
//或应用程序资源字典中找到时使用)
//(未在页面中找到资源时使用,
//或应用程序资源字典中找到时使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(未在页面中找到资源时使用,
//、应用程序或任何主题专用资源字典中找到时使用)
//(未在页面中找到资源时使用,
//、应用程序或任何主题专用资源字典中找到时使用)
)]

View File

@ -13,6 +13,7 @@
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<Deterministic>true</Deterministic>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@ -42,7 +43,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
@ -51,7 +52,7 @@
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
@ -60,7 +61,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
@ -69,7 +70,7 @@
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>

View File

@ -1,11 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace VPet_Simulator.Tool
{

View File

@ -1,5 +1,4 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下

View File

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;
using System.Collections.Generic;
using VPet_Simulator.Core;
namespace VPet_Simulator.Windows.Interface

View File

@ -1,10 +1,4 @@
using LinePutScript;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VPet_Simulator.Windows.Interface
namespace VPet_Simulator.Windows.Interface
{
/// <summary>
/// 这是插件的主体内容 请继承这个类

View File

@ -1,5 +1,4 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下

View File

@ -1,12 +1,6 @@
using LinePutScript;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using VPet_Simulator.Core;
namespace VPet_Simulator.Windows.Interface
{

View File

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows;
namespace VPet_Simulator.Windows
{

View File

@ -1,18 +1,11 @@
using LinePutScript;
using Steamworks.Ugc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using VPet_Simulator.Core;
using VPet_Simulator.Windows.Interface;
using static VPet_Simulator.Core.GraphCore;
namespace VPet_Simulator.Windows
{

View File

@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VPet_Simulator.Core;
using VPet_Simulator.Core;
namespace VPet_Simulator.Windows
{

View File

@ -4,11 +4,7 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using VPet_Simulator.Core;
using VPet_Simulator.Windows.Interface;
using ToolBar = VPet_Simulator.Core.ToolBar;

View File

@ -18,6 +18,10 @@ using ChatGPT.API.Framework;
using static VPet_Simulator.Core.GraphCore;
using Panuon.WPF.UI;
using VPet_Simulator.Windows.Interface;
using static VPet_Simulator.Core.IGraph;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using System.Windows.Media;
namespace VPet_Simulator.Windows
{
@ -266,6 +270,17 @@ namespace VPet_Simulator.Windows
winSetting.Show();
});
//this.Background = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Res/TopLogo2019.PNG")));
Main.ToolBar.AddMenuButton(VPet_Simulator.Core.ToolBar.MenuType.Feed, "喂食测试", () =>
{
Main.ToolBar.Visibility = Visibility.Collapsed;
IRunImage eat = (IRunImage)Core.Graph.FindGraph(GraphType.Eat, GameSave.ModeType.Nomal);
var b = Main.FindDisplayBorder(eat);
eat.Run(b, new BitmapImage(new Uri("pack://application:,,,/Res/tony.bmp")), Main.DisplayToNomal);
}
);
Main.SetMoveMode(Set.AllowMove, Set.SmartMove, Set.SmartMoveInterval * 1000);
Main.SetLogicInterval((int)(Set.LogicInterval * 1000));
if (Set.MessageBarOutside)

View File

@ -1,6 +1,4 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View File

@ -14,6 +14,7 @@
<WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@ -40,7 +41,6 @@
<DefineConstants>TRACE;DEBUG;X64</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
@ -50,7 +50,6 @@
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
@ -60,7 +59,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
@ -70,7 +68,6 @@
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
@ -241,6 +238,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Res\TopLogo2019.PNG" />
<Resource Include="Res\tony.bmp" />
<Content Include="steam_api.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

View File

@ -1,19 +1,8 @@
using LinePutScript;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace VPet_Simulator.Windows
{

View File

@ -1,30 +1,15 @@
using LinePutScript;
using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;
using System.Web;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using VPet_Simulator.Core;
using VPet_Simulator.Windows.Interface;
using Timer = System.Timers.Timer;
namespace VPet_Simulator.Windows
{

View File

@ -1,30 +1,9 @@
using LinePutScript;
using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
using System;
using System.Threading.Tasks;
using System.Timers;
using System.Web;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using VPet_Simulator.Core;
using VPet_Simulator.Windows.Interface;
using Timer = System.Timers.Timer;
namespace VPet_Simulator.Windows
{

View File

@ -4,17 +4,7 @@ using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace VPet_Simulator.Windows
{

View File

@ -1,18 +1,7 @@
using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace VPet_Simulator.Windows
{

View File

@ -1,17 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using VPet_Simulator.Core;
using static VPet_Simulator.Core.GraphCore;

View File

@ -1,26 +1,15 @@
using LinePutScript;
using Panuon.WPF.UI;
using Steamworks;
using Steamworks.Ugc;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using VPet_Simulator.Core;
using VPet_Simulator.Windows.Interface;
namespace VPet_Simulator.Windows
{

View File

@ -1,25 +1,10 @@
using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Remoting.Contexts;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using VPet_Simulator.Core;
using System.Web;
using System.Threading;
namespace VPet_Simulator.Windows
{

View File

@ -4,7 +4,7 @@ touchraised:|px#0:|py#50:|sw#500:|sh#200:|
raisepoint:|happy_x#290:|happy_y#128:|nomal_x#290:|nomal_y#128:|poorcondition_x#290:|poorcondition_y#128:|ill_x#290:|ill_y#128:|
speed:|walk#20:|climb#10:|climbtop#8:|crawl#8:|fallx#14:|fally#10:|crawl#10:|
locate:|climbleft#145:|climbright#185:|climbtop#150:|
storernd:|Touch_Body_A_Start:|Touch_Body_B_Loop:|Touch_Body_C_End:|
storernd:|Touch_Body_A_Start:|Touch_Body_B_Loop:|Touch_Body_C_End:|Eat:|
str:|work1#文案:|work2#直播:|
worktimer:|work1#10:|work2#10:|
UIStyleConfig#work1:|BorderBrush#000000:|Background#413d39:|ButtonBackground#322e2b:|ButtonForeground#FFFFFF:|Foreground#ccbdad:|Left#113:|Top#315:|Width#280:|

View File

@ -0,0 +1,3 @@
PNGAnimation#eat_back_lay:|path#back_lay:|mode#nomal:|graph#Not_Able:|
PNGAnimation#eat_front_lay:|path#front_lay:|mode#nomal:|graph#Not_Able:|
FoodAnimation:|mode#nomal:|graph#Eat:|a0#125,220,30,45,0,0.375:|a1#125,252,96,45,25,0.4375:|a2#125,238,91,45,-20:|a3#125,233,186,43,-5.5:|a4#750,229,204,48:|a5#125,227,173,48:|a6#375,229,204,48:|a7#125,227,173,48:|a8#750:|front_lay#eat_front_lay:|back_lay#eat_back_lay:|a9#125:|

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Some files were not shown because too many files have changed in this diff Show More