import { defineStore } from "pinia";

export const usePStore = defineStore("Policy Store", {
  state: () => {
    return {
      policy: Array(10).fill(0),
      policy_y: Array(10).fill(0),
      nr_weights: 5,
      weights: [0, 0, 0, 0, 0],
      weights_y: [0, 0, 0, 0, 0],
      weights_fixed: [false, false, false, false, false],
      weights_fixed_y: [false, false, false, false, false],
      max_steps: 100,
      trigger: false,
    };
  },
  getters: {
    getPolicy: (state) => state.policy,
    getPolicy_y: (state) => state.policy_y,
    getNrWeights: (state) => state.nr_weights,
    getWeights_Fixed: (state) => state.weights_fixed,
    getWeights: (state) => state.weights,
    getWeights_Fixed_y: (state) => state.weights_fixed_y,
    getWeights_y: (state) => state.weights_y,
    getMaxSteps: (state) => state.max_steps,
    getTrigger: (state) => state.trigger,
  },
  actions: {
    setPolicy(value) {
      this.policy = null;
      this.policy = value;
    },
    setPolicy_y(value) {
      this.policy_y = null;
      this.policy_y = value;
    },
    setNrWeights(value) {
      this.nr_weights = value;
      this.weights = Array(this.nr_weights).fill(0);
      this.weights_fixed = Array(this.nr_weights).fill(false);
      this.weights_y = Array(this.nr_weights).fill(0);
      this.weights_fixed_y = Array(this.nr_weights).fill(false);
      this.trigger = !this.trigger;
    },
    setWeights(value) {
      this.weights = value;
    },
    setWeights_y(value) {
      this.weights_y = value;
    },
    setMaxSteps(value) {
      this.max_steps = value;
      this.trigger = !this.trigger;
    },
    setTrigger() {
      this.trigger = !this.trigger;
    },
    resetWeights_Fixed() {
      this.weights_fixed = Array(this.nr_weights).fill(false);
      this.weights_fixed_y = Array(this.nr_weights).fill(false);
    },
  },
});