第十一章 地图动作与地图事件(Map Action and Map Event)
我们已经有了剧本,而且可以运行剧本,但我们还缺少对地图的操作控制。
我们这一章来完成地图上的操作,地图的操作将全部由MapAction控制。
文章目录
六 地图事件的条件(Condition of Map Event)
地图事件是我们地图中所发生的事情,包括:
-
触发条件;
-
触发结果。
它也比较常见,例如:
| 条件 | 结果 | FE4中实例 |
|---|---|---|
| 地图开始 | 创建各种地图对象 | 战斗开始时的剧情,然后创建地图对象 |
| 角色到达某个地点 | 获取物品 | 第一章时斧骑士到达海边获取二回攻击斧 |
| 某回合开始 | 创建各种地图对象 | 某些剧情需要 |
| 对应角色对话 | 获取物品、提升属性等 | 某些章节对话 |
等等诸如此类的事件。
这一节,我们挑选一些典型的事件来说明。
1 条件类(Class Condition)
每一个事件,大多需要一些条件才能触发,这就需要我们知道这些条件是什么。
且每个事件需要的条件可能是多种,但都需要一个进入的条件(主条件),其它为子条件。
首先,我们先来归类一下条件类型:
创建一个枚举MapEventConditionType来表示条件类型(它们不是必须的,按需来):
using System;
namespace DR.Book.SRPG_Dev.ScriptManagement
{
[Serializable]
public enum MapEventConditionType
{
NoneCondition = 0,
/// <summary>
/// 回合
/// </summary>
TurnCondition,
/// <summary>
/// 位置
/// </summary>
PositionCondition,
/// <summary>
/// 角色id
/// </summary>
RoleCondition,
/// <summary>
/// 属性
/// </summary>
PropertyCondition,
/// <summary>
/// 角色死亡
/// </summary>
RoleDeadCondition,
/// <summary>
/// 对话
/// </summary>
RoleTalkCondition,
/// <summary>
/// 战斗对话
/// </summary>
RoleCombatTalkCondition,
/// <summary>
/// 物品
/// </summary>
ItemCondition
}
}
这些条件并不都是进入条件,我们规定:
-
NoneCondition:没有条件,进入地图时触发; -
TurnCondition:回合条件,当回合开始时触发; -
PositionCondition:位置条件,当角色到达此坐标时触发,常与RoleCondition连用; -
RoleCondition:角色条件,不是主条件,常做为其它条件的子条件使用; -
PropertyCondition:属性条件,不是主条件,常做为其它条件的子条件使用; -
RoleDeadCondition:死亡条件,角色死亡时触发; -
RoleTalkCondition:对话条件,两个角色有对话时触发,常与TurnCondition连用(在某些回合范围内可对话); -
RoleCombatTalkCondition:战斗对话条件,两个角色发生战斗时触发; -
ItemCondition:物品条件,不是主条件,常做为其它条件的子条件使用(例如(不)持有某些物品时)。
这以上只是一些常见条件,都是按需。它们有些只能触发一次,而有些可以触发多次(例如《FE4》中的教会)。
我在这里依然选择了xml作为保存它们的文件类型。
而这些条件需要返回一个布尔类型,来表示条件是否满足。
创建类:
[Serializable]
public class Condition
{
[XmlIgnore]
public virtual MapEventConditionType type
{
get {
return MapEventConditionType.NoneCondition; }
}
public virtual bool GetResult(MapAction action)
{
return true;
}
}
2 回合条件(Turn Condition)
在回合条件中,我们在只有在此回合内才能触发,所以它需要:
-
最小回合;
-
最大回合;
-
回合内的阵营。
只有在阵营对应且在当前回合比最小回合大,比最大回合小时才会触发。
[Serializable]
public class TurnCondition : Condition
{
[XmlAttribute]
public int minTurn;
[XmlAttribute]
public int maxTurn;
[XmlAttribute]
public bool allAttitudeTowards;
[XmlAttribute]
public AttitudeTowards attitudeTowards;
[XmlIgnore]
public override MapEventConditionType type
SRPG游戏地图事件的条件解析

本文详细介绍了在SRPG游戏开发中地图事件的条件,包括类条件、回合条件、位置条件、角色条件、属性条件、物品条件等。这些条件决定了事件何时触发,丰富了游戏的交互性和策略性。
最低0.47元/天 解锁文章
7597

被折叠的 条评论
为什么被折叠?



