📄 gameobject.cs
字号:
using System;
using System.Collections;
using System.Drawing;
using System.Collections.Specialized;
using Microsoft.DirectX.DirectDraw;
using Microsoft.DirectX.DirectInput;
using Microsoft.DirectX.DirectSound;
namespace DDGameHelper
{
/// <summary>
/// GameObject 的摘要说明。
/// </summary>
public abstract class GameObject
{
#region 受保护的成员
// /// <summary>
// /// 同类型的GameObj的名称(须外部赋值)
// /// </summary>
// protected static string _name = string.Empty;
// /// <summary>
// /// 同类型的GameObj计数器(主要作用于资源管理。当 counter > 0 时,即便调用 dispose 也不释放 resource)
// /// </summary>
// protected static int _counter = 0;
/// <summary>
/// 资源 Collection
/// </summary>
protected static ArrayList _bmpRectComboCollection = new ArrayList();
// /// <summary>
// /// 指向 BmpRectCombo Collection 的 索引
// /// </summary>
// protected int _indexOfBmpRectComboCollection = 0;
/// <summary>
/// 指向当前游戏循环
/// </summary>
protected GameLoopHandler _glh = null;
// /// <summary>
// /// 该 GameObject 会使用到的资源的索引(在 LoadResource 中初始化)
// /// </summary>
// protected int _resourceIndex = 0;
/// <summary>
/// 是否显示,是否存活(否则会被dispose掉)
/// </summary>
protected bool _visible = true, _isalive = true;
/// <summary>
/// 横纵坐标
/// </summary>
protected double _x = 0.0,_y = 0.0 , _lastX = 0.0, _lastY = 0.0;
/// <summary>
/// 横纵移动速度
/// </summary>
protected double _velX = 1.0, _velY = 1.0;
/// <summary>
/// 指针。指向当前frame, 起始及终止 frame
/// </summary>
protected int _currF = 0, _lastF = 0, _firstF = 0;
/// <summary>
/// 每一帧的播放速度,以及当前播放时间误差累积
/// </summary>
protected double _velF = 1.0, _currT = 0.0;
#endregion
#region 公共成员
// /// <summary>
// /// 该 GameObject 会使用到的资源
// /// </summary>
// public int ResourceIndex{get{return _resourceIndex;}set{_resourceIndex=value;}}
// /// <summary>
// /// 同类型的GameObj的名称(须外部赋值)
// /// </summary>
// public static string Name{get{return _name;}set{_name=value;}}
/// <summary>
/// 资源 Collection
/// </summary>
public static ArrayList BmpRectComboCollection{get{return _bmpRectComboCollection;}set{_bmpRectComboCollection=value;}}
// /// <summary>
// /// 指向 BmpRectCombo Collection 的 索引
// /// </summary>
// public int IndexOfBmpRectComboCollection{get{return _indexOfBmpRectComboCollection;}set{_indexOfBmpRectComboCollection=value;}}
// /// <summary>
// /// 同类型的GameObj计数器(主要作用于资源管理。当 counter > 0 时,即便调用 dispose 也不释放 resource)
// /// </summary>
// public static int Counter{get{return _counter;}set{_counter=value;}}
/// <summary>
/// 是否显示
/// </summary>
public bool Visible{get{return _visible;}set{_visible=value;}}
/// <summary>
/// 是否存活(否则会被dispose掉)
/// </summary>
public bool IsAlive{get{return _isalive;}set{_isalive=value;}}
/// <summary>
/// 横坐标
/// </summary>
public double XCurrent{get{return _x;}set{_x=value;}}
/// <summary>
/// 纵坐标
/// </summary>
public double YCurrent{get{return _y;}set{_y=value;}}
/// <summary>
/// 上次的横坐标
/// </summary>
public double XLast{get{return _lastX;}set{_lastX=value;}}
/// <summary>
/// 上次的纵坐标
/// </summary>
public double YLast{get{return _lastY;}set{_lastY=value;}}
/// <summary>
/// 横移速度
/// </summary>
public double XVelocity{get{return _velX;}set{_velX=value;}}
/// <summary>
/// 纵移速度
/// </summary>
public double YVelocity{get{return _velY;}set{_velY=value;}}
/// <summary>
/// 指针。指向当前frame
/// </summary>
public int FrameCurrent{get{return _currF;}set{_currF=value;}}
/// <summary>
/// 指针。指向起始frame
/// </summary>
public int FrameFirst{get{return _firstF;}set{_firstF=value;}}
/// <summary>
/// 指针。指向最后一frame
/// </summary>
public int FrameLast{get{return _lastF;}set{_lastF=value;}}
/// <summary>
/// 每一帧的播放速度
/// </summary>
public double FrameVelocity{get{return _velF;}set{_velF=value;}}
/// <summary>
/// 播放时间误差累积
/// </summary>
public double TimeCurrent{get{return _currT;}set{_currT=value;}}
#endregion
/// <summary>
/// 构造函数。须通过 ResourceHandler 来加载当前 object 所需资源到集合
/// </summary>
public GameObject(ref GameLoopHandler gameLoopHandler)
{
_glh = gameLoopHandler;
Init();
// _counter++;
// if(_counter==1)
// {
//
// LoadResource();
// }
}
//
// /// <summary>
// /// 释放该 GameObject 相关 Resource
// /// </summary>
// public void ReleaseResource()
// {
// _counter--;
// if(_counter==0)
// {
// UnloadResource();
// }
// }
/// <summary>
/// 初始化
/// </summary>
protected abstract void Init();
/// <summary>
/// 载入GameObject所需Resource
/// </summary>
protected abstract void LoadResource();
/// <summary>
/// 释放GameObject相关Resource
/// </summary>
protected abstract void UnloadResource();
/// <summary>
/// 处理用户输入
/// </summary>
public abstract void Process(ref KeyboardState ks);
/// <summary>
/// 处理每一个 GameLoop
/// </summary>
public abstract void Process();
/// <summary>
/// 获取指向资源集合的索引
/// </summary>
public abstract int IndexOfBmpRectComboCollection();
/// <summary>
/// 获取GameObject的名称
/// </summary>
public abstract string Name();
/// <summary>
/// 获取GameObject的类型编号
/// </summary>
public abstract int Type();
/// <summary>
/// 获取 GameObject 的属性集合
/// </summary>
public abstract object Properties();
/// <summary>
/// 绘制自身
/// </summary>
public virtual void Draw()
{
DDHelper.DrawBitmap(((BmpRectCombo)_bmpRectComboCollection[IndexOfBmpRectComboCollection()]),(int)_x,(int)_y,_currF);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -