一、角色信息的定义与绘制
继障碍物后,重要的就是要把敌人加进来。敌人加进来之后需要与其进行战斗。而战斗则与属性等数值挂钩。我们需要建立侧边栏,实时显示出角色的数值来监测战斗。因此,现在我们的任务是将 SideBar 类实现一部分。
再看一看 SideBar.h:
class SideBar
{
std::vector<COperator> operators; // 当前干员
COperator currentOperator; // 当前出战的干员
int ingot; // 源石锭
int cost; // 部署费用
};
注意 COperator
和MCharacter
的不同。COperator
是只存在于 SideBar 中的数据,而 MCharacter
是需要实际被绘制在地图上的角色。当 MCharacter
与其他地图元素发生交互时(与敌人战斗,捡到宝物等等),就会将信息返回给 SideBar,由 SideBar 处理结果。
SideBar 的头文件:
#pragma once
#include <vector>
#include "Coperator.h"
class SideBar
{
std::vector<COperator*> operators; // 当前干员
COperator* currentOperator; // 当前出战的干员
unsigned int ingot; // 源石锭
unsigned int cost; // 部署费用
public:
unsigned int getIngot() {
return ingot; }
unsigned int getCost() {
return cost; }
void setIngot(unsigned int i) {
ingot = i; }
void setCost(unsigned int c) {
cost = c; }
};
现在添加一系列绘图函数与变量以将边栏绘制出来。
准备好斯卡蒂的头像 Skadi.bmp:
边栏的材质图片 SideBar.bmp(灰色纯色,测试材质 qwq):
创建句柄:
HBITMAP hSideBar; // 边栏图句柄
HBITMAP hAvatar; // 边栏干员头像
先在 Game_Init()
中加入边栏材质载入的内容:
hAvatar = (HBITMAP)LoadImage(NULL, L"res/Skadi.bmp", IMAGE_BITMAP, CELL_SIZE, CELL_SIZE, LR_LOADFROMFILE);
hSideBar = (HBITMAP)LoadImage(NULL, L"res/SideBar.bmp", IMAGE_BITMAP, CELL_SIZE * 6, CELL_SIZE * 12, LR_LOADFROMFILE);
再新建一个 SideBar_Paint()
函数。
VOI