条件系统是游戏系统的重要的系统。好的条件系统可以让任务,成就,活动,功能开关等等都获益。
条件类型id | 类型说明 | 值更新方式 | 类型参数个数 | 参数说明 |
---|---|---|---|---|
int | string | enum{k_set,k_add} |
int | |
1 | 击败x级y怪物 | k_add | 2 | [x等级,y怪物] |
2 | 当前等级达到x级 | k_set | 1 | [当前等级] |
条件id | 条件类型 | 条件参数 | 目标进度 | 默认激活 | 消费控制 |
---|---|---|---|---|---|
int | int | int[5] |
int | bool | enum{k_remove,k_reduce} |
1001 | 1 | 1001 | 1 | true | k_remove |
2001 | 1 | 1001 | 1 | true | k_remove |
条件id | 条件列表 | 是否必须完成 | 至少完成个数 |
---|---|---|---|
int | int[5] |
bool[5] |
int |
100001 | 1001,1002,1003 | true,false,false | 2 |
玩家数据不会实际记录条件组id,而是在判断finish的时候,计算子条件id判断是否完成
此处逻辑用c语言表示,方便理解。
struct user_condition {
int id;
int progress;
};
struct user {
...
struct user_condition condition[1024];
int condition_count_;
};
// 初始化玩家默认激活的条件统计
bool user_condition_init(struct user* user);
// 激活指定条件的统计
bool user_condition_active(struct user* user, int condition_id);
// 移除指定条件的统计
bool user_condition_deactive(struct user* user, int condition_id);
// 检查指定条件是否完成
bool user_condition_finish(struct user* user, int condition_id);
// 消费一次指定条件
bool user_condition_consume(struct user* user, int condition_id);
// 报告一次进度更新, 各个功能点进行上报
void user_condition_report(struct user* user, int type, int* params, int value);