218 lines
5.3 KiB
C#
218 lines
5.3 KiB
C#
using OpenTK.Input;
|
|
using StgSharp.Control;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace StgSharp.Entities
|
|
{
|
|
public class Player
|
|
{
|
|
private uint gameTick;
|
|
private uint beginTick;
|
|
|
|
private readonly float _velocityHigh;
|
|
private readonly float _vHighCorner;
|
|
|
|
private float topBoarder;
|
|
private float bottomBoarder;
|
|
private float leftBoarder;
|
|
private float rightBoarder;
|
|
|
|
public float VelocityHigh
|
|
{
|
|
get { return _velocityHigh; }
|
|
}
|
|
|
|
private readonly float _velocityLow;
|
|
private readonly float _vLowCorner;
|
|
|
|
public float VelocityLow
|
|
{
|
|
get { return _velocityLow; }
|
|
}
|
|
|
|
private float _x;
|
|
|
|
public float X
|
|
{
|
|
get { return _x; }
|
|
set { _x = value; }
|
|
}
|
|
|
|
public float _y;
|
|
|
|
public float Y
|
|
{
|
|
get { return _y; }
|
|
set { _y = value; }
|
|
}
|
|
|
|
private KeyboardState _keyboardState;
|
|
|
|
public KeyboardState KeyboardState
|
|
{
|
|
get { return _keyboardState; }
|
|
set { _keyboardState = value; }
|
|
}
|
|
|
|
|
|
public Player(float velocityHigh, float velocityLow, KeyboardState keyboardState)
|
|
{
|
|
this._velocityHigh = velocityHigh;
|
|
this._vHighCorner = velocityHigh / 1.4142136f;
|
|
this._velocityLow = velocityLow;
|
|
this._vLowCorner = velocityLow / 1.4142136f;
|
|
this._keyboardState = keyboardState;
|
|
}
|
|
|
|
private Launcher _launcherAtHigh;
|
|
public Launcher LauncherAtHigh
|
|
{
|
|
get { return LauncherAtHigh; }
|
|
set { LauncherAtHigh = value; }
|
|
}
|
|
|
|
private Launcher _launcherAtLow;
|
|
|
|
public void OnRender()
|
|
{
|
|
//进行各种碰撞判定
|
|
//先进行中弹判定
|
|
|
|
|
|
|
|
//进行移动和射击
|
|
|
|
if (_keyboardState.IsKeyDown(Key.ShiftLeft)||
|
|
_keyboardState.IsKeyDown(Key.ShiftRight))
|
|
{
|
|
FastShoot();
|
|
FastMove();
|
|
}
|
|
else
|
|
{
|
|
SlowMove();
|
|
SlowSoot();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 自机高速移动的简单方法
|
|
/// </summary>
|
|
public void SlowMove()
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Up))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Left))
|
|
{
|
|
this._y += _vLowCorner;
|
|
this._x -= _vLowCorner;
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Right))
|
|
{
|
|
this._y += _vLowCorner;
|
|
this._x += _vLowCorner;
|
|
}
|
|
else
|
|
{
|
|
this._y += _velocityLow;
|
|
}
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Down))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Left))
|
|
{
|
|
this._y -= _vLowCorner;
|
|
this._x -= _vLowCorner;
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Right))
|
|
{
|
|
this._y -= _vLowCorner;
|
|
this._x += _vLowCorner;
|
|
}
|
|
else
|
|
{
|
|
this._y -= _velocityLow;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 自机低速移动的简单方法
|
|
/// </summary>
|
|
public void FastMove()
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Up))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Left))
|
|
{
|
|
this._y += _vHighCorner;
|
|
this._x -= _vHighCorner;
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Right))
|
|
{
|
|
this._y += _vHighCorner;
|
|
this._x += _vHighCorner;
|
|
}
|
|
else
|
|
{
|
|
this._y += _velocityHigh;
|
|
}
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Down))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Left))
|
|
{
|
|
this._y -= _vHighCorner;
|
|
this._x -= _vHighCorner;
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Right))
|
|
{
|
|
this._y -= _vHighCorner;
|
|
this._x += _vHighCorner;
|
|
}
|
|
else
|
|
{
|
|
this._y -= _velocityHigh;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
public void UseSkill()
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.X))
|
|
{
|
|
//new event added to use spell
|
|
}
|
|
}
|
|
|
|
public void FastShoot()
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Z))
|
|
{
|
|
|
|
}
|
|
}
|
|
public void SlowSoot()
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Z))
|
|
{
|
|
_launcherAtLow.Launch();
|
|
}
|
|
}
|
|
|
|
public void Die()
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|