Skip to content

Commit b499dc1

Browse files
committed
time feature switches on at level 7, but only for 20% of projects (increase from there)
1 parent 6f7b25e commit b499dc1

File tree

5 files changed

+566
-161
lines changed

5 files changed

+566
-161
lines changed

index.html

+61-14
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
--main-bg:#EEE;
1717
--main-button-shadow:#AAA;
1818
--column-count-bg:#DDD;
19+
--column-count-updn-bg:#AAA;
1920
--main-button-bg:#D8D8D8;
2021
--main-button-hint-bg:#D0F0FF;
2122
--main-border:#666;
@@ -43,6 +44,7 @@
4344
--main-bg:#222;
4445
--main-button-shadow:#000;
4546
--column-count-bg:#333;
47+
--column-count-updn-bg:#555;
4648
--main-button-bg:#333;
4749
--main-button-hint-bg:#203066;
4850
--main-button-hint:#EEE;
@@ -66,15 +68,39 @@
6668
}
6769
}
6870

71+
.up, .dn {
72+
padding:7px;
73+
display:inline-block;
74+
opacity:0.8;
75+
background-color:var(--column-count-updn-bg);
76+
}
77+
78+
.up:hover, .dn:hover {
79+
background-color:#AAA;
80+
cursor:pointer;
81+
}
82+
83+
.count.limited {
84+
right: 50%;
85+
transform:translateX(50%);
86+
margin-left: auto;
87+
margin-right: auto;
88+
display:inline-block;
89+
white-space: nowrap;
90+
padding:0 0;
91+
}
92+
6993
.pulse {
7094
animation: pulse 1s infinite cubic-bezier(0.66, 0, 0, 1);
7195
}
96+
7297
@keyframes pulse {to {
7398
box-shadow:2px 2px 0 10px rgba(212, 175, 55, 0);}}
7499

75100
#start {
76101
box-shadow:2px 2px 0 var(--main-button-shadow), 0 0 10px gold,0 0 10px gold;
77102
}
103+
78104
.elapsed {
79105
position:absolute;
80106
background-color:red;
@@ -87,6 +113,7 @@
87113
bottom:0;
88114
right:0;
89115
}
116+
90117
.time-bars {
91118
position:absolute;
92119
right:0;
@@ -107,9 +134,15 @@
107134
opacity:0.7;
108135
z-index:2;
109136
}
137+
110138
.count[data-count='0'],.count[data-count='1'],.count[data-count='2'],.count[data-count='3'],.count[data-count='4']{
111139
display:none;
112140
}
141+
142+
.count.limited[data-count] {
143+
display:inline-block;
144+
}
145+
113146
.skill,.icon {
114147
max-width:20px;
115148
display:inline-block;
@@ -119,9 +152,11 @@
119152
padding:0 !important;
120153
position:relative;
121154
}
155+
122156
.button .icon {
123157
font-size:10px;
124158
}
159+
125160
.skill[data-level]:after,.icon[data-level]:after {
126161
content: attr(data-level);
127162
font-size:10px;
@@ -141,8 +176,8 @@
141176
}
142177

143178
.item-disabled {
144-
opacity:0.4;
145-
filter: grayscale(100%);
179+
opacity:0.4;
180+
filter: grayscale(100%);
146181
}
147182

