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