Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 25 additions & 5 deletions Assets/Scripts/Character.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,22 @@ public class Character : MonoBehaviour, Observer
public float _myDamage;

protected int _gameRound;
protected int _whoseTurn;
protected int _whoseTurn;//GameManager ->Roundnoti
protected bool _isFinished;

// 1. TurnUpdate: _gameRound, _whoseTurn update
public void TurnUpdate(int round, string turn)
{
_gameRound = round;
_whoseTurn = turn;


}

// 2. FinishUpdate: _isFinished update
public void FinishUpdate(bool isFinish)
{

_isFinished = isFinish;
}

/// <summary>
Expand All @@ -39,21 +42,38 @@ public void FinishUpdate(bool isFinish)
/// </summary>
public virtual void Attack()
{

//���� �ȳ����� , _myName ==_whoseTurn -> AttackMotion()
//������ GetHit(float damage)�� _myDamage �� �Ѱܼ� ȣ�� -> �ʿ��Ѱ���

if (_isFinished == true) return;
else if (_myName == _whoseTurn)
{
AttackMotion();

}
}

/// <summary>
/// 4. GetHit: �ǰݽ� ����� ���� 3���� �����ϰ� ����Ǵ� ��� �ۼ�
/// ���� �� class���� �������̵��ؼ� �ۼ�
/// 1) �Ѱ� ���� damage��ŭ _myHp ����
/// 2) ���� _myHp�� 0���� �۰ų� ���ٸ�, DeadMotion() ȣ���ؼ� �ִϸ��̼� ����
/// + Subject�� EndNotify() ȣ��
/// ##Gamemanager ���� �� + Subject�� EndNotify() ȣ��
/// 3) ���� ����ִٸ�, GetHitMotion() ȣ���ؼ� �ִϸ��̼� ����
/// + Debug.Log($"{_myName} HP: {_myHp}"); �߰�
/// </summary>
public virtual void GetHit(float damage)
{

_myHp -= damage;
if (_myHp =< 0)
{
DeadMotion();
GameManager.Instance().EndNotify();
}
else {
GetHitMotion();
Debug.Log($"{_myName} HP:{_myHp}");
}
}

/// <summary>
Expand Down
30 changes: 28 additions & 2 deletions Assets/Scripts/Enemy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,16 @@ public class Enemy : Character
protected override void Init()
{
base.Init();
GameManager.Instance.AddCharacter(this);
_myName = "Enemy";
_myHp = 100;
_myDamage = 10;
}

private void Awake()
{
Init();

}

/// <summary>
Expand All @@ -30,7 +35,10 @@ private void Awake()
/// </summary>
private void Start()
{

if (_player == null)
{
_player = GameObject.FindWithTag("Player").GetComponent<Player>();
}
}

/// <summary>
Expand All @@ -40,7 +48,20 @@ private void Start()
/// </summary>
public override void Attack()
{
if (_myName == !_isFinished && _whoseTurn)
{
if (_gameRound < 10) {

AttackMotion();
_player.GetHit(_myDamage);
_myDamage += 3;
}

else
{
_player.GetHit(1000);
}
}
}

/// <summary>
Expand All @@ -51,7 +72,12 @@ public override void Attack()
/// </summary>
public override void GetHit(float damage)
{

_randomHeal = Random.Range(0, 100);
if (_randomHeal % 3 == 0 && !_isFinished) {
_myHp += 10;
Debug.Log($"{_myName} Heal!");
Debug.Log($"{_myName}�� ȸ���ϰ� �� ���� HP:{_myHp}");
}
}
}

42 changes: 38 additions & 4 deletions Assets/Scripts/GameManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,35 @@
public class GameManager : MonoBehaviour, Subject
{
// 1. Singleton Pattern: Instance() method
private static GameManager _instance;
private static GameManager _instance; // �ڱ� �ڽ� ����
private static GameManager Instance()
{
if (_instance == null)
{
_instance = FindObjectType<GameManager>();
if(_instance == null)
{
GameObject container = new GameObject("Game Manager");

_instance = container.Addcomponent<GameManager>();
}
}
return _instance;


}

// �ʱ�ȭ ���� �ٲ��� �� ��
private int _gameRound = 0;
private string _whoseTurn = "Enemy";
private bool _isEnd = false;

// delegate: TurnHandler, FinishHandler ����
delegate void TurnHandler(int round, string turn);
delegate void FinishHandler(bool finish);

TurnHandler _turnHandler;
FinishHandler _finishHandler;
/// <summary>
/// 2. RoundNotify:
/// 1) ���� ���� Enemy�̸� ���� gameRound��
Expand All @@ -22,7 +42,13 @@ public class GameManager : MonoBehaviour, Subject
/// </summary>
public void RoundNotify()
{

if (_whoseTurn == "Enemy")
{
int gameRound++;
Debug.Log($"GameManager: Round {gameRound}.");
}
TurnNotify();
else return;
}

/// <summary>
Expand All @@ -33,7 +59,9 @@ public void RoundNotify()
/// </summary>
public void TurnNotify()
{

_whoseTurn = (_whoseTurn == "Enemy" ? "Player" : "Enemy"); //
Debug.Log($"GameManager: {_whoseTurn} turn.");
_turnHandler(_gameRound, _whoseTurn);
}

/// <summary>
Expand All @@ -45,12 +73,18 @@ public void TurnNotify()
/// </summary>
public void EndNotify()
{
_isEnd = true;
Debug.Log("GameManager: The End");
Debug.Log($"GameManager: {_whoseTurn} is Win!");
_finishHandler()

}

// 5. AddCharacter: _turnHandler, _finishHandler ������ �޼ҵ� �߰�
public void AddCharacter(Character character)
{


_finishHandler += new FinishHandler(character.FinishUpdate);
_turnHandler += new TurnHandler(character.TurnUpdate);
}
}