124 lines
3.5 KiB
Go
124 lines
3.5 KiB
Go
package fight
|
||
|
||
import (
|
||
"go_dreamfactory/modules/battle/fight/core"
|
||
"go_dreamfactory/modules/battle/fight/skill"
|
||
"go_dreamfactory/modules/battle/fight/skill/afteratk"
|
||
cfg "go_dreamfactory/sys/configure/structs"
|
||
)
|
||
|
||
///战斗角色
|
||
type FightRole struct {
|
||
fight core.IFight
|
||
data *core.FightRoleData
|
||
}
|
||
|
||
///获取战斗控制器
|
||
func (this *FightRole) GetFight() core.IFight {
|
||
return this.fight
|
||
}
|
||
|
||
///获取战斗控制器
|
||
func (this *FightRole) GetData() *core.FightRoleData {
|
||
return this.data
|
||
}
|
||
|
||
/// 增加一个主技能
|
||
func (this *FightRole) AddSkill(skillId int32, skillLv int32) core.ISkill {
|
||
var (
|
||
skillConf *cfg.GameSkillAtkData
|
||
_skill core.ISkill
|
||
ok bool
|
||
)
|
||
skillConf = this.fight.GetSkillConfig(skillId, skillLv).(*cfg.GameSkillAtkData)
|
||
if skillConf == nil {
|
||
this.fight.Errorf("找不到技能配置 ID={%d},Lv={%d}", skillId, skillLv)
|
||
return _skill
|
||
}
|
||
if _skill, ok = this.data.Skills[skillId]; !ok {
|
||
_skill = skill.NewFightSkill(this, skillConf, skillLv)
|
||
this.data.Skills[skillId] = _skill
|
||
}
|
||
return _skill
|
||
}
|
||
|
||
/// 获取一个AfterSkill,不存在时会初始化
|
||
func (this *FightRole) GetAfterAtk(skillId int32) core.IAfterSkill {
|
||
var (
|
||
_skill core.IAfterSkill
|
||
conf *cfg.GameSkillAfteratkData
|
||
ok bool
|
||
)
|
||
if _skill, ok = this.data.AfterSkills[skillId]; !ok {
|
||
conf = this.fight.GetSkillConfig(skillId, 1).(*cfg.GameSkillAfteratkData)
|
||
if conf == nil {
|
||
this.fight.Errorf("子技能配置未null ID={%d}", skillId)
|
||
return nil
|
||
}
|
||
switch conf.Type {
|
||
/// 伤害类
|
||
case cfg.GameSkillEffectType_Dmg:
|
||
case cfg.GameSkillEffectType_NowHpDps:
|
||
case cfg.GameSkillEffectType_MaxDmg:
|
||
//case cfg.GameSkillEffectType_FrontDmg:
|
||
_skill = afteratk.NewFightDmgSkill(this, conf)
|
||
break
|
||
/// 治疗
|
||
case cfg.GameSkillEffectType_Tre:
|
||
_skill = afteratk.NewFightTreSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_AveTre:
|
||
_skill = afteratk.NewFightAveTreSkill(this, conf)
|
||
break
|
||
///属性类
|
||
case cfg.GameSkillEffectType_RobPro:
|
||
_skill = afteratk.NewFightAveTreSkill(this, conf)
|
||
break
|
||
///Buff类
|
||
case cfg.GameSkillEffectType_AddBuff:
|
||
_skill = afteratk.NewFightAddBuffSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_BuffCD:
|
||
_skill = afteratk.NewFightBuffCDSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_RemoveDebuff:
|
||
_skill = afteratk.NewFightRemoveDebuffSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_ShiftBuff:
|
||
_skill = afteratk.NewFightShiftBuffSkill(this, conf)
|
||
break
|
||
///Passive类
|
||
case cfg.GameSkillEffectType_AddPas:
|
||
_skill = afteratk.NewFightAddPasSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_SkillCD:
|
||
_skill = afteratk.NewFightSkillCDSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_AddActValue:
|
||
_skill = afteratk.NewFightAddActValueSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_DrawActValue:
|
||
_skill = afteratk.NewFightDrawActValueSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_RandBuff:
|
||
_skill = afteratk.NewFightRandBuffSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_DpsByAddBuff:
|
||
_skill = afteratk.NewFightDpsByAddBuffSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_Round:
|
||
_skill = afteratk.NewFightRoundSkill(this, conf)
|
||
break
|
||
case cfg.GameSkillEffectType_TreBeyondByAddBuff:
|
||
_skill = afteratk.NewFightDpsByAddBuffSkill(this, conf)
|
||
break
|
||
// 通用类
|
||
default:
|
||
_skill = skill.NewFightAfterSkill(this, conf)
|
||
break
|
||
}
|
||
this.data.AfterSkills[skillId] = _skill
|
||
}
|
||
return _skill
|
||
}
|