182 lines
4.2 KiB
C#
182 lines
4.2 KiB
C#
using OpenTK;
|
|
using OpenTK.Input;
|
|
using StgSharp_Entity;
|
|
using StgSharp_Logic;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace StgSharp_Entity
|
|
{
|
|
internal class Player:LinkedTarget
|
|
{
|
|
private uint gameTick;
|
|
private uint beginTick;
|
|
|
|
private readonly float _velocityHigh;
|
|
private readonly float _vHighCorner;
|
|
|
|
public float VelocityHigh
|
|
{
|
|
get { return _velocityHigh; }
|
|
}
|
|
|
|
private readonly float _velocityLow;
|
|
private readonly float _vLowCorner;
|
|
|
|
public float VelocityLow
|
|
{
|
|
get { return _velocityLow; }
|
|
}
|
|
|
|
private float _xLocation;
|
|
|
|
public float XLocation
|
|
{
|
|
get { return _xLocation; }
|
|
set { _xLocation = value; }
|
|
}
|
|
|
|
public float _yLocation;
|
|
public float YLocation
|
|
{
|
|
get { return _yLocation; }
|
|
set { _yLocation = 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;
|
|
}
|
|
|
|
|
|
|
|
public void Action()
|
|
{
|
|
if (_keyboardState.IsAnyKeyDown)
|
|
{
|
|
Move();
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 自机移动的简单方法
|
|
/// </summary>
|
|
public void Move()
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.ShiftLeft))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Up))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Left))
|
|
{
|
|
this._yLocation += _vLowCorner;
|
|
this._xLocation -= _vLowCorner;
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Right))
|
|
{
|
|
this._yLocation += _vLowCorner;
|
|
this._xLocation += _vLowCorner;
|
|
}
|
|
else
|
|
{
|
|
this._yLocation += _velocityLow;
|
|
}
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Down))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Left))
|
|
{
|
|
this._yLocation -= _vLowCorner;
|
|
this._xLocation -= _vLowCorner;
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Right))
|
|
{
|
|
this._yLocation -= _vLowCorner;
|
|
this._xLocation += _vLowCorner;
|
|
}
|
|
else
|
|
{
|
|
this._yLocation -= _velocityLow;
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Up))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Left))
|
|
{
|
|
this._yLocation += _vHighCorner;
|
|
this._xLocation -= _vHighCorner;
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Right))
|
|
{
|
|
this._yLocation += _vHighCorner;
|
|
this._xLocation += _vHighCorner;
|
|
}
|
|
else
|
|
{
|
|
this._yLocation += _velocityHigh;
|
|
}
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Down))
|
|
{
|
|
if (_keyboardState.IsKeyDown(Key.Left))
|
|
{
|
|
this._yLocation -= _vHighCorner;
|
|
this._xLocation -= _vHighCorner;
|
|
}
|
|
else if (_keyboardState.IsKeyDown(Key.Right))
|
|
{
|
|
this._yLocation -= _vHighCorner;
|
|
this._xLocation += _vHighCorner;
|
|
}
|
|
else
|
|
{
|
|
this._yLocation -= _velocityHigh;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public void UseSkill(KeyboardState key)
|
|
{
|
|
if (key.IsKeyDown(Key.X))
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
public void LaunchBullet(KeyboardState key)
|
|
{
|
|
|
|
}
|
|
|
|
public void Die()
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|