add edge kill and configure random wagon parameters for new setup
This commit is contained in:
parent
ab4bffc85a
commit
62a5b3bc07
|
@ -241,7 +241,18 @@ void spawnWagon(){
|
|||
// pos, wagonlength, startvel , startacc, trainmass, wagoncolor
|
||||
//Wagon tmpr = Wagon(maxid++,NUMPIXELS,&strip, height, random(0, 20), _randomlength, random(map(_randomlength,3,40,1,1), map(_randomlength,3,40, 13,40))/10.0 , 0 , 5 , Wheel((uint8_t)random(0,255))); //spawn new wagon
|
||||
|
||||
Wagon tmpr = Wagon(maxid++,NUMPIXELS,&strip, height, NUMPIXELS+_randomlength, _randomlength, -random(map(_randomlength,3,40,10,20), map(_randomlength,3,40, 22,60))/10.0 , 0 , 2.0 , Wheel((uint8_t)random(0,255))); //spawn new wagon
|
||||
int side_startpos=0;
|
||||
int side_multi=1;
|
||||
|
||||
if (random(0,2)==0){ //spawn from other side
|
||||
side_startpos=NUMPIXELS+_randomlength;
|
||||
side_multi=-1;
|
||||
}
|
||||
|
||||
Wagon tmpr = Wagon(maxid++,NUMPIXELS,&strip, height, side_startpos, _randomlength, side_multi*random(map(_randomlength,3,20,5,10), map(_randomlength,3,20, 5,40))/10.0 , 0 , 5.0 , Wheel((uint8_t)random(0,255))); //spawn new wagon
|
||||
|
||||
|
||||
|
||||
|
||||
//special spawns
|
||||
if (random(0,50)==0){
|
||||
|
@ -473,6 +484,7 @@ void loop_achterbahn(){
|
|||
{
|
||||
it = wagon_arr.erase(it); // After erasing, it is now pointing the next element.
|
||||
--it;
|
||||
Serial.println("Killed train");
|
||||
#ifdef RESPAWNWAGON
|
||||
spawnWagon(); //spawn new one
|
||||
#endif
|
||||
|
|
17
wagon.cpp
17
wagon.cpp
|
@ -2,7 +2,8 @@
|
|||
|
||||
#define WAGONLENGTH 3
|
||||
|
||||
#define EDGE_WALL
|
||||
#define EDGE_KILL
|
||||
//#define EDGE_WALL
|
||||
//#define EDGE_BOUNCE
|
||||
//#define EDGE_WRAP
|
||||
#define WRAPLEDPOS _numpixels //standard
|
||||
|
@ -176,6 +177,11 @@ void Wagon::updatePhysics(float updatedelayms)
|
|||
#ifdef EDGE_WALL
|
||||
//nothing
|
||||
#endif
|
||||
#ifdef EDGE_KILL
|
||||
if (_pos>=WRAPLEDPOS+(_trainlength*WAGONLENGTH)){
|
||||
_health=0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (_pos<0){
|
||||
#ifdef EDGE_WRAP
|
||||
|
@ -187,6 +193,9 @@ void Wagon::updatePhysics(float updatedelayms)
|
|||
#ifdef EDGE_WALL
|
||||
//nothing
|
||||
#endif
|
||||
#ifdef EDGE_KILL
|
||||
_health=0;
|
||||
#endif
|
||||
}
|
||||
|
||||
//fade out if health got low
|
||||
|
@ -206,6 +215,9 @@ float Wagon::getHeight(int p){
|
|||
#ifdef EDGE_WALL
|
||||
return _height[0]+p*-100.0; //edges as wall
|
||||
#endif
|
||||
#ifdef EDGE_KILL
|
||||
return _height[0]+p*-100.0; //same like edges as wall
|
||||
#endif
|
||||
}else if(p>=_numpixels){
|
||||
#ifdef EDGE_WRAP
|
||||
p=p-_numpixels; //wrap edge
|
||||
|
@ -213,6 +225,9 @@ float Wagon::getHeight(int p){
|
|||
#ifdef EDGE_WALL
|
||||
return _height[_numpixels-1]+(p-_numpixels)*100.0; //edges as wall
|
||||
#endif
|
||||
#ifdef EDGE_KILL
|
||||
return _height[_numpixels-1]+(p-_numpixels)*100.0; //samel like edges as wall
|
||||
#endif
|
||||
}
|
||||
return _height[p];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue