1 /* 2 * defvelaccel.h 3 * DIN Is Noise is copyright (c) 2006-2021 Jagannathan Sampath 4 * DIN Is Noise is released under GNU Public License 2.0 5 * For more information, please visit https://dinisnoise.org/ 6 */ 7 8 #ifndef __defvelaccel 9 #define __defvelaccel 10 11 #include "angle.h" 12 #include "random.h" 13 14 struct valt { 15 float val; 16 int rndrd; 17 rnd<float> rd; 18 valt (float v = 0.0f, int rr = 0) : rd (0.0f, 1.0f) { 19 val = v; 20 rndrd = rr; 21 } operatorvalt22 float operator()() {if (rndrd) return rd() * val; else return val;} 23 valt& operator= (float v) { 24 val = v; 25 return *this; 26 } 27 operator float () { 28 return val; 29 } 30 } ; 31 32 std::istream& operator>> (std::istream&, valt&); 33 std::ostream& operator<< (std::ostream&, valt&); 34 35 struct defvelaccel { 36 37 std::string name; 38 39 valt mag; 40 41 int dir; 42 enum {HORIZONTAL, VERTICAL, MOUSE}; 43 int neg; 44 45 int rndrot; 46 rnd<float> rotrd; 47 void setrotrd (); 48 anglet clock, anticlock; 49 int sync; 50 51 struct autost { 52 53 struct rott { 54 int yes; 55 int dir; 56 int mov; 57 valt rpm, dps, tps; rottdefvelaccel::autost::rott58 rott () : rpm(45), dps(6), tps(1) { 59 yes = 0; 60 dir = 0; 61 mov = 0; 62 } 63 } rot; 64 65 struct flipt { 66 valt deg; 67 int yes; fliptdefvelaccel::autost::flipt68 flipt () : deg (180), yes(0) {} 69 } flip; 70 71 } autos; 72 73 defvelaccel (const std::string& n); 74 75 }; 76 77 78 std::ostream& operator<< (std::ostream& f, defvelaccel& dva); 79 std::istream& operator>> (std::istream& f, defvelaccel& dva); 80 81 82 83 #endif 84