148183
body {
@@ -171,6 +206,7 @@
171206
margin-block-start:0;
172207
margin-block-end:5px;
173208
}
209+
174210
h1{
175211
text-shadow:1px 1px var(--main-title-shadow3), 2px 2px var(--main-title-shadow4);
176212

@@ -278,6 +314,7 @@
278314
.possible {
279315
box-shadow:0 0 1px #FF0,0 0 2px #FF0,0 0 3px #FF0,0 0 4px #FF0,0 0 5px #FF0;
280316
}
317+
281318
.person {
282319
display:inline-block;
283320
vertical-align:top;
@@ -294,7 +331,6 @@
294331
.story,.storeItem {
295332
position:relative;
296333
margin:3px 3px 0 3px;
297-
298334
}
299335

300336
.storeItem-catalog {
@@ -381,16 +417,22 @@
381417
border-radius:4px;
382418
}
383419

384-
.logo, .avatar, .avatar2, .secrets, .icon, .skill {
420+
.logo, .avatar, .avatar2, .secrets, .icon, .skill, #message, #storeMessage {
385421
font-family: arial;
386422
font-size:12pt;
387423
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
424+
}
388425

426+
h1 .icon {
427+
font-size:inherit;
428+
text-shadow:none;
389429
}
430+
390431
.secrets {
391432
background-color:var(--main-button-shadow);
392433
opacity:0.5;
393434
}
435+
394436
.avatar {
395437
border:1px solid var(--main-avatar-border);
396438
background-color:var(--main-avatar-bg);
@@ -413,7 +455,7 @@
413455
color:var(--main-message);
414456
padding:1ch;
415457
box-shadow:2px 2px var(--main-button-shadow);
416-
font-size:10pt;
458+
font-size:12pt;
417459
}
418460

419461
#helpLink,#aboutLink {
@@ -427,6 +469,7 @@
427469
text-decoration:none;
428470
color:var(--main);
429471
}
472+
430473
#aboutLink
431474
{
432475
left:0%;
@@ -437,13 +480,15 @@
437480
right: 0%;
438481
margin-right:5px;
439482
}
483+
440484
.story-detail {
441485
display:inline-block;
442486
whitespace:pre-wrap;
443487
overflow-y: hidden;
444488
overflow-x:hidden;
445489
margin-left:3px;
446490
}
491+
447492
.points {
448493
position:absolute;
449494
bottom:1px;
@@ -469,6 +514,7 @@
469514
min-width:20px;
470515
float:right;
471516
}
517+
472518
.storeIcon {
473519
font-size:3em;
474520
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
@@ -482,6 +528,7 @@
482528
max-width:calc(100vw - 2ch);
483529
width:calc(100vw - 2ch);
484530
}
531+
485532
/* tablet/large phone layout */
486533
@media screen and (max-width: 720px)
487534
{
@@ -496,6 +543,7 @@
496543
font-size:10pt;
497544
}
498545
}
546+
499547
@media screen and (max-height: 500px)
500548
{
501549
#kanbanboard td .inner {
@@ -506,6 +554,7 @@
506554
max-height:150px;
507555
}
508556
}
557+
509558
/* small phone layout */
510559
@media screen and (max-width: 480px)
511560
{
@@ -585,17 +634,15 @@ <h1>ABOUT DevShop</h1>
585634
text-shadow:1px 1px var(--main-title-shadow1), 2px 2px var(--main-title-shadow2), 3px 3px var(--main-title-shadow3), 4px 4px var(--main-title-shadow4);
586635
}
587636
x#startscreen h1:after {
588-
content: '🥓';
589-
font-size:0.5em;
590-
text-transform: rotate(120deg);
591-
margin-left:-12px;
637+
content: '🥓';
638+
font-size:0.5em;
639+
text-transform: rotate(120deg);
640+
margin-left:-12px;
592641
}
593642
#startscreen h2 {
594643
text-align:center;
595-
xfont-size:38pt;
596644
margin:30px auto;
597-
xtransform: rotate(-12deg);
598-
padding-bottom:5px;margin-bottom:0;
645+
padding-bottom:5px;margin-bottom:0;
599646
}
600647
#startscreen input[type=email]{
601648
text-align:center;
@@ -648,7 +695,7 @@ <h1>DevShop</h1>
648695
<div id='getdev' class='button getPerson hidden dev' onclick='getNewPerson("dev");' tabindex='0' role='button'><span class='icon'>💻</span>hire dev (💲300)</div>
649696
<div id='gettest' class='button getPerson hidden test' onclick='getNewPerson("test");' tabindex='0' role='button'><span class='icon'>🔬</span>hire tester (💲300)</div>
650697
<div id='getba' class='button getPerson hidden ba' onclick='getNewPerson("ba");' tabindex='0' role='button'><span class='icon'>🗣</span>hire BA (💲300)</div>
651-
<div class='button visitStore hidden' onclick='visitStore();' tabindex='0' role='button'><span class='icon'>🏪</span>visit store</div>
698+
<div class='button visitStore hidden' onclick='visitStore();' tabindex='0' role='button'><span class='icon'>🛍</span>visit store</div>
652699
</div>
653700
<table id='kanbanboard'>
654701
<thead>
@@ -695,7 +742,7 @@ <h1>DevShop</h1>
695742
</div>
696743

697744
<div id='store' class='hidden'>
698-
<h1>DevStore</h1>
745+
<h1>DevStore<span class='icon'>🛍</span></h1>
699746

700747
<div id='closeStore' class='button' onclick='leaveStore();' tabindex='0' role='button'><span class='icon'>🏢</span> leave store</div>
701748
<div id='items'>

readme.md

+4
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ If you consider it as a tutorial on Kanban or Lean, there are some lessons you c
6969
* A newbie thinks "I wish I could hire a manager to assign the tasks automatically" -- a wise person thinks "I wish the workers had enough initiative to select the tasks for themselves."
7070
* The system needs to have some slack in it, or there will be no way to respond to bottlenecks.
7171
* A founder, in the early days, needs to be able to do *anything*. Later employees can be increasingly specialised.
72+
* To state the above more generally: in a small company, or when work is volatile or sporadic, generalists are very valuable (even if their skill levels are not very high). In a larger company, or when work is more predictable, certain specialists are very valuable (and busy).
7273
* Resource levels need to be appropriately balanced.
7374
* Given a choice between doing something well or doing it quickly, it's better to do it well. It saves time soon enough.
7475
* People can only work on one thing at a time. If they worked on more than one thing at a time, it would decrease throughput. Multi-tasking is a waste of time. (But multi-skilling is not!)
@@ -100,6 +101,9 @@ In the real world:
100101
* workers spend non-zero amounts of their time in meetings, not shown in this game.
101102
* some related practices I find useful are Daily Standups, Retrospectives, Project Pre-Mortems and Code-reviews. There was no way to integrate these into the game without disturbing the flow.
102103
* context-switching takes time and effort.
104+
* some projects are not worth doing at all.
105+
* some bugs are not worth fixing at all.
106+
* some bugs are not bugs.
103107

104108
Regarding the risk of skilled employees leaving, I love this:
105109

0 commit comments

Comments
 (0)