ui.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 doPacketAnimation(src, dst, payload) {
  13. var pkt = grpPackets.create(devices[src].sprite.centerX - 16, devices[src].sprite.centerY - 16, 'packet');
  14. pkt.inputEnabled = true;
  15. pkt.events.onInputDown.add(onPacketClick, payload);
  16. var tween = game.add.tween(pkt);
  17. pkt.dst = dst;
  18. pkt.payload = payload;
  19. tween.to({x: devices[dst].sprite.centerX - 16, y: devices[dst].sprite.centerY - 16}, 3000, Phaser.Easing.Sinusoidal.InOut);
  20. tween.onComplete.add(donePacket, pkt);
  21. tween.start();
  22. }
  23. function createLaunchers() {
  24. grpLaunchers.callAll('kill');
  25. grpLaunchers.destroy(true);
  26. grpLaunchers = game.add.group();
  27. for (var i = 0; i < playerPackets.length; i++) {
  28. var edit = grpLaunchers.add( game.add.button(20, 120 + i * 60, 'edit', btnEdit) );
  29. edit.launcherIndex = i;
  30. var launch = grpLaunchers.add( game.add.button(80, 120 + i * 60, 'launch', btnLaunch) );
  31. launch.launcherIndex = i;
  32. }
  33. grpLaunchers.add( game.add.button(20, 135 + 60 * playerPackets.length, 'add', btnAdd) );
  34. }
  35. function createPacketEditor(index, packet) {
  36. var str = "Sent from: <select id=\"pktFrom\">";
  37. for (var i = 0; i < level.devices.length; i++) {
  38. if (level.devices[i].player) {
  39. str += "<option"+(packet.from == level.devices[i].id ? " selected" : "")+">"+level.devices[i].id+"</option>";
  40. }
  41. }
  42. str += "</select><br><fieldset><legend>Network Layer</legend>";
  43. str += "srcip: <input type=\"text\" id=\"srcip\" value=\""+payloadStr(packet,"network","srcip")+"\"><br>";
  44. str += "dstip: <input type=\"text\" id=\"dstip\" value=\""+payloadStr(packet,"network","dstip")+"\">";
  45. str += `</fieldset>
  46. <fieldset>
  47. <legend>Transport Layer</legend>
  48. payload: <input type=\"text\" id=\"payload\"></input><br>
  49. proto: <input type=\"text\" id=\"other\"></input>
  50. </fieldset>`;
  51. $("#editor").html(str);
  52. $('#editor').dialog({
  53. title: index < 0 ? "Add packet" : "Update packet",
  54. resizable:false,
  55. buttons:[{ text: index < 0 ? "Add" : "Update", click:function() { updatePlayerPacket(index < 0 ? playerPackets.length : index); createLaunchers(); $(this).dialog("close");}}]
  56. });
  57. $('select').selectmenu();
  58. $('#editor').show();
  59. }
  60. function updatePlayerPacket(index) {
  61. playerPackets[index] = {
  62. from: $("#pktFrom").val(),
  63. payload:{
  64. network:{
  65. srcip: $("#srcip").val(),
  66. dstip: $("#dstip").val()
  67. }
  68. }
  69. };
  70. savePlayerPackets();
  71. }
  72. function payloadStr(packet, layer, field) {
  73. return packet.hasOwnProperty("payload") && packet.payload.hasOwnProperty(layer) && packet.payload[layer].hasOwnProperty(field) ? packet.payload[layer][field] : "";
  74. }
  75. function savePlayerPackets() {
  76. $.post("./solns.ajax.php?level="+levelid+"&method=save", {
  77. json:JSON.stringify(playerPackets)
  78. });
  79. }
  80. function loadPlayerPackets() {
  81. $.getJSON("./solns.ajax.php?level="+levelid+"&method=load").done(function(data){
  82. playerPackets = data;
  83. createLaunchers();
  84. }).fail(function(jxr, txt, err) {
  85. console.log("lPP fail: "+txt+", "+err);
  86. });
  87. }