chiark / gitweb /
pandemic-counter: wip
[reprap-play.git] / pandemic-counter.scad
diff --git a/pandemic-counter.scad b/pandemic-counter.scad
new file mode 100644 (file)
index 0000000..3160932
--- /dev/null
@@ -0,0 +1,100 @@
+// -*- C -*-
+
+tokenrad=13;
+tokenthick=1.8;
+
+joinwidth=1.0;
+
+circlerad=15;
+
+module Letter(depth) {
+  translate([-circlerad,-circlerad])
+    import(file=str("pandemic-counter-l",depth,".dxf"), convexity=100);
+}
+
+module Token(depth) {
+  linear_extrude(height=tokenthick) union(){
+    difference(){
+      circle(tokenrad);
+      Letter(depth);
+    }
+    child();
+  }
+}
+
+module Token_CDC(){ ////toplevel
+  Token(30){};
+}
+module Token_Lab(){ ////toplevel
+  Token(31){};
+}
+module Token_Act(){ ////toplevel
+  Token(32){
+    translate([0, 1])
+      square([tokenrad*.75, joinwidth], center=true);
+  }
+}
+module Token_Spec(){ ////toplevel
+  Token(33){};
+}
+module Token_Terr(){ ////toplevel
+  Token(34){};
+}
+module Token_TerrMove(){ ////toplevel
+  Token(35){
+    translate([-tokenrad*.75, -1])
+      square([tokenrad*.75, joinwidth]);
+  };
+}
+
+spacing = tokenrad * 2 + 2;
+
+module Tokens(rows=1,cols=1) {
+  for (i=[0:rows-1])
+    for (j=[0:cols-1])
+      translate([j*spacing, i*spacing, 0])
+       child(0);
+}
+
+module Tokens_Act(){ //// toplevel
+  // Print *twice*, LAPIS BLUE
+  // ordinary actions
+  //  up to 4 for 5 players, plus 2 for Borrowed Time plus 1 for Generalist
+  //  so need 23, make 24
+  Tokens(4,3) Token_Act();
+}
+
+module Tokens_CDC(){ //// toplevel
+  // STORM GREY
+  // CDC
+  // 1 action per turn + 2 Borrowed Time
+  Tokens(3) Token_CDC();
+}
+
+module Tokens_Lab(){ //// toplevel
+  // WHITE
+  // free Lab action (on building research station, etc)
+  // make 2 (probably want less than that)
+  Tokens(2) Token_Lab();
+}
+
+module Tokens_Spec(){ //// toplevel
+  // ELECTRIC BLUE
+  // once-per-turn special action, one each for 5 players
+  Tokens(5) Token_Spec();
+}
+
+module Tokens_Terr(){ //// toplevel
+  // FIRE TRUCK RED
+  // Bioterrorist general actions
+  Tokens(2) Token_Terr();
+}
+
+module Tokens_TerrMove(){ //// toplevel
+  // CLASSIC BLACK
+  // Bioterrorist drive/ferry
+  Tokens(1) Token_TerrMove();
+}
+
+Tokens_TerrMove();
+