51d10ffef0a4a265b35477ee22a25762e6bcebe5
[scilab.git] / scilab / modules / gui / demos / uicontrol_dice_game.dem.sce
1 function idle_gui()
2     global idle;
3     f = fullfile(SCIHOME, "idle.sod")
4     if isfile(f) then
5         load(f);
6         e = getdate("s");
7         elaps = etime(getdate(e), getdate(idle.time));
8         rolls = floor(elaps / 5);
9
10         if rolls > 0 then        
11             dice = 0;
12             for i = 1:idle.dice
13                 if idle.dices(i).enable
14                     dice = dice + 1;
15                 end
16             end
17         
18             r = int(rand(rolls, dice) * 6) + 1;
19             
20             gain = 0;    
21             for j = 1:rolls
22                 [g, msg] = idle_roll_gain(r(j, :))
23                 s = 0;
24                 for i = 1:idle.dice
25                     if idle.dices(i).enable then
26                         s1 = idle.dices(i).mult * r(j, i);
27                         s = s + s1;
28                     end
29                 end
30
31                 printf("%d: %d\n", g, s * g);
32                 gain = gain + g * s;
33             end
34
35     
36             msg = sprintf("During your absence you earned %s", formatEng(gain));
37             messagebox(msg, "Game of Dice", "info", "modal");
38             
39             idle.gain = idle.gain + gain;
40         end
41     else
42         //init rand
43         rand("seed", getdate("s"))
44         idle.first_run = %t;
45         idle.path = get_absolute_file_path("uicontrol_dice_game.dem.sce");
46         idle.cumul_gain = 0;
47         idle.gain = 0;
48         idle.autoroll = %f;
49         idle.quit = %f;
50         idle.reset = %f;
51         idle.action.type = [];
52         idle.history = [];
53         
54         idle.colors = [0.8666667   0.4666667   0.4313725
55                        0.8784314   0.5058824   0.427451
56                        0.8862745   0.5333333   0.4235294
57                        0.8980392   0.572549    0.4196078
58                        0.9058824   0.6039216   0.4117647
59                        0.9137255   0.6352941   0.4078431
60                        0.9254902   0.6745098   0.4039216
61                        0.9019608   0.6784314   0.3803922
62                        0.9137255   0.7215686   0.3803922
63                        0.9529412   0.772549    0.3882353
64                        0.9607843   0.8078431   0.3843137
65                        0.8862745   0.7882353   0.3960784
66                        0.8313725   0.7843137   0.4156863
67                        0.7686275   0.772549    0.427451
68                        0.6901961   0.745098    0.4313725
69                        0.6431373   0.7529412   0.4509804
70                        0.5803922   0.7411765   0.4666667
71                        0.5176471   0.7333333   0.4823529
72                        0.4509804   0.7215686   0.4941176
73                        0.3882353   0.7137255   0.5098039
74                        0.3411765   0.7333333   0.5411765]
75
76         idle.dice = 1;
77         idle.dices = [];
78         idle.dices($ + 1) = struct(...
79             "base", 10 / 1.08, ...
80             "cost", 1.08, ...
81             "mult", 1, ...
82             "multCoef", 1, ...
83             "enable", %t, ...
84             "level", 1);
85
86         idle.dices($ + 1) = struct(...
87             "base", 100, ...
88             "cost", 1.08, ...
89             "mult", 2, ...
90             "multCoef", 2, ...
91             "enable", %f, ...
92             "level", 0);
93
94         idle.dices($ + 1) = struct(...
95             "base", 1000 * 1.08, ...
96             "cost", 1.08, ...
97             "mult", 4, ...
98             "multCoef", 4, ...
99             "enable", %f, ...
100             "level", 0);
101
102         idle.dices($ + 1) = struct(...
103             "base", 10000 * 1.08, ...
104             "cost", 1.08, ...
105             "mult", 8, ...
106             "multCoef", 8, ...
107             "enable", %f, ...
108             "level", 0);
109
110         idle.dices($ + 1) = struct(...
111             "base", 100000 * 1.08, ...
112             "cost", 1.08, ...
113             "mult", 16, ...
114             "multCoef", 16, ...
115             "enable", %f, ...
116             "level", 0);
117     end
118
119     //always at startup
120     idle.multiplier = 1;
121
122     f = figure(...
123         "dockable", "off", ...
124         "position", [10 250 800 600], ...
125         "infobar_visible", "off", ...
126         "toolbar", "none", ...
127         "menubar_visible", "on", ...
128         "menubar", "none", ...
129         "default_axes", "off", ...
130         "resize", "off", ...
131         "layout", "border", ...
132         "figure_name", "Game of Dice", ...
133         "background", -2, ...
134         "visible", "off", ...
135         "closerequestfcn", "global idle;idle.quit = %t;", ...
136         "tag", "idle_fig");
137
138     fr = uicontrol(f, ...
139         "style", "frame", ...
140         "backgroundcolor", [1 1 1], ...
141         "tag", "idle_top", ...
142         "constraints", createConstraints("border", "top", [0 50]));
143
144     uicontrol(fr, ...
145         "style", "text", ...
146         "fontsize", 40, ...
147         "fontweight", "bold", ...
148         "string", formatEng(idle.gain), ...
149         "horizontalalignment", "center", ...
150         "backgroundcolor", [1 1 1], ...
151         "tag", "idle_total", ...
152         "position", [100 5 600 40])
153
154     u = idle_create_button(fr, "idle_help", [10 10 30 30]);
155     set(u, "icon", "help-browser");
156     set(u, "fontsize", 16);
157     set(u, "fontweight", "bold");
158     set(u, "callback", "global idle;idle.action.type = ""help"";");
159     set(u, "callback_type", 10);
160
161     fr = uicontrol(f, ...
162         "style", "frame", ...
163         "backgroundcolor", [1 1 1], ...
164         "tag", "idle_bottom", ...
165         "constraints", createConstraints("border", "bottom", [0 50]));
166
167     u = idle_create_button(fr, "idle_roll", [350 10 100 30]);
168     set(u, "string", "Roll !");
169     set(u, "fontsize", 16);
170     set(u, "fontweight", "bold");
171     set(u, "callback", "global idle;idle.action.type = ""roll"";");
172     set(u, "callback_type", 10);
173
174     u = idle_create_button(fr, "idle_btn_history", [690 10 100 30]);
175     set(u, "string", "History");
176     set(u, "fontsize", 16);
177     set(u, "callback", "global idle;idle.action.type = ""history"";");
178     set(u, "callback_type", 10);
179
180     u = idle_create_button(fr, "idle_btn_multi", [150 10 100 30]);
181     set(u, "string", sprintf("x %d", idle.multiplier));
182     set(u, "fontsize", 16);
183     set(u, "callback", "global idle;idle.action.type = ""multiplier"";");
184     set(u, "callback_type", 10);
185
186     uicontrol(fr, ...
187             "style", "text", ...
188             "horizontalalignment", "center", ...
189             "fontweight", "bold", ...
190             "string", "Inspired by", ...
191             "backgroundcolor", [1 1 1], ...
192             "position", [10 20 80 20]);
193
194     uicontrol(fr, ...
195         "style", "text", ...
196         "horizontalalignment", "center", ...
197         "string", "<html><a href=""https://luts91.github.io/idle-dices"">Idle Dice</a></html>", ...
198         "backgroundcolor", [1 1 1], ...
199         "position", [10 0 80 20]);
200
201     v = "off";
202     if  idle.autoroll then
203         v = "on";
204     end
205
206     fr1 = uicontrol(fr, ...
207         "style", "frame", ...
208         "visible", v, ...
209         "border", createBorder("line", "#000000", 1), ...
210         "backgroundcolor", [1 1 1], ...
211         "tag", "idle_autoroll", ...
212         "position", [350 13 104 24]);
213
214     uicontrol(fr1, ...
215         "style", "frame", ...
216         "tag", "idle_progress", ...
217         "position", [2 2 0 20]);
218
219     fr = uicontrol(f, ...
220         "style", "frame", ...
221         "backgroundcolor", [1 1 1], ...
222         "tag", "idle_center");
223
224     uicontrol(fr, ...
225         "style", "text", ...
226         "string", "", ...
227         "relief", "default", ...
228         "horizontalalignment", "center", ...
229         "fontsize", 32, ...
230         "backgroundcolor", [1 1 1], ...
231         "fontweight", "bold", ...
232         "tag", "roll_msg", ...
233         "position", [200 400 400 75]);
234
235     uicontrol(fr, ...
236         "style", "text", ...
237         "string", "", ...
238         "horizontalalignment", "center", ...
239         "fontsize", 32, ...
240         "backgroundcolor", [1 1 1], ...
241         "fontweight", "bold", ...
242         "tag", "roll_gain", ...
243         "position", [200 350 400 50]);
244
245     for i = 1:idle.dice
246         idle_dice_gui(i);
247     end
248
249     if idle.dices(1).level > 1 then
250         idle_show_autoroll();
251     end
252
253     set("idle_fig", "visible", "on");
254 endfunction
255
256 function u = idle_create_button(parent, tag, pos)
257
258     fr = uicontrol(parent, ...
259         "style", "frame", ...
260         "position", pos, ...
261         "border", createBorder("etched", "raised", "#d0d0d0", "#202020"), ...
262         "backgroundcolor", [1 1 1], ...
263         "tag", sprintf("%s_frame", tag));
264
265     u = uicontrol(fr, ...
266         "style", "pushbutton", ...
267         "tag", tag, ...
268         "backgroundcolor", [1 1 1], ...
269         "position", [1 1 pos(3:4) - 2]);
270 endfunction
271
272 function idle_show_history()
273
274     if get("idle_history") == [] then
275         f = get("idle_fig");
276
277         fr = uicontrol(f, ...
278             "style", "frame", ...
279             "backgroundcolor", [1 1 1], ...
280             "constraints", createConstraints("border", "right", [200 0]), ...
281             "tag", "idle_history");
282
283         uicontrol(fr, ...
284             "style", "listbox", ...
285             "position", [0 0 200 500], ...
286             "fontname", "consolas", ...
287             "string", string((1:100)'), ...
288             "visible", "off", ...
289             "tag", "idle_history_list");
290
291             pos = get("idle_fig", "position");
292             pos(3) = 1000;
293             set("idle_fig", "position", pos);
294     else
295         delete(get("idle_history"));
296         pos = get("idle_fig", "position");
297         pos(3) = 800;
298         set("idle_fig", "position", pos);
299         return;
300     end
301 endfunction
302
303 function idle_refresh_history()
304     global idle;
305
306     if get("idle_history_list") == [] then
307         return;
308     end
309
310     set("idle_history_list", "visible", "off");
311     history_str = [];
312     history = idle.history;
313     h = history(:, 1:5);
314
315     for i = 1:size(h, "r")
316         hi = h(i, :);
317         hi = hi(hi <> 0);
318         s = strcat(string(hi), " - ");
319         s = s + " => " + string(history(i, 6));
320         history_str($ + 1) = s;
321     end
322
323     set("idle_history_list", "string", history_str);
324     set("idle_history_list", "listboxtop", size(history_str, "r"));
325     set("idle_history_list", "visible", "on");
326 endfunction
327
328 function idle_show_autoroll()
329     global idle;
330     idle.autoroll = %t;
331
332     set("idle_roll_frame", "position", [460 10 100 30]);
333     set("idle_autoroll", "visible", "on");
334     tic(); //start timer
335 endfunction
336
337 function idle_dice_gui(i)
338     global idle;
339     x = idle.dice
340     st = idle.dices(i);
341
342     offset = (800 - (x * 110))/ 2;
343     f = get("idle_center");
344
345     if get(sprintf("dice_%d", i)) <> [] then
346         delete(get(sprintf("dice_%d", i)));
347     end
348
349     //frame
350     fr = uicontrol(f, ...
351         "style", "frame", ...
352         "relief", "default", ...
353         "tag", sprintf("dice_%d", i), ...
354         "backgroundcolor", [1 1 1], ...
355         "position", [offset + ((i - 1)*110), 150 110 200]);
356
357     u = idle_create_button(fr, sprintf("btn_%d", i), [0 10 100 30]);
358     set(u, "enable", "off");
359     set(u, "string", formatEng(st.base * st.cost ^ (st.level)));
360     set(u, "foregroundcolor", [0.75 0 0]);
361     set(u, "callback", sprintf("global idle;idle.action.type = ""upgrade"";idle.action.dice = %d", i));
362     set(u, "callback_type", 10);
363
364     //text 1
365     uicontrol(fr, ...
366         "style", "text", ...
367         "horizontalalignment", "center", ...
368         "backgroundcolor", [1 1 1], ...
369         "tag", sprintf("label_1_%d", i), ...
370         "position", [10 40 80 15]);
371
372     //text 2
373     uicontrol(fr, ...
374         "style", "text", ...
375         "horizontalalignment", "center", ...
376         "backgroundcolor", [1 1 1], ...
377         "tag", sprintf("label_2_%d", i), ...
378         "position", [5 55 90 15]);
379
380     //visible only if enable
381     v = "off";
382     if st.enable then
383         v = "on";
384     end
385
386     //disp(fullfile(idle.path, "images", "dice-1.png"));
387     //image
388     uicontrol(fr, ...
389         "style", "image", ...
390         "string", fullfile(idle.path, "images", "dice-1.png"), ...
391         "position", [10 80 80 80], ...
392         "backgroundcolor", [1 1 1], ...
393         "tag", sprintf("image_%d", i), ...
394         "horizontalalignment", "center", ...
395         "visible", v, ...
396         "verticalalignment", "middle");
397
398     //text 3
399     uicontrol(fr, ...
400         "style", "text", ...
401         "string", "0", ...
402         "horizontalalignment", "center", ...
403         "backgroundcolor", [1 1 1], ...
404         "tag", sprintf("label_3_%d", i), ...
405         "fontsize", 16, ...
406         "visible", v, ...
407         "position", [10 170 80 20]);
408
409     idle_update_dice(i);
410 endfunction
411
412 function idle_move_dice()
413     global idle;
414     dice = idle.dice;
415
416     oldOff = (800 - (dice * 110)) / 2;
417     newOff = (800 - ((dice + 1) * 110)) / 2;
418
419     posX = [];
420     for i = 1:dice
421         posX($ + 1, 1)  = get(sprintf("dice_%i", i), "position")(1);
422         posX($    , 2)  = newOff + ((i - 1) * 110);
423     end
424
425     offsets = linspace(posX(:, 1), posX(:, 2), 10);
426
427     for off = 1:size(offsets, "c")
428         for i = 1:dice
429             d = sprintf("dice_%i", i);
430             pos = get(d, "position");
431             pos(1) = offsets(i, off);
432             set(d, "position", pos);
433         end
434
435         sleep(100);
436     end
437
438 endfunction
439
440 function idle_buy(x)
441     global idle;
442
443     //reduce money
444     cost = idle_dice_upgrade_cost(x);
445     if cost > idle.gain then
446         return;
447     end
448     idle.gain = idle.gain - cost;
449     set("idle_total", "string", formatEng(idle.gain));
450
451     //upgrade dice
452     idle.dices(x).level = min(idle.dices(x).level + idle.multiplier, 100);
453     idle.dices(x).mult = idle.dices(x).level * idle.dices(x).multCoef;
454
455     //enable autoroll after 1st upgrade of 1st dice
456     if idle.autoroll == %f && x == 1 && idle.dices(x).level > 1 then
457         idle_show_autoroll();
458     end
459
460     idle_update_dice(x);
461
462     if x < 5 && x == idle.dice && idle.dices(x + 1).enable == %f && idle.dices(x).level >= 10 then
463         idle_move_dice();
464         idle.dice = idle.dice + 1;
465         idle_dice_gui(x + 1);
466     end
467     
468     victory = and(list2vec(idle.dices.level) == 100);
469     if victory then
470         msg = ["Victory !";
471                "";
472                "Do you want to reset progression?"];
473         answer = messagebox(msg, "Game of Dice", "question", ["Yes", "No"], "modal");
474         if answer == 1 then
475             idle.reset = %t;
476             idle.quit = %t;
477         end
478     end
479 endfunction
480
481 function c = idle_dice_upgrade_cost(x)
482     global idle;
483
484     m = idle.multiplier;
485     d = idle.dices(x);
486
487     //propagation of the round error is voluntary
488     c = sum(round(d.base * d.cost ** (d.level : min(d.level + m-1, 100))));
489 endfunction
490
491 function idle_update_dice(x)
492     global idle;
493
494     if idle.dices(x).enable == %f && idle.dices(x).level > 0 then
495         idle.dices(x).enable = %t;
496         //show image and 3rd label
497         set(sprintf("image_%d", x), "visible", "on");
498         set(sprintf("label_3_%d", x), "visible", "on");
499     end
500
501     idle_update_dices_price();
502
503     set(sprintf("label_1_%d", x), "string", sprintf("Level: %d", idle.dices(x).level));
504     set(sprintf("label_2_%d", x), "string", sprintf("Mult: %d", idle.dices(x).mult));
505
506     idle_check_dice_price();
507 endfunction
508
509 function idle_update_dices_price()
510     global idle;
511
512     set("idle_btn_multi", "string", sprintf("x %d", idle.multiplier));
513
514     for i = 1:idle.dice
515         st = idle.dices(i);
516         tag = sprintf("btn_%d", i);
517         if get(tag) <> [] then
518             if st.level >= 100 then
519                 set(sprintf("btn_%d", i), "string", "MAX");
520             else
521                 //update price to new level
522                 price = idle_dice_upgrade_cost(i);
523                 set(sprintf("btn_%d", i), "string", formatEng(price));
524             end
525         end
526     end
527 endfunction
528
529 function str = formatEng(x)
530     if x == 0 then
531         str = "0";
532         return;
533     end
534
535     e = 6 * floor(log10(x) / 6);
536     if e then
537         y = x / (10 ^ e);
538         str = sprintf("%.3fe%d", y, e)
539     else
540         str = sprintf("%0.f", x);
541     end
542 endfunction
543
544 function [g, msg] = idle_roll_gain(r)
545     g = 1;
546     rsort = gsort(r, "c", "i");
547     [a, b, c] = unique(rsort);
548     c = gsort(c);
549     s = length(rsort);
550
551     if s >= 5 && c(1) == 5 then
552         g = 500;
553         msg = "FIVE !"
554     elseif s >= 4 && c(1) == 4 then
555         g = 100;
556         msg = "Four"
557     elseif s == 5 && c(1) == 3 && c(2) == 2 then
558         g = 50;
559         msg = "Fullhouse"
560     elseif s == 5 && (rsort == 1:5 || rsort == 2:6) then
561         g = 40;
562         msg = "Straight"
563     elseif s >= 3 && c(1) == 3 then
564         g = 20;
565         msg = "Three"
566     elseif s >= 4 && c(1) == 2 && c(2) == 2 then
567         g = 10;
568         msg = "Two pair"
569     elseif s >= 2 && c(1) == 2 then
570         g = 5;
571         msg = "One pair"
572     else
573         g = 1;
574         msg = ""
575     end
576
577     msg = sprintf("%s x%d", msg, g);
578 endfunction
579
580 function idle_check_dice_price()
581     global idle;
582     for i = 1:idle.dice
583         tag = sprintf("btn_%d", i);
584         if get(tag) == [] then
585             return;
586         end
587         if idle.dices(i).level >= 100 then
588             set(tag, "foregroundcolor", [0 0.5 0]);
589             set(tag, "backgroundcolor", [0.95 0.95 0.95]);
590                 set(tag, "fontweight", "bold");
591             set(tag, "enable", "off");
592         else
593             if idle.gain >= idle_dice_upgrade_cost(i) then
594                 set(tag, "foregroundcolor", [0 0.5 0]);
595                 set(tag, "backgroundcolor", [1 1 1]);
596                 set(tag, "fontweight", "bold");
597                 set(tag, "enable", "on");
598             else
599                 set(tag, "foregroundcolor", [0.75 0 0]);
600                 set(tag, "backgroundcolor", [0.95 0.95 0.95]);
601                 set(tag, "fontweight", "normal");
602                 set(tag, "enable", "off");
603             end
604         end
605     end
606 endfunction
607
608 function idle_roll()
609     global idle;
610
611     set("idle_roll", "enable", "off");
612     set("roll_msg", "string", "");
613     set("roll_gain", "string", "");
614
615     dice = 0;
616     for i = 1:idle.dice
617         if idle.dices(i).enable
618             set(sprintf("label_3_%d", i), "string", "");
619             dice = dice + 1;
620         end
621     end
622
623     global idle;
624     roll_image = 6;
625     r = int(rand(roll_image, dice) * 6) + 1;
626
627     for i = 1:roll_image
628         for j = 1:idle.dice
629             if idle.dices(j).enable then
630                 set(sprintf("image_%d", j), "string", fullfile(idle.path, "images", sprintf("dice-%d.png", r(i, j))));
631             end
632         end
633
634         sleep(50);
635     end
636
637     //keep only last roll
638     r = r($, :);
639     [gain, msg] = idle_roll_gain(r);
640     set("roll_msg", "string", msg);
641
642     s = 0;
643     for i = 1:idle.dice
644         if idle.dices(i).enable then
645             s1 = idle.dices(i).mult * r(i);
646             set(sprintf("label_3_%d", i), "string", formatEng(s1));
647             s = s + s1;
648         end
649     end
650
651     total = s * gain;
652     msg_gain = sprintf("%s x %d = %s", formatEng(s), gain, formatEng(total));
653     set("roll_gain", "string", msg_gain);
654     set("idle_roll", "enable", "on");
655
656     idle.gain = idle.gain + total;
657     idle.cumul_gain = idle.cumul_gain + total;
658
659     idle_add_history(r, total);
660     set("idle_total", "string", formatEng(idle.gain));
661
662     idle_check_dice_price();
663 endfunction
664
665 function idle_add_history(h, val)
666     global idle;
667
668     if length(h) < 5 then
669         h(5) = 0;
670     end
671
672     h($+1) = val;
673
674     idle.history($ + 1, :) = h;
675     //keep the 100 last entries
676     idle.history(1:$-100, :) = [];
677 endfunction
678
679 function idle_show_help()
680     msg = ["Welcome in ""Game of Dice""";
681            ""
682            "This demo is used to show the capabilities of";
683            "`uicontrols` and their callbacks";
684            ""
685            "Goal: ";
686            "-  Reach level 100 for each of the 5 dices";
687            ""
688            "Info: ";
689            "After the first purchase, the game can roll alone.";
690            "but you can anticipate the draw by clicking on ""Roll !""";
691            ];
692            
693     messagebox(msg, "Game of Dice", "info", "modal");
694 endfunction
695
696 //almost like a game event loop
697 //manage events from callback or timer
698 function idle_event_loop()
699     global idle;
700
701     printf("\nThe Scilab console cannot be used during the game.\n");
702
703     while idle.quit == %f
704         action = idle.action;
705         idle.action = struct("type", []);
706         
707         select(action.type)
708         case "roll"
709             set("idle_progress", "position", [2 2 0 20]);
710             idle_roll();
711
712             idle_refresh_history();
713             tic();
714         case "upgrade"
715             dice = action.dice;
716             idle_buy(dice);
717         case "history"
718             idle_show_history();
719             idle_refresh_history();
720         case "multiplier"
721             select(idle.multiplier)
722             case 1
723                 idle.multiplier = 10;
724             case 10
725                 idle.multiplier = 100;
726             case 100
727                 idle.multiplier = 1;
728             end
729
730             idle_update_dices_price();
731             idle_check_dice_price();
732         case "help"
733             idle_show_help();
734         end
735         
736         if idle.autoroll then
737             t = toc();
738             p = round((t / 5) * 100);
739             if p >= 100 then
740                 idle.action.type = "roll";
741                 set("idle_progress", "position", [2 2 0 20]);
742                 set("idle_progress", "backgroundcolor", idle.colors(1, :));
743                 tic();
744             else
745                 set("idle_progress", "position", [2 2 p 20]);
746                 set("idle_progress", "backgroundcolor", idle.colors(round(p / 5)+1, :));
747             end
748         end
749
750         //relax CPU
751         sleep(10);
752     end
753     
754     idle.time = getdate("s");
755     //to allow restart
756     idle.quit = %f;
757     //close window
758     close(get("idle_fig"));
759 endfunction
760
761 function idle_save()
762     global idle;
763     save(fullfile(SCIHOME, "idle.sod"), "idle");
764 endfunction
765
766 function idle_hardreset()
767     deletefile(fullfile(SCIHOME, "idle.sod"));
768 endfunction
769
770 clc;
771 global idle;
772 idle_gui();
773 if idle.first_run then
774     idle_show_help();
775     idle.first_run = %f;
776 end
777
778 idle_event_loop();
779
780 global idle;
781 if idle.reset == %t then
782     idle_hardreset();
783 else
784     idle_save();
785 end
786
787 clearglobal idle;
788 clear idle;
789 clear idle_create_button;
790 clear idle_show_history;
791 clear idle_refresh_history;
792 clear idle_show_autoroll;
793 clear idle_dice_gui;
794 clear idle_move_dice;
795 clear idle_buy;
796 clear idle_update_dice;
797 clear idle_dice_upgrade_cost;
798 clear idle_update_dices_price;
799 clear formatEng;
800 clear idle_roll_gain;
801 clear idle_check_dice_price;
802 clear idle_roll;
803 clear idle_add_history;
804 clear idle_event_loop;
805 clear idle_save;
806 clear idle_gui;
807 clear idle_show_help;
808 clear idle_hardreset;