Advertisement
Guest User

Save Created Games

a guest
Dec 27th, 2016
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        Save Created Games
  3. // @namespace   ttacreategame
  4. // @description Save games under Create Game
  5. // @include     http://www.ttadvance.ca/creategame.php
  6. // @author      Triad Freak
  7. // @version     0.6
  8. // @grant       none
  9. // ==/UserScript==
  10.  
  11. function loadSavedGames(){
  12.   var sg = localStorage.getItem('savedGames');
  13.   if(sg===null) sg = '[]';
  14.   return JSON.parse(sg);
  15. }
  16.  
  17. function saveSavedGames(sg){
  18.   localStorage.setItem('savedGames', JSON.stringify(sg));
  19.   location.reload();
  20. }
  21.  
  22. function addSeparators(n){
  23.   var i, str = '';
  24.   for(i=0; i<n; i++) str += String.fromCharCode(160);
  25.   maintp.appendChild(document.createTextNode(str));
  26. }
  27.  
  28. function addBrs(n){
  29.   for(var i=0; i<n; i++) maintp.appendChild(document.createElement('br'));
  30. }
  31.  
  32. function createForm(action, method){
  33.   var form = document.createElement('form');
  34.   form.setAttribute('action', action);
  35.   form.setAttribute('method', method);
  36.   form.setAttribute('style', 'display: inline-block;');
  37.   return form;
  38. }
  39.  
  40. function createInput(type, name, value){
  41.   var input = document.createElement('input');
  42.   input.setAttribute('type', type);
  43.   input.setAttribute('name', name);
  44.   input.setAttribute('value', value);
  45.   return input;
  46. }
  47.  
  48. function addInputExtra(id, placeholder, input){
  49.   input.setAttribute('id', id);
  50.   input.setAttribute('placeholder', placeholder);
  51.   return input;
  52. }
  53.  
  54. function decorateButton(button){
  55.   button.setAttribute('style', 'border: #990000; border-style: solid; borde' +
  56.     'r-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; b' +
  57.     'order-left-width: 1px ; color: #FFFFFF; background-color: #CC0000');
  58.   return button;
  59. }
  60.  
  61. function getMainForm(){
  62.   var i, forms = document.getElementsByTagName('form');
  63.   for(i=0; i<forms.length; i++)
  64.     if(forms[i].getAttribute('action')==='create.php') return forms[i];
  65.   return null;
  66. }
  67.  
  68. function getMainFormO(name){
  69.   var i, f = {}, c = mainf.getElementsByTagName('input');
  70.   f.name = name;
  71.   for(i=0; i<c.length; i++) if(c[i].checked) f[c[i].name] = c[i].value;
  72.   return f;
  73. }
  74.  
  75. function saveRuleSet(id){
  76.   var sg = loadSavedGames();
  77.   if(id==-1) sg.push(getMainFormO(document.getElementById('rs-1').value));
  78.   else sg[id] = getMainFormO(sg[id].name);
  79.   saveSavedGames(sg);
  80. }
  81.  
  82. function addNewRuleSet(){
  83.   var e = addInputExtra('rs-1', 'name', createInput('text', '', ''));
  84.   maintp.appendChild(e);
  85.   addSeparators(1);
  86.   e = decorateButton(createInput('button', '', 'add new'));
  87.   e.addEventListener('click', function(){saveRuleSet(-1)}, true);
  88.   maintp.appendChild(e);
  89. }
  90.  
  91. function clearAllRuleSets(){
  92.   if(!window.confirm('Clear all rule sets?')) return;
  93.   localStorage.setItem('savedGames', '[]');
  94.   location.reload();
  95. }
  96.  
  97. function addClearAllButton(){
  98.   var e = decorateButton(createInput('button', '', 'clear all'));
  99.   e.addEventListener('click', clearAllRuleSets, true);
  100.   maintp.appendChild(e);
  101. }
  102.  
  103. function addRuleSetForm(r){
  104.   var k, f = createForm('create.php', 'post');
  105.   for(k in r) if(k!=='name') f.appendChild(createInput('hidden', k, r[k]));
  106.   f.appendChild(decorateButton(createInput('submit', '', r['name'])));
  107.   maintp.appendChild(f);
  108. }
  109.  
  110. function delRuleSet(id){
  111.   var sg = loadSavedGames();
  112.   sg.splice(id, 1);
  113.   saveSavedGames(sg);
  114. }
  115.  
  116. function addRuleSetDelete(id){
  117.   var e = decorateButton(createInput('button', '', 'delete'));
  118.   e.addEventListener('click', function(){delRuleSet(id);}, true);
  119.   maintp.appendChild(e);
  120. }
  121.  
  122. function addRuleSetAssign(id){
  123.   var e = decorateButton(createInput('button', '', 'assign'));
  124.   e.addEventListener('click', function(){saveRuleSet(id);}, true);
  125.   maintp.appendChild(e);
  126. }
  127.  
  128. function viewRuleSet(id){
  129.   var sg = loadSavedGames();
  130.   if(sg.length<=id) return;
  131.   var i, f = sg[id], c = mainf.getElementsByTagName('input');
  132.   for(i=0; i<c.length; i++){
  133.     if(typeof f[c[i].name] !== "undefined" && f[c[i].name] == c[i].value)
  134.       c[i].checked = true;
  135.     else c[i].checked = false;
  136.   }
  137. }
  138.  
  139. function addRuleSetView(id){
  140.   var e = decorateButton(createInput('button', '', 'view'));
  141.   e.addEventListener('click', function(){viewRuleSet(id);}, true);
  142.   maintp.appendChild(e);
  143. }
  144.  
  145. function changeRuleSetName(id){
  146.   var sg = loadSavedGames();
  147.   if(sg.length<=id) return;
  148.   sg[id].name = document.getElementById('rsn'+id).value;
  149.   saveSavedGames(sg);
  150. }
  151.  
  152. function addRuleSetChangeName(id){
  153.   var e = addInputExtra('rsn'+id, 'new name', createInput('text', '', ''));
  154.   maintp.appendChild(e);
  155.   addSeparators(1);
  156.   e = decorateButton(createInput('button', '', 'change name'));
  157.   e.addEventListener('click', function(){changeRuleSetName(id);}, true);
  158.   maintp.appendChild(e);
  159. }
  160.  
  161. function viewSavedRuleSets(){
  162.   var sg = loadSavedGames();
  163.   for(var i=0; i<sg.length; i++){
  164.     addBrs(1);
  165.     addRuleSetForm(sg[i]);
  166.     addSeparators(2);
  167.     addRuleSetChangeName(i);
  168.     addSeparators(2);
  169.     addRuleSetAssign(i);
  170.     addSeparators(2);
  171.     addRuleSetView(i);
  172.     addSeparators(2);
  173.     addRuleSetDelete(i);
  174.   }
  175. }
  176.  
  177. var mainf = getMainForm();
  178. var maint = document.getElementById('Main');
  179. if(mainf!==null && maintp!==null){
  180.   var maintp = maint.parentElement;
  181.   addBrs(1);
  182.   addNewRuleSet();
  183.   addSeparators(2);
  184.   addClearAllButton();
  185.   addBrs(1);
  186.   viewSavedRuleSets();
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement