chiark / gitweb /
sewing-table: new front profile wip, prep for swap
[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(3) Token_Spec();
72   translate([spacing,0,0]) Tokens(2) Token_Spec();
73 }
74
75 module Tokens_CDC(){ ////toplevel
76   // STORM GREY
77   // CDC
78   // 1 action per turn + 2 Borrowed Time
79   Tokens(3) Token_CDC();
80 }
81
82 module Tokens_Lab(){ ////toplevel
83   // WHITE
84   // free Lab action (on building research station, etc)
85   // make 2 (probably want less than that)
86   Tokens(2) Token_Lab();
87 }
88
89 //module Tokens_Terr(){ ////toplevel
90 //  // FIRE TRUCK RED
91 //  // Bioterrorist general actions
92 //  Tokens(2) Token_Terr();
93 //}
94
95 //module Tokens_TerrMove(){ ////toplevel
96 //  // CLASSIC BLACK
97 //  // Bioterrorist drive/ferry
98 //  Tokens(1) Token_TerrMove();
99 //}
100
101 module PosToken(i,j){
102   translate([j*spacing, i*spacing, 0]) child();
103 }
104
105 module Demo(){ ////toplevel
106   PosToken(0,0) Token_CDC();
107   PosToken(1,0) Token_Lab();
108   PosToken(2,0) Token_Act();
109   PosToken(3,0) Token_Spec();
110 //  PosToken(1,1) Token_Terr();
111 //  PosToken(2,1) Token_TerrMove();
112 }
113
114 //Tokens_Act();
115 //Demo();