📄 actormanager.h
字号:
/********************************************************************
created: 2004/06/24
created: 23:55
filename: d:\Works\GameLib_sdk\ActorManager.h
file path: d:\Works\GameLib_sdk
file base: ActorManager
file ext: h
author: lazybug
purpose: 人物管理器类的定义
*********************************************************************/
#pragma once
#include "./stdafx.h"
#include "GameObj.h"
#include <functional>
class CGameLogic ;
/*
* 人物管理器,管理游戏中所有的人物和简单物品
*/
class CActorManager
{
public:
/*
* 构造函数
* 参数:
* context - 环境变量,LogicEngine对象的指针,用于互操作
*/
CActorManager( CGameLogic* context );
/*
* 析构函数,销毁所有的人物和简单物品
*/
~CActorManager(void);
/*
* 创建默认人物和简单物品
*/
void CreateActors() ;
/*
* 取某个人物的引用
* 参数:
* name - 人物名
* 返回值:
* 对应人物的引用,如果人物不存在,抛出std标准异常
*/
CPlayer& GetActor(const std::string& name ) ;
/*
* 取简单物品的引用,参见CActorManager::GetActor
*/
CSimpleObj& GetSimpleObj(const std::string& name) ;
/*
* 取当前用户控制的人物的引用
* 返回值:
* 返回引用,如果没有用户控制的人物,抛出std标准异常
*/
CPlayer& GetActiveActor() ;
/*
* 对人物根据Y坐标排序,用于画图的覆盖
*/
void SortActors() ;
/*
* 枚举人物
* 返回值:
* 依次返回游戏中所有人物对象的指针,如果枚举结束,返回NULL
*/
CPlayer* enumActor() ;
/*
* 枚举状态压栈,嵌套调用枚举时使用
*/
void push_enum_state() ;
/*
* 枚举状态出栈,嵌套调用结束时使用
*/
void pop_enum_state() ;
/*
* 关闭场景里的所有人物
*/
void DisableAllActors() ;
/*
* 设定用户控制的人物
* 参数:
* name - 人物名
*/
void SetActiveActor( const std::string& name ) ;
/*
* 刷新用户关注的npc
*/
void RefreshUserAttention() ;
/*
* 返回用户关注的npc
* 返回值:
* 用户关注的npc人物对象的指针,如果没有,则返回NULL
*/
CPlayer* GetUserAttention() ;
private:
/* 简单物品列表,比如萝卜*/
std::vector< std::pair<std::string, CSimpleObj*> > m_simple_data ;
/* 人物列表 */
std::vector< std::pair<std::string, CPlayer*> > m_enum_data ;
/* 枚举人物列表的指针 */
std::vector< std::pair<std::string, CPlayer*> >::iterator m_enum_pos ;
/* 嵌套枚举的保存栈 */
std::list< std::vector< std::pair<std::string, CPlayer*> >::iterator > m_enum_stack ;
/* 用户控制的人物 */
CPlayer* m_activePlayer ;
/* 用户所关注的npc的指针,可以引发调查菜单 */
CPlayer* m_user_attention_player ;
/* 环境变量 */
CGameLogic* m_context ;
};
/*
* 函数对象,用于人物对象的Y坐标比较
*/struct BaseYcomp{ /*
* 函数对象()重载,比较CPlayer的Y坐标
*/ bool operator()(const std::pair<std::string, CPlayer*>& a, const std::pair<std::string, CPlayer*>& b) const { return ( ((a.second)->y) < ((b.second)->y) ) ; }};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -