ui.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. pkt.portNum = getRemotePort(src, dst);
  23. tween.to({x: devices[dst].sprite.centerX - 16, y: devices[dst].sprite.centerY - 16}, 3000, Phaser.Easing.Sinusoidal.InOut);
  24. tween.onComplete.add(donePacket, pkt);
  25. tween.start();
  26. }
  27. function createLaunchers() {
  28. grpLaunchers.callAll('kill');
  29. grpLaunchers.destroy(true);
  30. grpLaunchers = game.add.group();
  31. for (var i = 0; i < playerPackets.length; i++) {
  32. var edit = grpLaunchers.add( game.add.button(20, 120 + i * 60, 'edit', btnEdit) );
  33. edit.launcherIndex = i;
  34. var launch = grpLaunchers.add( game.add.button(80, 120 + i * 60, 'launch', btnLaunch) );
  35. launch.launcherIndex = i;
  36. }
  37. grpLaunchers.add( game.add.button(20, 135 + 60 * playerPackets.length, 'add', btnAdd) );
  38. }
  39. function createPacketEditor(index, packet) {
  40. var str = "Sent from: <select id=\"pktFrom\">";
  41. for (var i = 0; i < level.devices.length; i++) {
  42. if (level.devices[i].player) {
  43. str += "<option"+(packet.from == level.devices[i].id ? " selected" : "")+">"+level.devices[i].id+"</option>";
  44. }
  45. }
  46. str += "</select><br>";
  47. for (var i = 0; i < packetFields.length; i++) {
  48. str += "<fieldset><legend>"+packetFields[i].layer+"</legend>";
  49. for (var j = 0; j < packetFields[i].fields.length; j++) {
  50. 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>";
  51. }
  52. str += "</fieldset>";
  53. }
  54. str += "<p>Repeat: <input type=\"text\" id=\"repeat\" style=\"width:40px;\" value=\""+(packet.hasOwnProperty("repeat") ? packet.repeat : 1)+"\"></p>";
  55. $("#editor").html(str);
  56. $('#editor').dialog({
  57. title: index < 0 ? "Add packet" : "Update packet",
  58. resizable:false,
  59. buttons:[
  60. { text: "Remove", click:function() { deletePlayerPacket(index); createLaunchers(); $(this).dialog("close"); }},
  61. { text: index < 0 ? "Add" : "Update", click:function() { updatePlayerPacket(index < 0 ? playerPackets.length : index); createLaunchers(); $(this).dialog("close");}}
  62. ]
  63. });
  64. $('select').selectmenu();
  65. $('#editor').show();
  66. }
  67. function deletePlayerPacket(index) {
  68. playerPackets.splice(index, 1);
  69. savePlayerPackets();
  70. }
  71. function updatePlayerPacket(index) {
  72. playerPackets[index] = {
  73. from: $("#pktFrom").val(),
  74. repeat: $("#repeat").val(),
  75. payload:{}
  76. };
  77. for (var i = 0; i < packetFields.length; i++) {
  78. playerPackets[index].payload[packetFields[i].layer] = {};
  79. for (var j = 0; j < packetFields[i].fields.length; j++) {
  80. var val = $("#"+packetFields[i].layer+"_"+packetFields[i].fields[j]).val();
  81. if (val != "") {
  82. playerPackets[index].payload[packetFields[i].layer][ packetFields[i].fields[j] ] = val;
  83. }
  84. }
  85. }
  86. savePlayerPackets();
  87. }
  88. function payloadStr(packet, layer, field) {
  89. return packet.hasOwnProperty("payload") && packet.payload.hasOwnProperty(layer) && packet.payload[layer].hasOwnProperty(field) ? packet.payload[layer][field] : "";
  90. }
  91. function savePlayerPackets() {
  92. $.post("./solns.ajax.php?level="+levelid+"&method=save", {
  93. json:JSON.stringify(playerPackets)
  94. });
  95. }
  96. function loadPlayerPackets() {
  97. $.getJSON("./solns.ajax.php?level="+levelid+"&method=load").done(function(data){
  98. playerPackets = data;
  99. createLaunchers();
  100. }).fail(function(jxr, txt, err) {
  101. console.log("lPP fail: "+txt+", "+err);
  102. });
  103. }