100 lines
2.4 KiB
C#
100 lines
2.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace TON
|
|
{
|
|
public class AttackPattern
|
|
{
|
|
protected MonsterBase _monsterBase;
|
|
protected float _lastSkillTime;
|
|
protected float _skill1Cooldown = 5f;
|
|
protected float _skill2Cooldown = 8f;
|
|
|
|
public AttackPattern(MonsterBase monsterBase)
|
|
{
|
|
_monsterBase = monsterBase;
|
|
// 쿨다운 값을 MonsterData에서 가져오기
|
|
_skill1Cooldown = _monsterBase.GetSkillCooldown(1);
|
|
_skill2Cooldown = _monsterBase.GetSkillCooldown(2);
|
|
_lastSkillTime = -_skill1Cooldown;
|
|
}
|
|
|
|
public virtual void Attack()
|
|
{
|
|
}
|
|
}
|
|
|
|
public class Monster1AttackPattern : AttackPattern
|
|
{
|
|
public Monster1AttackPattern(MonsterBase monsterBase) : base(monsterBase)
|
|
{
|
|
}
|
|
|
|
public override void Attack()
|
|
{
|
|
if (Time.time >= _lastSkillTime + _skill1Cooldown)
|
|
{
|
|
Skill1();
|
|
_lastSkillTime = Time.time;
|
|
}
|
|
else
|
|
{
|
|
MeleeAttack();
|
|
}
|
|
}
|
|
|
|
private void Skill1()
|
|
{
|
|
_monsterBase.MonsterSkillLaunch();
|
|
}
|
|
|
|
private void MeleeAttack()
|
|
{
|
|
_monsterBase.PlayerAttack();
|
|
}
|
|
}
|
|
|
|
public class Monster2AttackPattern : AttackPattern
|
|
{
|
|
private float _lastSkill2Time;
|
|
|
|
public Monster2AttackPattern(MonsterBase monsterBase) : base(monsterBase)
|
|
{
|
|
_lastSkill2Time = -_skill2Cooldown;
|
|
}
|
|
|
|
public override void Attack()
|
|
{
|
|
if (Time.time >= _lastSkillTime + _skill1Cooldown)
|
|
{
|
|
Skill1();
|
|
_lastSkillTime = Time.time;
|
|
}
|
|
else if (Time.time >= _lastSkill2Time + _skill2Cooldown)
|
|
{
|
|
Skill2();
|
|
_lastSkill2Time = Time.time;
|
|
}
|
|
else
|
|
{
|
|
MeleeAttack();
|
|
}
|
|
}
|
|
|
|
private void Skill1()
|
|
{
|
|
_monsterBase.MonsterSkillLaunch(1); // 스킬 1 발사
|
|
}
|
|
|
|
private void Skill2()
|
|
{
|
|
_monsterBase.MonsterSkillLaunch(2); // 스킬 2 발사
|
|
}
|
|
|
|
private void MeleeAttack()
|
|
{
|
|
_monsterBase.PlayerAttack();
|
|
}
|
|
}
|
|
} |