177 lines
4.2 KiB
C#
177 lines
4.2 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class Player : MonoBehaviour
|
|
{
|
|
public static Player main;
|
|
[SerializeField] private Text playerName;
|
|
[SerializeField] private Text playerMaxHp;
|
|
[SerializeField] private Text playerHp;
|
|
[SerializeField] private Slider playerHealthbar;
|
|
[SerializeField] private Image marker;
|
|
[SerializeField] private Button buttonInPlayer;
|
|
|
|
//[SerializeField] private Sprite armorSprite;
|
|
[SerializeField] private Image armorIcon;
|
|
[SerializeField] private Text armorText;
|
|
|
|
[Header("dont touch this. standart preset, change session")]
|
|
public PlayerConfig playerConfig;
|
|
|
|
[SerializeField] private int hp;
|
|
[SerializeField] private int armor;
|
|
|
|
public List<string> effectsName = new List<string>();
|
|
public List<int> effectsTurns = new List<int>();
|
|
public List<int> effectsDamage = new List<int>();
|
|
|
|
[HideInInspector] public List<GameObject> effectsLink = new List<GameObject>();
|
|
|
|
[HideInInspector] public bool hasStun = false;
|
|
|
|
private void Awake()
|
|
{
|
|
if (main != null && main != this)
|
|
{
|
|
Debug.LogWarning("2 session on the scene");
|
|
Destroy(this);
|
|
return;
|
|
}
|
|
|
|
main = this;
|
|
}
|
|
|
|
public void NewInformation()
|
|
{
|
|
var _character = playerConfig.characterCharacteristics;
|
|
|
|
Image _image = buttonInPlayer.image;
|
|
_image.sprite = playerConfig.characterCharacteristics.sprite;
|
|
|
|
playerName.text = _character.namePlayer;
|
|
playerMaxHp.text = _character.maxHp.ToString();
|
|
playerHp.text = playerMaxHp.text;
|
|
playerHealthbar.maxValue = _character.maxHp;
|
|
playerHealthbar.value = playerHealthbar.maxValue;
|
|
hp = _character.maxHp;
|
|
AddArmor(_character.armor);
|
|
}
|
|
|
|
public void ReupdateArmorIconAndText()
|
|
{
|
|
if(armor <= 0)
|
|
{
|
|
armorIcon.enabled = false;
|
|
|
|
armorText.text = "";
|
|
}
|
|
else
|
|
{
|
|
armorIcon.enabled = true;
|
|
armorText.text = armor.ToString();
|
|
}
|
|
}
|
|
|
|
public void ChangeHp(int damage)
|
|
{
|
|
if (damage < 0)
|
|
{
|
|
hp -= damage;
|
|
}
|
|
else
|
|
{
|
|
AddArmor(-damage);
|
|
if (armor < 0)
|
|
{
|
|
hp -= Mathf.Abs(armor);
|
|
AddArmor(-armor);
|
|
|
|
}
|
|
}
|
|
|
|
if (hp <= 0)
|
|
{
|
|
hp = 0;
|
|
Death();
|
|
}
|
|
else if (hp > playerConfig.characterCharacteristics.maxHp)
|
|
{
|
|
hp = playerConfig.characterCharacteristics.maxHp;
|
|
}
|
|
|
|
playerMaxHp.text = hp.ToString();
|
|
playerHealthbar.value = hp;
|
|
|
|
}
|
|
|
|
public void EffectsBy()
|
|
{
|
|
for (int i = 0; i < effectsName.Count; i++)
|
|
{
|
|
if (effectsName[i] == "poison")
|
|
{
|
|
LibraryEffects.main.Poison(gameObject, effectsDamage[i]);
|
|
effectsTurns[i] -= 1;
|
|
}
|
|
|
|
if (effectsName[i] == "stun")
|
|
{
|
|
LibraryEffects.main.Stun(gameObject);
|
|
effectsTurns[i] -= 1;
|
|
}
|
|
}
|
|
|
|
var _dopCounter = 0;
|
|
var _effectsCount = effectsName.Count;
|
|
for (int i = 0; i < _effectsCount; i++)
|
|
{
|
|
if (effectsTurns[_dopCounter] <= 0)
|
|
{
|
|
effectsName.Remove(effectsName[_dopCounter]);
|
|
effectsTurns.Remove(effectsTurns[_dopCounter]);
|
|
effectsDamage.Remove(effectsDamage[_dopCounter]);
|
|
Destroy(effectsLink[_dopCounter]);
|
|
effectsLink.RemoveAt(_dopCounter);
|
|
}
|
|
else
|
|
{
|
|
_dopCounter += 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void OnClick()
|
|
{
|
|
//DeckManager.main.ActionInPlayer();
|
|
}
|
|
|
|
public void AddArmor(int value)
|
|
{
|
|
armor += value;
|
|
ReupdateArmorIconAndText();
|
|
}
|
|
|
|
public void Death()
|
|
{
|
|
Session.main.Defeat();
|
|
}
|
|
|
|
|
|
public void OnMarker()
|
|
{
|
|
marker.enabled = true;
|
|
}
|
|
|
|
public void OffMarker()
|
|
{
|
|
marker.enabled = false;
|
|
}
|
|
|
|
public bool CheckMarker()
|
|
{
|
|
return marker.enabled;
|
|
}
|
|
}
|