mirror of
https://github.com/LorisYounger/VPet.git
synced 2024-08-30 18:42:36 +00:00
支持攀爬屏幕侧面和顶部
This commit is contained in:
parent
dfb75c1c7e
commit
3873aae9b9
@ -31,7 +31,7 @@ namespace VPet_Simulator.Core
|
|||||||
Bar = new ToolBar(this);
|
Bar = new ToolBar(this);
|
||||||
UIGrid.Children.Add(Bar);
|
UIGrid.Children.Add(Bar);
|
||||||
Bar.Visibility = Visibility.Collapsed;
|
Bar.Visibility = Visibility.Collapsed;
|
||||||
|
//TODO:锚定设置
|
||||||
Core.TouchEvent.Add(new TouchArea(new Point(138, 12), new Size(224, 176), DisplayTouchHead));
|
Core.TouchEvent.Add(new TouchArea(new Point(138, 12), new Size(224, 176), DisplayTouchHead));
|
||||||
Core.TouchEvent.Add(new TouchArea(new Point(0, 0), new Size(500, 180), DisplayRaised, true));
|
Core.TouchEvent.Add(new TouchArea(new Point(0, 0), new Size(500, 180), DisplayRaised, true));
|
||||||
var ig = Core.Graph.FindGraph(GraphCore.GraphType.Default, Core.Save.Mode);
|
var ig = Core.Graph.FindGraph(GraphCore.GraphType.Default, Core.Save.Mode);
|
||||||
@ -39,11 +39,23 @@ namespace VPet_Simulator.Core
|
|||||||
ig.Run();
|
ig.Run();
|
||||||
|
|
||||||
EventTimer.Elapsed += EventTimer_Elapsed;
|
EventTimer.Elapsed += EventTimer_Elapsed;
|
||||||
|
MoveTimer.Elapsed += MoveTimer_Elapsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void MoveTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
Core.Controller.MoveWindows(MoveTimerPoint.X, MoveTimerPoint.Y);
|
||||||
|
}
|
||||||
|
|
||||||
bool isPress = false;
|
bool isPress = false;
|
||||||
private void MainGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
private void MainGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||||
{
|
{
|
||||||
isPress = true;
|
isPress = true;
|
||||||
|
if (!IsNomal)
|
||||||
|
{//不是nomal! 可能会卡timer,所有全部timer清空下
|
||||||
|
MoveTimer.Stop();
|
||||||
|
MainGrid.MouseMove -= MainGrid_MouseMove;
|
||||||
|
}
|
||||||
Task.Run(() =>
|
Task.Run(() =>
|
||||||
{
|
{
|
||||||
Thread.Sleep(Core.Setting.PressLength);
|
Thread.Sleep(Core.Setting.PressLength);
|
||||||
@ -69,7 +81,7 @@ namespace VPet_Simulator.Core
|
|||||||
private void MainGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
private void MainGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||||
{
|
{
|
||||||
isPress = false;
|
isPress = false;
|
||||||
if(rasetype != -1)
|
if (rasetype != -1)
|
||||||
{
|
{
|
||||||
MainGrid.MouseMove -= MainGrid_MouseMove;
|
MainGrid.MouseMove -= MainGrid_MouseMove;
|
||||||
rasetype = -1;
|
rasetype = -1;
|
||||||
@ -79,7 +91,7 @@ namespace VPet_Simulator.Core
|
|||||||
private void MainGrid_MouseMove(object sender, MouseEventArgs e)
|
private void MainGrid_MouseMove(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
var mp = e.GetPosition(MainGrid);
|
var mp = e.GetPosition(MainGrid);
|
||||||
var x = mp.X - 290;
|
var x = mp.X - 290;//TODO:锚定设置
|
||||||
var y = mp.Y - 128;
|
var y = mp.Y - 128;
|
||||||
Core.Controller.MoveWindows(x, y);
|
Core.Controller.MoveWindows(x, y);
|
||||||
if (Math.Abs(x) + Math.Abs(y) > 10)
|
if (Math.Abs(x) + Math.Abs(y) > 10)
|
||||||
|
@ -5,6 +5,7 @@ using System.Security.AccessControl;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Threading;
|
using System.Windows.Threading;
|
||||||
|
|
||||||
@ -26,16 +27,21 @@ namespace VPet_Simulator.Core
|
|||||||
public void DisplayTouchHead()
|
public void DisplayTouchHead()
|
||||||
{
|
{
|
||||||
IsNomal = false;
|
IsNomal = false;
|
||||||
if (((IGraph)PetGrid.Child).GraphType == GraphCore.GraphType.Touch_Head_B_Loop)
|
if (petgridcrlf)
|
||||||
|
if (PetGrid.Child is IGraph ig && ig.GraphType == GraphCore.GraphType.Touch_Head_B_Loop)
|
||||||
|
{
|
||||||
|
((IGraph)PetGrid.Child).IsContinue = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (PetGrid2.Child is IGraph ig2 && ig2.GraphType == GraphCore.GraphType.Touch_Head_B_Loop)
|
||||||
{
|
{
|
||||||
((IGraph)PetGrid.Child).IsContinue = true;
|
((IGraph)PetGrid.Child).IsContinue = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_A_Start, Core.Save.Mode), () =>
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_A_Start, Core.Save.Mode), () =>
|
||||||
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_B_Loop, Core.Save.Mode), () =>
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_B_Loop, Core.Save.Mode), () =>
|
||||||
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_C_End, Core.Save.Mode), () =>
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Touch_Head_C_End, Core.Save.Mode), DisplayNomal
|
||||||
Display(Core.Graph.FindGraph(GraphCore.GraphType.Default, Core.Save.Mode)
|
)));
|
||||||
))));
|
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 显示拖拽情况
|
/// 显示拖拽情况
|
||||||
@ -59,6 +65,7 @@ namespace VPet_Simulator.Core
|
|||||||
//))));
|
//))));
|
||||||
}
|
}
|
||||||
int rasetype = -1;
|
int rasetype = -1;
|
||||||
|
int walklength = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 显示拖拽中
|
/// 显示拖拽中
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -91,6 +98,288 @@ namespace VPet_Simulator.Core
|
|||||||
{//TODO:爬起
|
{//TODO:爬起
|
||||||
Display(Core.Graph.FindGraph(GraphCore.GraphType.Fall_B_End, Core.Save.Mode), DisplayNomal);
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Fall_B_End, Core.Save.Mode), DisplayNomal);
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示向左走 (有判断)
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayWalk_Left()
|
||||||
|
{
|
||||||
|
//看看距离是否满足调节
|
||||||
|
if (Core.Controller.GetWindowsDistanceLeft() > 400 * Core.Controller.ZoomRatio)
|
||||||
|
{
|
||||||
|
walklength = 0;
|
||||||
|
IsNomal = false;
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Walk_Left_A_Start, Core.Save.Mode), () =>
|
||||||
|
{
|
||||||
|
MoveTimerPoint = new Point(-20, 0);//TODO:锚定设置
|
||||||
|
MoveTimer.Start();
|
||||||
|
DisplayWalk_Lefting();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示向左走
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayWalk_Lefting()
|
||||||
|
{
|
||||||
|
//看看距离是不是不足
|
||||||
|
if (Core.Controller.GetWindowsDistanceLeft() < 50 * Core.Controller.ZoomRatio)
|
||||||
|
{//是,停下恢复默认 or/爬墙
|
||||||
|
switch (Function.Rnd.Next(3))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
DisplayClimb_Left_UP();
|
||||||
|
return;
|
||||||
|
case 1:
|
||||||
|
DisplayClimb_Left_DOWN();
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
MoveTimer.Stop();
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Walk_Left_C_End, Core.Save.Mode), DisplayNomal);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//不是:继续右边走or停下
|
||||||
|
if (Function.Rnd.Next(walklength++) < 5)
|
||||||
|
{
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Walk_Left_B_Loop, Core.Save.Mode), DisplayWalk_Lefting);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//停下来
|
||||||
|
MoveTimer.Stop();
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Walk_Left_C_End, Core.Save.Mode), DisplayNomal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示左墙壁爬行 上
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Left_UP()
|
||||||
|
{
|
||||||
|
//看看距离是否满足调节
|
||||||
|
if (Core.Controller.GetWindowsDistanceLeft() < 100 * Core.Controller.ZoomRatio && Core.Controller.GetWindowsDistanceUp() > 400 * Core.Controller.ZoomRatio)
|
||||||
|
{
|
||||||
|
walklength = 0;
|
||||||
|
IsNomal = false;
|
||||||
|
|
||||||
|
Core.Controller.MoveWindows(-Core.Controller.GetWindowsDistanceLeft() / Core.Controller.ZoomRatio - 145, 0);//TODO:锚定设置
|
||||||
|
MoveTimerPoint = new Point(0, -10);//TODO:锚定设置
|
||||||
|
MoveTimer.Start();
|
||||||
|
DisplayClimb_Lefting_UP();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示左墙壁爬行 上
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Lefting_UP()
|
||||||
|
{
|
||||||
|
//看看距离是不是不足
|
||||||
|
if (Core.Controller.GetWindowsDistanceUp() < 100 * Core.Controller.ZoomRatio)
|
||||||
|
{//是,停下恢复默认 or/爬上面的墙
|
||||||
|
switch (Function.Rnd.Next(3))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
DisplayClimb_Top_Right();
|
||||||
|
return;
|
||||||
|
//case 1://TODO:落下
|
||||||
|
// return;
|
||||||
|
default:
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//不是:继续or停下
|
||||||
|
if (Function.Rnd.Next(walklength++) < 5)
|
||||||
|
{
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Climb_Left, Core.Save.Mode), DisplayClimb_Lefting_UP);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//停下来
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示左墙壁爬行 下
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Left_DOWN()
|
||||||
|
{
|
||||||
|
//看看距离是否满足调节
|
||||||
|
if (Core.Controller.GetWindowsDistanceLeft() < 50 * Core.Controller.ZoomRatio && Core.Controller.GetWindowsDistanceDown() > 400 * Core.Controller.ZoomRatio)
|
||||||
|
{
|
||||||
|
walklength = 0;
|
||||||
|
IsNomal = false;
|
||||||
|
|
||||||
|
Core.Controller.MoveWindows(-Core.Controller.GetWindowsDistanceLeft() / Core.Controller.ZoomRatio - 145, 0);//TODO:锚定设置
|
||||||
|
MoveTimerPoint = new Point(0, 10);//TODO:锚定设置
|
||||||
|
MoveTimer.Start();
|
||||||
|
DisplayClimb_Lefting_DOWN();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示左墙壁爬行 下
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Lefting_DOWN()
|
||||||
|
{
|
||||||
|
//看看距离是不是不足
|
||||||
|
if (Core.Controller.GetWindowsDistanceDown() < 50 * Core.Controller.ZoomRatio)
|
||||||
|
{//是,停下恢复默认
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
}
|
||||||
|
//不是:继续or停下
|
||||||
|
if (Function.Rnd.Next(walklength++) < 5)
|
||||||
|
{
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Climb_Left, Core.Save.Mode), DisplayClimb_Lefting_DOWN);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//停下来
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示右墙壁爬行 上
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Right_UP()
|
||||||
|
{
|
||||||
|
//看看距离是否满足调节
|
||||||
|
if (Core.Controller.GetWindowsDistanceRight() < 100 * Core.Controller.ZoomRatio && Core.Controller.GetWindowsDistanceUp() > 400 * Core.Controller.ZoomRatio)
|
||||||
|
{
|
||||||
|
walklength = 0;
|
||||||
|
IsNomal = false;
|
||||||
|
|
||||||
|
Core.Controller.MoveWindows(Core.Controller.GetWindowsDistanceRight() / Core.Controller.ZoomRatio + 185, 0);//TODO:锚定设置
|
||||||
|
MoveTimerPoint = new Point(0, -10);//TODO:锚定设置
|
||||||
|
MoveTimer.Start();
|
||||||
|
DisplayClimb_Righting_UP();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示右墙壁爬行 上
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Righting_UP()
|
||||||
|
{
|
||||||
|
//看看距离是不是不足
|
||||||
|
if (Core.Controller.GetWindowsDistanceUp() < 100 * Core.Controller.ZoomRatio)
|
||||||
|
{//是,停下恢复默认 or/爬上面的墙
|
||||||
|
switch (3)//Function.Rnd.Next(3))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return;
|
||||||
|
case 1:
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//不是:继续or停下
|
||||||
|
if (Function.Rnd.Next(walklength++) < 5)
|
||||||
|
{
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Climb_Right, Core.Save.Mode), DisplayClimb_Righting_UP);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//停下来
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示右墙壁爬行 下
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Right_DOWN()
|
||||||
|
{
|
||||||
|
//看看距离是否满足调节
|
||||||
|
if (Core.Controller.GetWindowsDistanceRight() < 100 * Core.Controller.ZoomRatio && Core.Controller.GetWindowsDistanceDown() > 400 * Core.Controller.ZoomRatio)
|
||||||
|
{
|
||||||
|
walklength = 0;
|
||||||
|
IsNomal = false;
|
||||||
|
|
||||||
|
Core.Controller.MoveWindows(Core.Controller.GetWindowsDistanceRight() / Core.Controller.ZoomRatio + 185, 0);//TODO:锚定设置
|
||||||
|
MoveTimerPoint = new Point(0, 10);//TODO:锚定设置
|
||||||
|
MoveTimer.Start();
|
||||||
|
DisplayClimb_Righting_DOWN();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示右墙壁爬行 下
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Righting_DOWN()
|
||||||
|
{
|
||||||
|
//看看距离是不是不足
|
||||||
|
if (Core.Controller.GetWindowsDistanceDown() < 50 * Core.Controller.ZoomRatio)
|
||||||
|
{//是,停下恢复默认
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
}
|
||||||
|
//不是:继续or停下
|
||||||
|
if (Function.Rnd.Next(walklength++) < 5)
|
||||||
|
{
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Climb_Right, Core.Save.Mode), DisplayClimb_Righting_DOWN);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//停下来
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示顶部墙壁爬行向右
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Top_Right()
|
||||||
|
{
|
||||||
|
//看看距离是否满足调节
|
||||||
|
if (Core.Controller.GetWindowsDistanceUp() < 50 * Core.Controller.ZoomRatio && Core.Controller.GetWindowsDistanceRight() > 400 * Core.Controller.ZoomRatio)
|
||||||
|
{
|
||||||
|
walklength = 0;
|
||||||
|
IsNomal = false;
|
||||||
|
|
||||||
|
Core.Controller.MoveWindows(0, -Core.Controller.GetWindowsDistanceUp() / Core.Controller.ZoomRatio - 150);//TODO:锚定设置
|
||||||
|
MoveTimerPoint = new Point(8, 0);//TODO:锚定设置
|
||||||
|
MoveTimer.Start();
|
||||||
|
DisplayClimb_Top_Righting();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 显示左墙壁爬行 上
|
||||||
|
/// </summary>
|
||||||
|
public void DisplayClimb_Top_Righting()
|
||||||
|
{
|
||||||
|
//看看距离是不是不足
|
||||||
|
if (Core.Controller.GetWindowsDistanceRight() < 50 * Core.Controller.ZoomRatio)
|
||||||
|
{//是,停下恢复默认 or向下爬
|
||||||
|
switch (3)//Function.Rnd.Next(3))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return;
|
||||||
|
case 1:
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
Core.Controller.MoveWindows(0, -Core.Controller.GetWindowsDistanceUp() / Core.Controller.ZoomRatio);
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//不是:继续or停下
|
||||||
|
if (Function.Rnd.Next(walklength++) < 10)
|
||||||
|
{
|
||||||
|
Display(Core.Graph.FindGraph(GraphCore.GraphType.Climb_Top_Right, Core.Save.Mode), DisplayClimb_Top_Righting);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//停下来
|
||||||
|
Core.Controller.MoveWindows(0, -Core.Controller.GetWindowsDistanceUp() / Core.Controller.ZoomRatio);
|
||||||
|
MoveTimer.Stop();
|
||||||
|
DisplayNomal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -112,9 +401,9 @@ namespace VPet_Simulator.Core
|
|||||||
((IGraph)(PetGrid2.Child)).Run(EndAction);
|
((IGraph)(PetGrid2.Child)).Run(EndAction);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
graph.Run(EndAction);
|
graph.Run(EndAction);
|
||||||
|
|
||||||
|
|
||||||
if (petgridcrlf)
|
if (petgridcrlf)
|
||||||
{
|
{
|
||||||
((IGraph)(PetGrid.Child)).Stop(true);
|
((IGraph)(PetGrid.Child)).Stop(true);
|
||||||
|
@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
namespace VPet_Simulator.Core
|
namespace VPet_Simulator.Core
|
||||||
{
|
{
|
||||||
@ -19,12 +20,47 @@ namespace VPet_Simulator.Core
|
|||||||
AutoReset = true,
|
AutoReset = true,
|
||||||
Enabled = true
|
Enabled = true
|
||||||
};
|
};
|
||||||
|
|
||||||
private void EventTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
private void EventTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
if (IsNomal)
|
//TODO:饮食等乱七八糟的消耗
|
||||||
{
|
|
||||||
|
|
||||||
|
if (IsNomal)
|
||||||
|
switch (3)//Function.Rnd.Next(10))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
//随机向右
|
||||||
|
DisplayWalk_Left();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
DisplayClimb_Left_UP();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
DisplayClimb_Left_DOWN();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
DisplayClimb_Right_UP();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
DisplayClimb_Right_DOWN();
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
DisplayClimb_Top_Right();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 定点移动位置向量
|
||||||
|
/// </summary>
|
||||||
|
private Point MoveTimerPoint = new Point(0, 0);
|
||||||
|
/// <summary>
|
||||||
|
/// 定点移动定时器
|
||||||
|
/// </summary>
|
||||||
|
private Timer MoveTimer = new Timer(125)
|
||||||
|
{
|
||||||
|
AutoReset = true,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,26 +118,26 @@ namespace VPet_Simulator.Core
|
|||||||
new dynamic[]{ "raised_dynamic" ,false,true},
|
new dynamic[]{ "raised_dynamic" ,false,true},
|
||||||
new dynamic[]{ "raised_static_a", false,true},
|
new dynamic[]{ "raised_static_a", false,true},
|
||||||
new dynamic[]{ "raised_static_b", false,true},
|
new dynamic[]{ "raised_static_b", false,true},
|
||||||
new dynamic[]{ "climb_top_right", true,false},
|
new dynamic[]{ "climb_top_right", false,false},
|
||||||
new dynamic[]{ "climb_top_left", true,false},
|
new dynamic[]{ "climb_top_left", false, false},
|
||||||
new dynamic[]{ "climb_right", true,false},
|
new dynamic[]{ "climb_right", false, false},
|
||||||
new dynamic[]{ "climb_left", true,false},
|
new dynamic[]{ "climb_left", false, false},
|
||||||
new dynamic[]{ "default", true,true},
|
new dynamic[]{ "default", true,true},
|
||||||
new dynamic[]{ "touch_head_a", false,true},
|
new dynamic[]{ "touch_head_a", false,true},
|
||||||
new dynamic[]{ "touch_head_b", false,true},
|
new dynamic[]{ "touch_head_b", false,true},
|
||||||
new dynamic[]{ "touch_head_c", false,true},
|
new dynamic[]{ "touch_head_c", false,true},
|
||||||
new dynamic[]{ "crawl_right", true,true},
|
new dynamic[]{ "crawl_right", false, true},
|
||||||
new dynamic[]{ "crawl_left", true,true},
|
new dynamic[]{ "crawl_left", false, true},
|
||||||
new dynamic[]{ "squat_a", false,true},
|
new dynamic[]{ "squat_a", false,true},
|
||||||
new dynamic[]{ "squat_b", false, true},
|
new dynamic[]{ "squat_b", false, true},
|
||||||
new dynamic[]{ "squat_c", false,true},
|
new dynamic[]{ "squat_c", false,true},
|
||||||
new dynamic[]{ "fall_a", true,false},
|
new dynamic[]{ "fall_a", false, false},
|
||||||
new dynamic[]{ "fall_b", false,true},
|
new dynamic[]{ "fall_b", false,true},
|
||||||
new dynamic[]{ "walk_right_a", false,true},
|
new dynamic[]{ "walk_right_a", false,true},
|
||||||
new dynamic[]{ "walk_right_b", true,true},
|
new dynamic[]{ "walk_right_b", false, true},
|
||||||
new dynamic[]{ "walk_right_c", false,true},
|
new dynamic[]{ "walk_right_c", false,true},
|
||||||
new dynamic[]{ "walk_left_a", false,true},
|
new dynamic[]{ "walk_left_a", false,true},
|
||||||
new dynamic[]{ "walk_left_b", true,true},
|
new dynamic[]{ "walk_left_b", false, true},
|
||||||
new dynamic[]{ "walk_left_c", false,true},
|
new dynamic[]{ "walk_left_c", false,true},
|
||||||
};
|
};
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -8,41 +8,45 @@ using System.Threading.Tasks;
|
|||||||
namespace VPet_Simulator.Core
|
namespace VPet_Simulator.Core
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 桌宠控制器
|
/// 桌宠控制器 需自行实现
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class IController
|
public interface IController
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 移动桌宠位置
|
/// 移动桌宠位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="X">X轴</param>
|
/// <param name="X">X轴</param>
|
||||||
/// <param name="Y">Y轴</param>
|
/// <param name="Y">Y轴</param>
|
||||||
public abstract void MoveWindows(double X, double Y);
|
void MoveWindows(double X, double Y);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取桌宠距离左侧的位置
|
/// 获取桌宠距离左侧的位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract double GetWindowsDistanceLeft();
|
double GetWindowsDistanceLeft();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取桌宠距离右侧的位置
|
/// 获取桌宠距离右侧的位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract double GetWindowsDistanceRight();
|
double GetWindowsDistanceRight();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取桌宠距离上方的位置
|
/// 获取桌宠距离上方的位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract double GetWindowsDistanceUp();
|
double GetWindowsDistanceUp();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取桌宠距离下方的位置
|
/// 获取桌宠距离下方的位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract double GetWindowsDistanceDown();
|
double GetWindowsDistanceDown();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 窗体宽度
|
/// 窗体宽度
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract double WindowsWidth { get; set; }
|
double WindowsWidth { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 窗体高度
|
/// 窗体高度
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract double WindowsHight { get; set; }
|
double WindowsHight { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 缩放比例
|
||||||
|
/// </summary>
|
||||||
|
double ZoomRatio { get; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,41 +7,48 @@ using VPet_Simulator.Core;
|
|||||||
|
|
||||||
namespace VPet_Simulator.Windows
|
namespace VPet_Simulator.Windows
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 窗体控制器实现
|
||||||
|
/// </summary>
|
||||||
public class MWController : IController
|
public class MWController : IController
|
||||||
{
|
{
|
||||||
MainWindow mw;
|
readonly MainWindow mw;
|
||||||
public MWController(MainWindow mw)
|
public MWController(MainWindow mw)
|
||||||
{
|
{
|
||||||
this.mw = mw;
|
this.mw = mw;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override double WindowsWidth { get => mw.Width; set => mw.Width = value; }
|
public double WindowsWidth { get => mw.Dispatcher.Invoke(() => mw.Width); set => mw.Dispatcher.Invoke(() => mw.Width = value); }
|
||||||
public override double WindowsHight { get => mw.Height; set => mw.Height = value; }
|
public double WindowsHight { get => mw.Dispatcher.Invoke(() => mw.Height); set => mw.Dispatcher.Invoke(() => mw.Height = value); }
|
||||||
|
|
||||||
public override double GetWindowsDistanceDown()
|
public double GetWindowsDistanceDown()
|
||||||
{
|
{
|
||||||
return System.Windows.SystemParameters.PrimaryScreenHeight - mw.Top - mw.Height;
|
return mw.Dispatcher.Invoke(() => System.Windows.SystemParameters.PrimaryScreenHeight - mw.Top - mw.Height);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override double GetWindowsDistanceLeft()
|
public double GetWindowsDistanceLeft()
|
||||||
{
|
{
|
||||||
return mw.Left;
|
return mw.Dispatcher.Invoke(() => mw.Left);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override double GetWindowsDistanceRight()
|
public double GetWindowsDistanceRight()
|
||||||
{
|
{
|
||||||
return System.Windows.SystemParameters.PrimaryScreenWidth - mw.Left - mw.Width;
|
return mw.Dispatcher.Invoke(() => System.Windows.SystemParameters.PrimaryScreenWidth - mw.Left - mw.Width);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override double GetWindowsDistanceUp()
|
public double GetWindowsDistanceUp()
|
||||||
{
|
{
|
||||||
return mw.Top;
|
return mw.Dispatcher.Invoke(() => mw.Top);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void MoveWindows(double X, double Y)
|
public void MoveWindows(double X, double Y)
|
||||||
{
|
{
|
||||||
mw.Left += X * .5;
|
mw.Dispatcher.Invoke(() =>
|
||||||
mw.Top += Y * .5;
|
{
|
||||||
|
mw.Left += X * ZoomRatio;
|
||||||
|
mw.Top += Y * ZoomRatio;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
public double ZoomRatio => 0.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user