更新下蹲和睡觉动画

This commit is contained in:
ZouJin 2023-01-25 12:49:18 +08:00
parent 9f8edc1791
commit 892761066c
73 changed files with 100 additions and 50 deletions

View File

@ -75,7 +75,12 @@ namespace VPet_Simulator.Core
} }
private void MoveTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) private void MoveTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{ {
string str = DisplayType.ToString();
Core.Controller.MoveWindows(MoveTimerPoint.X, MoveTimerPoint.Y); Core.Controller.MoveWindows(MoveTimerPoint.X, MoveTimerPoint.Y);
if (!str.Contains("Left") && !str.Contains("Right"))
{
MoveTimer.Stop();
}
} }
public Action DefaultClickAction; public Action DefaultClickAction;
bool isPress = false; bool isPress = false;

View File

@ -41,28 +41,31 @@ namespace VPet_Simulator.Core
switch (DisplayType) switch (DisplayType)
{ {
case GraphCore.GraphType.Boring_B_Loop: case GraphCore.GraphType.Boring_B_Loop:
Display(Core.Graph.FindGraph(GraphCore.GraphType.Boring_C_End, Core.Save.Mode, true), EndAction); Display(GraphCore.GraphType.Boring_C_End, EndAction);
return true; return true;
case GraphCore.GraphType.Squat_B_Loop: case GraphCore.GraphType.Squat_B_Loop:
Display(Core.Graph.FindGraph(GraphCore.GraphType.Squat_C_End, Core.Save.Mode, true), EndAction); Display(GraphCore.GraphType.Squat_C_End, EndAction);
return true; return true;
case GraphType.Crawl_Left_B_Loop: case GraphType.Crawl_Left_B_Loop:
Display(Core.Graph.FindGraph(GraphCore.GraphType.Crawl_Left_C_End, Core.Save.Mode, true), EndAction); Display(GraphCore.GraphType.Crawl_Left_C_End, EndAction);
return true; return true;
case GraphType.Crawl_Right_B_Loop: case GraphType.Crawl_Right_B_Loop:
Display(Core.Graph.FindGraph(GraphCore.GraphType.Crawl_Right_C_End, Core.Save.Mode, true), EndAction); Display(GraphCore.GraphType.Crawl_Right_C_End, EndAction);
return true; return true;
case GraphType.Fall_Left_B_Loop: case GraphType.Fall_Left_B_Loop:
Display(Core.Graph.FindGraph(GraphCore.GraphType.Fall_Left_C_End, Core.Save.Mode, true), EndAction); Display(GraphCore.GraphType.Fall_Left_C_End, EndAction);
return true; return true;
case GraphType.Fall_Right_B_Loop: case GraphType.Fall_Right_B_Loop:
Display(Core.Graph.FindGraph(GraphCore.GraphType.Fall_Right_C_End, Core.Save.Mode, true), EndAction); Display(GraphCore.GraphType.Fall_Right_C_End, EndAction);
return true; return true;
case GraphType.Walk_Left_B_Loop: case GraphType.Walk_Left_B_Loop:
Display(Core.Graph.FindGraph(GraphCore.GraphType.Walk_Left_C_End, Core.Save.Mode, true), EndAction); Display(GraphCore.GraphType.Walk_Left_C_End, EndAction);
return true; return true;
case GraphType.Walk_Right_B_Loop: case GraphType.Walk_Right_B_Loop:
Display(Core.Graph.FindGraph(GraphCore.GraphType.Walk_Right_C_End, Core.Save.Mode, true), EndAction); Display(GraphCore.GraphType.Walk_Right_C_End, EndAction);
return true;
case GraphType.Sleep_B_Loop:
Display(GraphCore.GraphType.Sleep_C_End, EndAction);
return true; return true;
//case GraphType.Climb_Left: //case GraphType.Climb_Left:
//case GraphType.Climb_Right: //case GraphType.Climb_Right:
@ -95,9 +98,9 @@ namespace VPet_Simulator.Core
return; return;
} }
Core.Graph.RndGraph.Clear(); Core.Graph.RndGraph.Clear();
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_A_Start, Core.Save.Mode, true), () => Display(GraphCore.GraphType.Touch_Head_A_Start, () =>
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_B_Loop, Core.Save.Mode, true), () => Display(GraphCore.GraphType.Touch_Head_B_Loop, () =>
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_C_End, Core.Save.Mode, true), DisplayNomal Display(GraphCore.GraphType.Touch_Head_C_End, DisplayNomal
))); )));
} }
@ -109,17 +112,17 @@ namespace VPet_Simulator.Core
looptimes = 0; looptimes = 0;
CountNomal = 0; CountNomal = 0;
Core.Graph.RndGraph.Clear(); Core.Graph.RndGraph.Clear();
Display(Core.Graph.FindGraph(GraphCore.GraphType.Boring_A_Start, Core.Save.Mode, true), DisplayBoringing); Display(GraphCore.GraphType.Boring_A_Start, DisplayBoringing);
} }
/// <summary> /// <summary>
/// 显示无聊情况 /// 显示无聊情况
/// </summary> /// </summary>
private void DisplayBoringing() private void DisplayBoringing()
{ {
if (Function.Rnd.Next(++looptimes) > 10) if (Function.Rnd.Next(++looptimes) > LoopProMax)
Display(Core.Graph.FindGraph(GraphCore.GraphType.Boring_C_End, Core.Save.Mode, true), DisplayNomal); Display(GraphCore.GraphType.Boring_C_End, DisplayNomal);
else else
Display(Core.Graph.FindGraph(GraphCore.GraphType.Boring_B_Loop, Core.Save.Mode, true), DisplayBoringing); Display(GraphCore.GraphType.Boring_B_Loop, DisplayBoringing);
} }
int looptimes; int looptimes;
/// <summary> /// <summary>
@ -130,18 +133,49 @@ namespace VPet_Simulator.Core
looptimes = 0; looptimes = 0;
CountNomal = 0; CountNomal = 0;
Core.Graph.RndGraph.Clear(); Core.Graph.RndGraph.Clear();
Display(Core.Graph.FindGraph(GraphCore.GraphType.Squat_A_Start, Core.Save.Mode, true), DisplaySquating); Display(GraphCore.GraphType.Squat_A_Start, DisplaySquating);
} }
/// <summary> /// <summary>
/// 显示蹲下情况 /// 显示蹲下情况
/// </summary> /// </summary>
public void DisplaySquating() public void DisplaySquating()
{ {
if (Function.Rnd.Next(++looptimes) > 10) if (Function.Rnd.Next(++looptimes) > LoopProMax)
Display(Core.Graph.FindGraph(GraphCore.GraphType.Squat_C_End, Core.Save.Mode, true), DisplayNomal); Display(GraphCore.GraphType.Squat_C_End, DisplayNomal);
else else
Display(Core.Graph.FindGraph(GraphCore.GraphType.Squat_B_Loop, Core.Save.Mode, true), DisplaySquating); Display(GraphCore.GraphType.Squat_B_Loop, DisplaySquating);
} }
/// <summary>
/// 显示睡觉情况
/// </summary>
public void DisplaySleep(bool force = false)
{
looptimes = 0;
CountNomal = 0;
Core.Graph.RndGraph.Clear();
if (force)
Display(GraphCore.GraphType.Sleep_A_Start, DisplaySleepingForce);
else
Display(GraphCore.GraphType.Sleep_A_Start, DisplaySleeping);
}
/// <summary>
/// 显示睡觉情况 (正常)
/// </summary>
public void DisplaySleeping()
{
if (Function.Rnd.Next(++looptimes) > LoopProMax)
Display(GraphCore.GraphType.Sleep_C_End, DisplayNomal);
else
Display(GraphCore.GraphType.Sleep_B_Loop, DisplaySleeping);
}
/// <summary>
/// 显示睡觉情况 (强制)
/// </summary>
public void DisplaySleepingForce()
{//TODO:如果开启了Function,强制睡觉为永久,否则睡到自然醒+LoopMax
Display(GraphCore.GraphType.Sleep_B_Loop, DisplaySleepingForce);
}
/// <summary> /// <summary>
/// 显示拖拽情况 /// 显示拖拽情况
/// </summary> /// </summary>
@ -930,10 +964,14 @@ namespace VPet_Simulator.Core
/// <summary>
public void Display(GraphType Type, Action EndAction = null, bool StoreRnd = false) /// 显示动画
/// </summary>
/// <param name="Type">动画类型</param>
/// <param name="EndAction">动画结束后操作</param>
public void Display(GraphType Type, Action EndAction = null)//, bool StoreRnd = false)
{ {
Display(Core.Graph.FindGraph(Type, Core.Save.Mode, StoreRnd), EndAction); Display(Core.Graph.FindGraph(Type, Core.Save.Mode), EndAction);
} }
bool petgridcrlf = true; bool petgridcrlf = true;
/// <summary> /// <summary>

