Files
stgsharp/源代码/.Net Framework/Stg_Sharp/Stg_Sharp/Entities/Player.cs
T

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()
{
}
}
}