44
44
var /current_menu = null // we are keeping both systems of schematics for the sake of backwards compatability
45
45
var /list /datum/rcd_scematic_grouping/schem_groups = null
46
46
var /datum /rcd_grouped_schematic/selected_schem = null
47
+ var /list /client/loaded_clients = null // store a list of clients who have loaded all the images, so we can skip trying to send it to them.
47
48
48
49
49
50
52
53
53
54
schem_groups= new ()
54
55
settings= new ()
56
+ loaded_clients= new ()
55
57
56
58
// interface gets created BEFORE the schematics get created, so they can modify the HEAD content (RPD pipe colour picker).
57
59
interface = new (src , sanitize(name))
380
382
/ datum / rcd_schematic/ con_airlock,
381
383
/ datum / rcd_schematic/ con_window,
382
384
)
383
- current_menu= " deconstruct"
384
385
385
-
386
- / obj / item/ device/ rcd/ mech/ New()
387
- . = .. ()
388
- rcd_list += src
389
-
390
- var /datum /rcd_scematic_grouping/destroy/dest_g = new (src )
391
- dest_g. schematics+= new / datum / rcd_grouped_schematic/ destroy_all(src )
392
-
393
- schem_groups+= dest_g
394
- schem_groups+= new / datum / rcd_scematic_grouping/ build_wall/ engi_std(src )
395
- schem_groups+= new / datum / rcd_scematic_grouping/ build_floors/ engi_std(src )
396
- schem_groups+= new / datum / rcd_scematic_grouping/ build_airlock/ engi_std(src )
397
- schem_groups+= new / datum / rcd_scematic_grouping/ build_windows/ engi_std(src )
398
-
399
- current_menu= schem_groups[1 ]?. name
400
- schem_groups[1 ]?. switch_to()
401
-
402
-
403
- / obj / item/ device/ rcd/ mech/ attack_self(var /mob /user )
404
- rebuild_ui ()
405
- interface. show(user)
406
- for (var /datum /rcd_scematic_grouping/schemgroup in schem_groups)
407
- schemgroup. send_assets(user. client)
408
- for (var /datum /rcd_grouped_schematic/sch )
409
- sch. send_assets(user. client)
410
- interface. hide(user) // have to do this since loading so many images takes a lot of time. and no images is better than no UI
411
- interface. show(user)
412
-
413
-
414
- / obj / item/ device/ rcd/ mech/ Topic(var /href , var /list /href_list )
415
- // for(var/i in href_list)
416
- // world.log << "[i] = [href_list[i]]"
417
-
418
- if (href_list[" set_group" ])
419
- for (var /datum /rcd_scematic_grouping/schem_group in schem_groups)
420
- if (schem_group. name== href_list[" set_group" ])
421
- current_menu= href_list[" set_group" ]
422
- schem_group. switch_to()
423
- do_spark ()
424
- rebuild_ui ()
425
- return
426
- if (href_list[" set_schematic" ])
427
- var /datum /rcd_scematic_grouping/group
428
- for (var /datum /rcd_scematic_grouping/schem_group in schem_groups)
429
- if (schem_group. name== current_menu)
430
- group= schem_group
431
- break
432
- if (group)
433
- for (var /datum /rcd_grouped_schematic/schm in group. schematics)
434
- if (schm. name== href_list[" set_schematic" ])
435
- selected_schem= schm
436
- do_spark ()
437
- rebuild_ui ()
438
- break
439
- return
440
- if (href_list[" set_arg" ])
441
- if (href_list[" value_togglelist" ])
442
- var /val = href_list[" value_isnum" ]== " yes" ? text2num(href_list[" value" ]) : href_list[" value" ]
443
- var /found = FALSE
444
- for (var /n in settings[href_list[" set_arg" ]])
445
- if (n== val)
446
- found= TRUE
447
- break
448
- if ( found )
449
- settings[href_list[" set_arg" ]] -= val
450
- else
451
- settings[href_list[" set_arg" ]] += val
452
- else if (href_list[" value_resetlist" ])
453
- settings[href_list[" set_arg" ]]= new / list ()
454
- else if (href_list[" value_toggle" ] )
455
- settings[href_list[" set_arg" ]] = ! settings[href_list[" set_arg" ]]
456
- else if (href_list[" value_input" ])
457
- var /tx = " "
458
- for (var /datum /rcd_scematic_grouping/schem_group in schem_groups)
459
- if (schem_group. name== current_menu)
460
- tx= schem_group. selectiondialogue
461
- break
462
- settings[href_list[" set_arg" ]] = input (usr , tx, src , " [ selected_schem?. name] " )
463
- else
464
- settings[href_list[" set_arg" ]] = href_list[" value_isnum" ]== " yes" ? text2num(href_list[" value" ]) : href_list[" value" ]
465
- rebuild_ui ()
466
- return
467
-
468
- return
469
-
470
- / obj / item/ device/ rcd/ mech/ rebuild_ui()
471
- var /dat = " "
472
386
473
- // that's right, you can embed a stylesheet in the html body, and you better believe i'm going to do this instead of setting up a whole new file for like 2 rules.
474
- dat+= {" <style>
475
- .grouplisting{
476
- text-align:center;
477
- font-size:100%;
478
- }
479
- .grouplisting img {
480
- width:64px;
481
- height:64px;
482
- }
483
-
484
- .grouplisting a{
485
- width:100%;
486
- height:100%;
487
- display:block;
488
- background:revert;
489
- }
490
-
491
- .clickabletable td{
492
- text-align:center;
493
- height:100%; /*to make it so that links inhabit the whole size of the td. kinda annoying to have to do all this.*/
494
- }
495
-
496
- .clickabletable a{
497
- width:100%;
498
- height:100%;
499
- display:block;
500
- }
501
-
502
- img, .clickabletable img, .grouplisting img {
503
- border:none;
504
- background:none;
505
- image-rendering:pixelated;
506
- }
507
-
508
- </style>"}
509
-
510
- dat+= " <table class='grouplisting'><tr>"
511
- for (var /datum /rcd_scematic_grouping/schem_group in schem_groups)
512
- dat+= " <td class='[ schem_group. name== current_menu ? " schem_selected" : " schem" ] '><a href='?src= \ref [ interface] ;set_group= [ schem_group. name] '><img src=' [ schem_group. headerimage] '><br> [ schem_group. name] </a></td>"
513
- dat+= " </tr></table><hr>"
514
-
515
- for (var /datum /rcd_scematic_grouping/schem_group in schem_groups)
516
- if (schem_group. name== current_menu)
517
- var /t = schem_group. generate_html()
518
- dat+= t
519
- break
520
-
521
- interface. updateLayout(dat)
522
-
523
- / obj / item/ device/ rcd/ mech/ afterattack(var /atom /A , var /mob /user )
524
- if (! selected_schem)
525
- return 1
526
- if ( ! (user. Adjacent(A) && A. Adjacent(user)) )
527
- return 1
528
- if (get_dist(A, user) > 1 )
529
- return 1
530
-
531
- var /c = selected_schem. build(A,user)
532
- if (! c)
533
- to_chat (user, " <span class='warning'>\The [ src ] 's error light flickers.</span>" )
534
- else
535
- use_energy (c, user)
536
- rebuild_ui ()
537
- return 1
387
+ / obj / item/ device/ rcd/ mech/ attack_self(var /mob /living/user )
388
+ if (! selected || user. shown_schematics_background || ! selected. show(user))
389
+ user. hud_used. toggle_show_schematics_display(schematics[" Construction" ], 0 , src )
0 commit comments