#include "capturePoint.h"

capturePoint::capturePoint(char* name, int pin){
  _name = name;
  _btnPin = pin;
  _isHeld = false;
  _inCapture = false;
  _inContention = false;
  _accumulatedPoints = 0;

  _captureStrength = 0;
  _maxCaptureStrength = 10;
}


String capturePoint::getName(){
  return _name;

}

void capturePoint::capture(int modifier){

  if(_captureStrength >= _maxCaptureStrength){
    _captureStrength = _maxCaptureStrength; //In case somehow it exceeded maxCaptureStrength;
    _isHeld = true;
    return;
  }else{
    _captureStrength = _captureStrength + modifier;
  }
  Serial.println(String(_name) + "\tcapStrength:\t" + String(_captureStrength) + "/" + String(_maxCaptureStrength));
}

void capturePoint::contest(int modifier){
  if(_captureStrength <= 0){
    _captureStrength = 0;
    _isHeld = false;
    return;
  }else{
    _captureStrength = _captureStrength - modifier;
  }
  Serial.println(String(_name) + "\tcapStrength:\t" + String(_captureStrength) + "/" + String(_maxCaptureStrength));
}

bool capturePoint::isHeld(){
    return _isHeld;
}

bool capturePoint::isHeld(bool setVal){
  _isHeld = setVal;
  return _isHeld;
}

long capturePoint::addPoints(int modifier){
  _accumulatedPoints = _accumulatedPoints + modifier;
  return _accumulatedPoints;
}

String capturePoint::getPoints(){
  return String(_accumulatedPoints);
}

String capturePoint::getStrength(){
  return String(_captureStrength);

}


JsonDocument capturePoint::jsonStatus(){
  JsonDocument jetVal;

  jetVal["held"] = _isHeld;
  jetVal["b"] = _inCapture;
  jetVal["c"] = _inContention;
  jetVal["pts"] = _accumulatedPoints;
  jetVal["str"] = _captureStrength;
  return jetVal;
}