View File

@ -13,6 +13,7 @@ namespace VPet_Simulator.Core
public const int DistanceMax = 100; public const int DistanceMax = 100;
public const int DistanceMid = 100; public const int DistanceMid = 100;
public const int DistanceMin = 50; public const int DistanceMin = 50;
public const int LoopProMax = 20;
public const int LoopMax = 10; public const int LoopMax = 10;
public const int LoopMid = 7; public const int LoopMid = 7;
public const int LoopMin = 5; public const int LoopMin = 5;
@ -84,7 +85,7 @@ namespace VPet_Simulator.Core
Dispatcher.Invoke(() => TimeUIHandle.Invoke(this)); Dispatcher.Invoke(() => TimeUIHandle.Invoke(this));
if (DisplayType == GraphCore.GraphType.Default && !isPress) if (DisplayType == GraphCore.GraphType.Default && !isPress)
switch (Function.Rnd.Next(Math.Max(20, Core.Controller.InteractionCycle - CountNomal))) switch (17)//Function.Rnd.Next(Math.Max(20, Core.Controller.InteractionCycle - CountNomal)))
{ {
case 0: case 0:
//随机向右 //随机向右
@ -123,6 +124,10 @@ namespace VPet_Simulator.Core
case 11: case 11:
DisplayCrawl_Right(); DisplayCrawl_Right();
break; break;
case 13:
case 14:
DisplaySleep();
break;
case 15: case 15:
case 16: case 16:
DisplayBoring(); DisplayBoring();
@ -130,7 +135,7 @@ namespace VPet_Simulator.Core
case 18: case 18:
case 17: case 17:
DisplaySquat(); DisplaySquat();
break; break;
default: default:
break; break;
} }

