ui.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. $(document).ready(function(){
  2. /* todo: this seems to cause noticeable lag but would be really nice to have
  3. $(window).on('resize orientationChange', function(e) {
  4. //game.scale.setGameSize($(window).width(), $(window).height());
  5. $('#pane').css('left', ($(window).width() * 0.7) + 'px');
  6. $('#pane').css('width', ($(window).width() * 0.3 - 40) + 'px');
  7. $('#pane').css('height', ($(window).height() - 40) + 'px');
  8. });*/
  9. $('[name="username"]').focus();
  10. $('[type="button"]').button();
  11. });
  12. function sendPacket(src, portnum, payload) {
  13. doPacketAnimation(src, getPortRecipient(src, portnum), payload);
  14. }
  15. function doPacketAnimation(src, dst, payload) {
  16. var pkt = grpPackets.create(devices[src].sprite.centerX - 16, devices[src].sprite.centerY - 16, 'packet');
  17. pkt.inputEnabled = true;
  18. pkt.events.onInputDown.add(onPacketClick, payload);
  19. var tween = game.add.tween(pkt);
  20. pkt.dst = dst;
  21. pkt.payload = payload;
  22. tween.to({x: devices[dst].sprite.centerX - 16, y: devices[dst].sprite.centerY - 16}, 3000, Phaser.Easing.Sinusoidal.InOut);
  23. tween.onComplete.add(donePacket, pkt);
  24. tween.start();
  25. }
  26. function createLaunchers() {
  27. grpLaunchers.callAll('kill');
  28. grpLaunchers.destroy(true);
  29. grpLaunchers = game.add.group();
  30. for (var i = 0; i < playerPackets.length; i++) {
  31. var edit = grpLaunchers.add( game.add.button(20, 120 + i * 60, 'edit', btnEdit) );
  32. edit.launcherIndex = i;
  33. var launch = grpLaunchers.add( game.add.button(80, 120 + i * 60, 'launch', btnLaunch) );
  34. launch.launcherIndex = i;
  35. }
  36. grpLaunchers.add( game.add.button(20, 135 + 60 * playerPackets.length, 'add', btnAdd) );
  37. }
  38. function createPacketEditor(index, packet) {
  39. var str = "Sent from: <select id=\"pktFrom\">";
  40. for (var i = 0; i < level.devices.length; i++) {
  41. if (level.devices[i].player) {
  42. str += "<option"+(packet.from == level.devices[i].id ? " selected" : "")+">"+level.devices[i].id+"</option>";
  43. }
  44. }
  45. str += "</select><br>";
  46. for (var i = 0; i < packetFields.length; i++) {
  47. str += "<fieldset><legend>"+packetFields[i].layer+"</legend>";
  48. for (var j = 0; j < packetFields[i].fields.length; j++) {
  49. str += packetFields[i].fields[j]+":<br><input type=\"text\" id=\""+packetFields[i].layer+"_"+packetFields[i].fields[j]+"\" value=\""+payloadStr(packet, packetFields[i].layer, packetFields[i].fields[j])+"\"><br>";
  50. }
  51. str += "</fieldset>";
  52. }
  53. $("#editor").html(str);
  54. $('#editor').dialog({
  55. title: index < 0 ? "Add packet" : "Update packet",
  56. resizable:false,
  57. buttons:[{ text: index < 0 ? "Add" : "Update", click:function() { updatePlayerPacket(index < 0 ? playerPackets.length : index); createLaunchers(); $(this).dialog("close");}}]
  58. });
  59. $('select').selectmenu();
  60. $('#editor').show();
  61. }
  62. function updatePlayerPacket(index) {
  63. playerPackets[index] = {
  64. from: $("#pktFrom").val(),
  65. payload:{}
  66. };
  67. for (var i = 0; i < packetFields.length; i++) {
  68. playerPackets[index].payload[packetFields[i].layer] = {};
  69. for (var j = 0; j < packetFields[i].fields.length; j++) {
  70. var val = $("#"+packetFields[i].layer+"_"+packetFields[i].fields[j]).val();
  71. if (val != "") {
  72. playerPackets[index].payload[packetFields[i].layer][ packetFields[i].fields[j] ] = val;
  73. }
  74. }
  75. }
  76. savePlayerPackets();
  77. }
  78. function payloadStr(packet, layer, field) {
  79. return packet.hasOwnProperty("payload") && packet.payload.hasOwnProperty(layer) && packet.payload[layer].hasOwnProperty(field) ? packet.payload[layer][field] : "";
  80. }
  81. function savePlayerPackets() {
  82. $.post("./solns.ajax.php?level="+levelid+"&method=save", {
  83. json:JSON.stringify(playerPackets)
  84. });
  85. }
  86. function loadPlayerPackets() {
  87. $.getJSON("./solns.ajax.php?level="+levelid+"&method=load").done(function(data){
  88. playerPackets = data;
  89. createLaunchers();
  90. }).fail(function(jxr, txt, err) {
  91. console.log("lPP fail: "+txt+", "+err);
  92. });
  93. }