go_dreamfactory/modules/battle/fight/fightrole.go
2022-10-19 18:26:17 +08:00

124 lines
3.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}