View File

@ -109,7 +109,7 @@
<MenuItem x:Name="MenuPanel" Header="面板" MouseEnter="MenuPanel_MouseEnter" MouseLeave="MenuPanel_MouseLeave" <MenuItem x:Name="MenuPanel" Header="面板" MouseEnter="MenuPanel_MouseEnter" MouseLeave="MenuPanel_MouseLeave"
HorizontalContentAlignment="Center" /> HorizontalContentAlignment="Center" />
<MenuItem x:Name="MenuInteract" Header="互动" HorizontalContentAlignment="Center"> <MenuItem x:Name="MenuInteract" Header="互动" HorizontalContentAlignment="Center">
<MenuItem Header="睡觉" HorizontalContentAlignment="Center" /> <MenuItem Header="睡觉" HorizontalContentAlignment="Center" Click="Sleep_Click" />
<MenuItem Header="玩耍" HorizontalContentAlignment="Center" /> <MenuItem Header="玩耍" HorizontalContentAlignment="Center" />
<MenuItem Header="说话" HorizontalContentAlignment="Center" /> <MenuItem Header="说话" HorizontalContentAlignment="Center" />
<MenuItem Header="学习" HorizontalContentAlignment="Center" /> <MenuItem Header="学习" HorizontalContentAlignment="Center" />

