#include <AccelStepper.h>
#include "HorseLane.h"
// Setup Buttons
int btn1Pin = A1;
int btn1_Val = 0;
String _names[4];
HorseLane _Lane_names[] = {HorseLane(0, 0,0, -1), HorseLane(0,0, 0, -1), HorseLane(0,0, 0, -1), HorseLane(0, 0,0, -1)};
enum GameState {STATE_SETUP, STATE_IDLE, STATE_RUNNING};
GameState state;
int players[] {
0,
2
};
const int _btnPins[] = {A1, A2, A3, A4};
const int lanePins[][2] = {
{4, 7},
{3, 6},
{12, 13},
{2, 5},
};
// Need some Input value
//int players = 2;
void checkBtns() {
}
void gameSetup(int horseLanes[]) {
if (state != STATE_SETUP) return;
int lanesLen = sizeof(horseLanes);
for (int i = 0; i < lanesLen; i++) {
int _laneNum = horseLanes[i];
int _stepPin = lanePins[horseLanes[i]][0];
int _dirPin = lanePins[horseLanes[i]][1];
int _btnPin = _btnPins[horseLanes[i]];
String _name = "horse_lane_" + String(_laneNum);
_names[i] = _name;
_Lane_names[i] = HorseLane(_stepPin, _dirPin, _btnPin, _laneNum);
}
state = STATE_RUNNING;
}
void setup() {
//Start Serial
Serial.begin(9600);
state = STATE_SETUP;
}
void loop() {
btn1_Val = analogRead(btn1Pin);
Serial.println(btn1_Val);
/*
if (btn1_Val > 900) {
_Lane_names[0].HorseLane::accelHorse();
//state = STATE_RUNNING;
}
else if (btn1_Val < 900 && btn1_Val > 0) {
_Lane_names[0].HorseLane::reverseHorse();
}
else {
_Lane_names[0].HorseLane::stopHorse();
}
*/
switch (state) {
case STATE_SETUP:
gameSetup(players);
Serial.println(0);
break;
case STATE_IDLE:
Serial.println(1);
break;
case STATE_RUNNING:
for (int i = 0; i < sizeof(players); i++) {
//Serial.println(btn1_Val);
_Lane_names[players[i]].HorseLane::updateButton();
}
Serial.println(2);
break;
}
//Serial.write(state);
Serial.read();
delay(520);
}