HealthBar Problems

I can’t get my war.Energy value to subtract from my maxHitpoint value… Here are the codes. It is not returning null I dont know what the problem is T.T

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class healthBar : MonoBehaviour {
    public Image currentHealthbar;
    public Text ratioText;
    public BasePlayer war;
    private int maxHitpoint = 5;

	// Use this for initialization
	void Start () {
       
        HandleBarUpdateHealthbar();

        war = new BasePlayer();
       
		
	}
	
	// Update is called once per frame
	void Update () {

        
		
	}

    private void HandleBarUpdateHealthbar()
    {
        war = new BaseWarriorClass();
        float ratio = war.Energy/maxHitpoint;
        currentHealthbar.rectTransform.localScale = new Vector3(ratio, 1, 1);
        ratioText.text = (ratio*100).ToString() + "%";
        
       if (war.Energy <= 0)
       {
            war.Energy = 0;
            Debug.Log("Dead");
       }
        
    }

    private void OnTriggerEnter(Collider col)
    {
        if (col.tag == "Player")
        {
           
            HandleBarUpdateHealthbar();
            war.Energy-=maxHitpoint;
            
            
            
        }
       
        

    }

}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BasePlayer
{
    private string playerName;
    private int playerLevel;
    private string className;
    private string classDesc;
    private int energy;
    private int mana;
    private int power;
    private int speed;
    private int endurence;
    private int stamina;
    private int knowledge;
    private string medievalHuman;
    private string modernSoldier;
    private string monster;
    private string alien;

    public string PlayerName
{
    get { return playerName; }
    set { playerName = value; }
}
  public int PlayerLevel
    {
        get { return playerLevel; }
        set { playerLevel = value; }
    }

    public int Energy
    {
        get { return energy; }
        set { energy = value; }
    }

    public int Mana
    {
        get { return mana; }
        set { mana = value; }
    }

    public int Power
    {
        get { return power; }
        set { power = value; }
    }

    public int Speed
    {
        get { return speed; }
        set { speed = value; }
    }

    public int Endurance
    {
        get { return endurence; }
        set { endurence = value; }
    }

    public int Stamina
    {
        get { return stamina; }
        set { stamina = value; }
    }

    public int Knowledge
    {
        get { return knowledge; }
        set { knowledge = value; }
    }

    public string ClassName
    {
        get { return className; }
        set { className = value; }
    }

    public string ClassDesc
    {
        get { return classDesc; }
        set { classDesc = value; }
    }


    public string MedievalHuman
    {
        get { return medievalHuman; }
        set { medievalHuman = value; }
    }

    public string ModernSoldier
    {
        get { return modernSoldier; }
        set { modernSoldier = value; }
    }

    public string Monster
    {
        get { return monster; }
        set { monster = value; }
    }

    public string Alien
    {
        get { return alien; }
        set { alien = value; }
    }

}

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BaseWarriorClass : BasePlayer {
    private BasePlayer  PlayerClass;

public BaseWarriorClass()
    {
        MedievalHuman = "MedievalHuman";
        ClassName = "Warrior";
        PlayerLevel = 1;
        ClassDesc = "The strong hero of the human race";
        Energy = 5;
        Mana = 0;
        Power = 5;
        Speed = 4;
        Endurance = 5;
        Stamina = 6;
        Knowledge = 2;
    }

    
}

HandleBarUpdateHealthbar()

You are creating new warrior every time in that function, like this:

war = new BaseWarriorClass();

And in your code, the function itself is called every time OnTriggerEnter() is called.

Instead, you should only create warrior once, and not overwrite the war variable with new objects.