创建一个与RPG相关的程序,我想为我的角色技能添加各种额外的效果(随着时间的推移,buff等等......)
到目前为止,我做了类似这样的事情(C#语法)
public class Paladin : Character
{
public Paladin()
{
BaseMP = 7080;
caster = false;
baseGCD = 2.43;
aadelay = 2.24;
aapotency = AAPotency.Attack;
Moveset = new List<IMove>()
{
new Weaponskill("Fast Blade", "", 150, 150, false, false, baseGCD, null),
new Weaponskill("Riot Blade", "Fast Blade", 100, 230, false, false, baseGCD, new RiotBlade_Effect()),
new Weaponskill("Goring Blade", "Riot Blade", 100, 240, false, false, baseGCD, new DoT(50, 24)),
new Spell("Holy Spirit", 430, 1440, false, 2.5, null),
new Ability("Requiescat", 350, true, 60, false, new Requiescat_Effect()),
};
}
}
Weaponskill
,Spell
和Ability
都是接口ISkill
的所有实现,代表了我的一个角色技能。
如果没有特殊效果,它们的构造函数的最后一个参数为null,或者应该包含此技能的特殊效果。
为了实现它们,我考虑了一种策略设计模式(或者我认为是战略设计模式,我第一次尝试实现它)。
public interface IStrategy
{
void execute();
}
public class RiotBlade_Effect : IStrategy
{
public RiotBlade_Effect()
{
}
public void execute()
{
}
}
我有两个问题。
首先,如果需要更改IStrategy
实现,Character
实现如何才能知道我的Paladin()
属性? (例如,如果我想降低或增加execute()
中设置的某个属性)。
其次,我如何处理# verbose version
Select-String "THE SUM OF SPECIFIED" -Path "C:\temp\test.txt" -Context 4,0 | foreach { $_.Context.PreContext[0]; $_.Line}
# or short version (with alias)
sls "THE SUM OF SPECIFIED" "C:\temp\test.txt" -Co 4,0 | % { $_.Context.PreContext[0]; $_.Line}
的多种可能的返回类型,具体取决于我将实现的效果?