chiark / gitweb /
50b1e857642216ed5d5af2e3e40083f0bb69e18c
[reprap-play.git] / pandemic-counter.scad
1 // -*- C -*-
2
3 tokenrad=13;
4 tokenthick=1.9;
5
6 joinwidth=1.0;
7
8 circlerad=15;
9
10 module Letter(depth) {
11   translate([-circlerad,-circlerad])
12     import(file=str("pandemic-counter-l",depth,".dxf"), convexity=100);
13 }
14
15 module Token(depth) {
16   rotate([0,180,0])
17   linear_extrude(height=tokenthick) union(){
18     difference(){
19       circle(tokenrad);
20       Letter(depth);
21     }
22     child();
23   }
24 }
25
26 module Token_CDC(){ ////toplevel
27   Token(30){};
28 }
29 module Token_Lab(){ ////toplevel
30   Token(31){};
31 }
32 module Token_Act(){ ////toplevel
33   Token(32){
34     translate([0, 1])
35       square([tokenrad*.75, joinwidth], center=true);
36   }
37 }
38 module Token_Spec(){ ////toplevel
39   Token(33){};
40 }
41 //module Token_Terr(){ ////toplevel
42 //  Token(34){};
43 //}
44 //module Token_TerrMove(){ ////toplevel
45 //  Token(35){
46 //    translate([-tokenrad*.75, -1])
47 //      square([tokenrad*.75, joinwidth]);
48 //  };
49 //}
50
51 spacing = tokenrad * 2 + 2;
52
53 module Tokens(rows=1,cols=1) {
54   for (i=[0:rows-1])
55     for (j=[0:cols-1])
56       translate([j*spacing, i*spacing, 0])
57         child(0);
58 }
59
60 module Tokens_Act(){ ////toplevel
61   // Print *twice*, LAPIS BLUE or SQUEEZED ORANGE
62   // ordinary actions
63   //  up to 4 for 5 players, plus 2 for Borrowed Time plus 1 for Generalist
64   //  so need 23, make 24
65   Tokens(4,3) Token_Act();
66 }
67
68 module Tokens_Spec(){ ////toplevel
69   // ELECTRIC BLUE or MELLOW YELLOW
70   // once-per-turn special action, one each for 5 players
71   Tokens(5) Token_Spec();
72 }
73
74 module Tokens_CDC(){ ////toplevel
75   // STORM GREY
76   // CDC
77   // 1 action per turn + 2 Borrowed Time
78   Tokens(3) Token_CDC();
79 }
80
81 module Tokens_Lab(){ ////toplevel
82   // WHITE
83   // free Lab action (on building research station, etc)
84   // make 2 (probably want less than that)
85   Tokens(2) Token_Lab();
86 }
87
88 //module Tokens_Terr(){ ////toplevel
89 //  // FIRE TRUCK RED
90 //  // Bioterrorist general actions
91 //  Tokens(2) Token_Terr();
92 //}
93
94 //module Tokens_TerrMove(){ ////toplevel
95 //  // CLASSIC BLACK
96 //  // Bioterrorist drive/ferry
97 //  Tokens(1) Token_TerrMove();
98 //}
99
100 module PosToken(i,j){
101   translate([j*spacing, i*spacing, 0]) child();
102 }
103
104 module Demo(){ ////toplevel
105   PosToken(0,0) Token_CDC();
106   PosToken(1,0) Token_Lab();
107   PosToken(2,0) Token_Act();
108   PosToken(3,0) Token_Spec();
109 //  PosToken(1,1) Token_Terr();
110 //  PosToken(2,1) Token_TerrMove();
111 }
112
113 //Tokens_Act();
114 //Demo();