View File

@ -247,5 +247,10 @@ namespace VPet_Simulator.Core
closetimer.Dispose(); closetimer.Dispose();
closePanelTimer.Dispose(); closePanelTimer.Dispose();
} }
private void Sleep_Click(object sender, RoutedEventArgs e)
{
m.DisplaySleep(true);
}
} }
} }

View File

@ -265,9 +265,9 @@ namespace VPet_Simulator.Core
/// </summary> /// </summary>
/// <param name="type">动画类型</param> /// <param name="type">动画类型</param>
/// <param name="mode">状态类型,找不到就找相同动画类型</param> /// <param name="mode">状态类型,找不到就找相同动画类型</param>
/// <param name="storernd">是否储存随机数字典</param> ///// <param name="storernd">是否储存随机数字典</param>
/// <returns></returns> /// <returns></returns>
public IGraph FindGraph(GraphType type, Save.ModeType mode, bool storernd = false) public IGraph FindGraph(GraphType type, Save.ModeType mode)//
{ {
if (Graphs.ContainsKey(type)) if (Graphs.ContainsKey(type))
{ {
@ -276,18 +276,18 @@ namespace VPet_Simulator.Core
{ {
if (list.Count == 1) if (list.Count == 1)
return list[0]; return list[0];
if (storernd) //if (storernd)
if (RndGraph.TryGetValue(list.Count, out int index)) // if (RndGraph.TryGetValue(list.Count, out int index))
{ // {
return list[index]; // return list[index];
} // }
else // else
{ // {
index = Function.Rnd.Next(list.Count); // index = Function.Rnd.Next(list.Count);
RndGraph.Add(list.Count, index); // RndGraph.Add(list.Count, index);
return list[index]; // return list[index];
} // }
else //else
return list[Function.Rnd.Next(list.Count)]; return list[Function.Rnd.Next(list.Count)];
} }
else else

View File

@ -85,10 +85,7 @@ namespace VPet_Simulator.Core
Visibility = Visibility.Hidden Visibility = Visibility.Hidden
}; };
MainGrid.Children.Add(img); MainGrid.Children.Add(img);
Animations.Add(new Animation(this, time, () => Animations.Add(new Animation(this, time, () => img.Visibility = Visibility.Visible, () => img.Visibility = Visibility.Hidden));
{
img.Visibility = Visibility.Visible;
}, () => img.Visibility = Visibility.Hidden));
} }
//else //else
//{ //{
@ -196,7 +193,7 @@ namespace VPet_Simulator.Core
EndAction?.Invoke();//运行结束动画时事件 EndAction?.Invoke();//运行结束动画时事件
parent.StopAction?.Invoke(); parent.StopAction?.Invoke();
parent.StopAction = null; parent.StopAction = null;
//重新加载第一帧 //延时隐藏
Task.Run(() => Task.Run(() =>
{ {
Thread.Sleep(25); Thread.Sleep(25);
@ -213,16 +210,16 @@ namespace VPet_Simulator.Core
else else
{ {
parent.IsContinue = false; parent.IsContinue = false;
parent.Dispatcher.Invoke(Hidden); //parent.Dispatcher.Invoke(Hidden);
if (parent.DoEndAction) if (parent.DoEndAction)
EndAction?.Invoke();//运行结束动画时事件 EndAction?.Invoke();//运行结束动画时事件
parent.StopAction?.Invoke(); parent.StopAction?.Invoke();
parent.StopAction = null; parent.StopAction = null;
//Task.Run(() => Task.Run(() =>
//{ {
// Thread.Sleep(25); Thread.Sleep(25);
// parent.Dispatcher.Invoke(Hidden); parent.Dispatcher.Invoke(Hidden);
//}); });
} }
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB