libdo

Untitled

Sep 14th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. os.loadAPI("/tcg/fw")
  2.  
  3. cards = {fw.newCard("", "", "noimage")}
  4. selectedCard = 1
  5.  
  6. function paintimage(card, path, imagebackgroundcolor)
  7.     if imagebackgroundcolor then
  8.         local file = io.open("/tcg/cards/images/"..path, "w")
  9.         if file then
  10.             local c = imagebackgroundcolor
  11.             for i = 1, fw.imageH do
  12.                 local line = ""
  13.                 for q = 1, fw.imageW do
  14.                     line = line..c
  15.                 end
  16.                 file:write(string.sub(line, 1, fw.imageW).."\n")
  17.             end
  18.             file:close()
  19.         end
  20.     end
  21.  
  22.     shell.run("paint", "/tcg/cards/images/"..path)
  23.     card.image = path
  24.     return card
  25. end
  26.  
  27. function editfunc(name)
  28.     if not fs.exists("/tcg/cards/scripts/"..name) then
  29.         local file = io.open("/tcg/cards/scripts/"..name, "w")
  30.         if file then
  31.             file:write("--[[\n")
  32.             file:write("\"action\" is fired when the card is put down on a deck\n")
  33.             file:write("arguments:\n")
  34.             file:write("1: the card table\n")
  35.             file:write("2: deck on which the card was played\n")
  36.             file:write("3: the game table, contains the deck tables\n")
  37.             file:write("\n")
  38.             file:write("\"update\" is fired when the card is updated\n")
  39.             file:write("arguments:\n")
  40.             file:write("1: the card table\n")
  41.             file:write("2: event\n")
  42.             file:write("3: event var 1\n")
  43.             file:write("4: event var 2\n")
  44.             file:write("5: event var 3\n")
  45.             file:write("6: the game table, contains the deck tables\n")
  46.             file:write("]]")
  47.             file:write("\n")
  48.             file:write("function action(self, deck, game)\n")
  49.             file:write("end\n")
  50.             file:write("\n")
  51.             file:write("function update(self, event, var1, var2, var3, game)\n")
  52.             file:write("end\n")
  53.             file:close()
  54.         end
  55.     end
  56.     shell.run("edit", "/tcg/cards/scripts/"..name)
  57. end
  58.  
  59. function delcard()
  60.     if #cards>1 then
  61.         table.remove(cards, selectedCard)
  62.         if not cards[selectedCard] then
  63.             if cards[selectedCard+1] then
  64.                 selectedCard = selectedCard+1
  65.             else
  66.                 selectedCard = selectedCard-1
  67.             end
  68.         end
  69.     end
  70. end
  71.  
  72. function loadCard()
  73.     input = fw.text(
  74.         "filename",
  75.         function(name)
  76.             local loaded = fw.loadCard("/saves/"..name)
  77.             if loaded then cards[selectedCard] = loaded end
  78.         end
  79.     )
  80. end
  81.  
  82. function copycard()
  83.     local card = cards[selectedCard]
  84.     table.insert(
  85.         cards,
  86.         fw.newCard(
  87.             card.title,
  88.             card.description,
  89.             card.image
  90.         )
  91.     )
  92.     selectedCard = #cards
  93. end
  94.  
  95. function newcard()
  96.     cards[#cards+1] = fw.newCard("", "", "noimage")
  97.     selectedCard=#cards
  98. end
  99.  
  100. function initelements()
  101.     elements = {
  102.         title = fw.button(
  103.             fw.cardX+1, fw.cardY+1, fw.cardW-2, 1, "title",
  104.             "blue", "blue",
  105.             change.title,
  106.             true
  107.         ),
  108.         description = fw.button(
  109.             fw.cardX+1, fw.cardY+fw.cardH-4, fw.imageW, 3, "description",
  110.             "blue", "blue",
  111.             change.description,
  112.             true
  113.         ),
  114.         image = fw.button(
  115.             fw.cardX+1, fw.cardY+3, fw.imageW, fw.imageH, "image",
  116.             "blue", "blue",
  117.             change.image,
  118.             true
  119.         ),
  120.         newimage = fw.button(
  121.             fw.cardX+1, fw.cardY+3, fw.imageW, fw.imageH, "paint",
  122.             "blue", "blue",
  123.             change.newimage,
  124.             true,
  125.             2
  126.         ),
  127.         save = fw.button(
  128.             11, fw.winH-2, nil, 2, "save card",
  129.             "green", "lime",
  130.             function()
  131.                 fw.saveCard(card, "saves/"..card.title)
  132.             end
  133.         ),
  134.         savedeck = fw.button(
  135.             11, fw.winH, nil, 1, "save deck",
  136.             "lime", "green",
  137.             function()
  138.                 input = fw.text(
  139.                     "filename",
  140.                     function(name)
  141.                         fw.saveCard(cards, "packs/"..name)
  142.                     end
  143.                 )
  144.             end
  145.         ),
  146.         load = fw.button(
  147.             1, fw.winH-2, 9, 1, "load card",
  148.             "blue", "lightBlue",
  149.             loadCard
  150.         ),
  151.         loaddeck = fw.button(
  152.             1, fw.winH-1, 9, 1, "load deck",
  153.             "lightBlue", "blue",
  154.             function()
  155.                 input = fw.text(
  156.                     "filename",
  157.                     function(name)
  158.                         loaded = fw.loadCard("packs/"..name)
  159.                         if loaded then cards = loaded end
  160.                         selectedCard = math.ceil(#cards/2)
  161.                     end
  162.                 )
  163.             end
  164.         ),
  165.         whatload = fw.button(
  166.             1, fw.winH, 9, 1, "cards",
  167.             "cyan", "blue",
  168.             function()
  169.                 term.setBackgroundColor(colors.lightGray)
  170.                 term.clear()
  171.                 paintutils.drawFilledBox(1, 1, fw.winW, 3, colors.cyan)
  172.                 paintutils.drawFilledBox(1, fw.winH-3, fw.winW, fw.winH, colors.cyan)
  173.                 term.setTextColor(colors.white)
  174.                 term.setCursorPos(1, 2)
  175.                 textutils.slowWrite("These Cards are aviable to be loaded in the editor:", 220)
  176.                 term.setCursorPos(1, 6)
  177.                 term.setBackgroundColor(colors.lightGray)
  178.                 textutils.pagedTabulate(fs.list("/tcg/cards/saves"))
  179.                 term.setTextColor(colors.white)
  180.                 term.setCursorPos(1, fw.winH-1)
  181.                 term.setBackgroundColor(colors.cyan)
  182.                 print("Press any key to get back to the editor!")
  183.                 os.pullEvent("key")
  184.             end
  185.         ),
  186.         delete = fw.button(
  187.             23, fw.winH-2, 8, 2, "delete",
  188.             "red", "orange",
  189.             delcard
  190.         ),
  191.         deletesave = fw.button(
  192.             23, fw.winH, 8, 1, "delsave",
  193.             "orange", "yellow",
  194.             function()
  195.                 input = fw.text(
  196.                     "cardname",
  197.                     function(name)
  198.                         input2 = fw.text(
  199.                             "delete"..name.."?!",
  200.                             function(name)
  201.                                 if name == "yes" or name=="y" or name == "Yes" or name == "ja" then
  202.                                     fs.delete("/tcg/cards/saves/"..name)
  203.                                 end
  204.                             end
  205.                         )
  206.                     end
  207.                 )
  208.                 input = input2
  209.             end
  210.         ),
  211.         new = fw.button(
  212.             32, fw.winH-2, 5, 2, "new",
  213.             "gray", "lightGray",
  214.             newcard
  215.         ),
  216.         copy = fw.button(
  217.             32, fw.winH, 5, 1, "copy",
  218.             "lightGray", "gray",
  219.             function()
  220.                 cards[#cards+1] = fw.newCard("", "", "noimage")
  221.                 selectedCard=#cards
  222.             end
  223.         ),
  224.         exit = fw.button(
  225.             38, fw.winH-2, nil, 3, "exit",
  226.             "yellow", "orange",
  227.             function()
  228.                 os.unloadAPI(fw)
  229.                 fw.exit()
  230.             end
  231.         ),
  232.         script = fw.button(
  233.             45, fw.winH-2, nil, 3, "script",
  234.             "white", "lightGray",
  235.             function()
  236.                 if not card.script then
  237.                     input = fw.text(
  238.                         "filename",
  239.                         function(name)
  240.                             card.script = name
  241.                             editfunc(name)
  242.                         end
  243.                     )
  244.                 else
  245.                     editfunc(card.script)
  246.                 end
  247.             end
  248.         ),
  249.         right = fw.button(
  250.             fw.cardX+fw.cardW+1, fw.cardY, fw.sideCards*fw.cardW, 12, ">",
  251.             "blue", "blue",
  252.             function()
  253.                     if cards[selectedCard+1] then
  254.                         selectedCard = selectedCard+1
  255.                     end
  256.             end,
  257.             true
  258.         ),
  259.         left = fw.button(
  260.             fw.cardX-fw.sideCards*fw.cardW-fw.cardW+5, fw.cardY, fw.sideCards*fw.cardW+5, 12, "<",
  261.             "blue", "blue",
  262.             function()
  263.                 if cards[selectedCard-1] then
  264.                     selectedCard = selectedCard-1
  265.                 end
  266.             end,
  267.             true
  268.         ),
  269.         help = fw.button(
  270.             fw.winW-1, 2, 2, 2, "??",
  271.             "green", "lime",
  272.             function()
  273.                 if fs.exists("/tcg/editor/manual") then
  274.                     local id = multishell.launch({}, "/tcg/editor/manual")
  275.                     multishell.setFocus(id)
  276.                 end
  277.             end
  278.         )
  279.     }
  280. end
  281.  
  282. change = {
  283.     title = function()
  284.         input = fw.text(
  285.             "insert title",
  286.             function(name)
  287.                 card.title = name
  288.             end,
  289.             card.title
  290.         )
  291.     end,
  292.     description = function()
  293.         input = fw.text(
  294.             "insert description",
  295.             function(name)
  296.                 card.description = name
  297.             end,
  298.             card.description
  299.         )
  300.     end,
  301.     image = function()
  302.         input = fw.text(
  303.             "insert filename",
  304.             function(name)
  305.                 if fs.exists("/tcg/cards/images/"..name) and #name>0 then
  306.                     card.image = name
  307.                     cardimage = paintutils.loadImage(card.image)
  308.                 end
  309.             end,
  310.             card.image
  311.         )
  312.     end,
  313.     newimage = function(name)
  314.         if card.image == "noimage" then
  315.             input = fw.text(
  316.                 "image name",
  317.                 function(name)
  318.                     paintpath = name
  319.                     if #paintpath>0 then
  320.                         if fs.exists("/tcg/cards/images/"..paintpath) then
  321.                             card = paintimage(card, paintpath)
  322.                         else
  323.                             input2 = fw.text(
  324.                                 "color code",
  325.                                 function(col)
  326.                                     card = paintimage(card, paintpath, col)
  327.                                 end
  328.                             )
  329.                         end
  330.                     end
  331.                 end
  332.             )
  333.         else
  334.             paintimage(card, card.image)
  335.         end
  336.     end
  337. }
  338.  
  339. while true do
  340.     --draw stuff
  341.     fw.winW, fw.winH = term.getSize()
  342.     initelements()
  343.     local textinput = {inp = input, inp2 = input2}
  344.     card = cards[selectedCard]
  345.     fw.draw(elements, "black")
  346.     term.setBackgroundColor(colors.gray)
  347.     paintutils.drawLine(1, 1, fw.winW, 1)
  348.     term.setTextColor(colors.white)
  349.     term.setCursorPos(1, 1)
  350.     print("Editing '"..card.title.."', card number: "..selectedCard)
  351.  
  352.     for i = -4, 0 do
  353.         if cards[selectedCard+i] then
  354.             fw.drawCard(fw.cardX+5*i, fw.cardY-1*i/2, cards[selectedCard+i])
  355.         end
  356.     end
  357.     for i = -4, 0 do
  358.         if cards[selectedCard-i] then
  359.             fw.drawCard(fw.cardX-5*i, fw.cardY-1*i/2, cards[selectedCard-i])
  360.         end
  361.     end
  362.     fw.drawCard(fw.cardX, fw.cardY, card)
  363.  
  364.     term.setCursorPos(fw.winW-15, 1)
  365.     term.blit("0123456789abcdef", "8ea91da87b297517", "0123456789abcdef")
  366.  
  367.     fw.draw(textinput)
  368.  
  369.     --update fw
  370.     local event, var1, var2, var3 = os.pullEventRaw()
  371.     if event == "key" and input.title == "" then
  372.         if var1 == keys.right then
  373.             if selectedCard~=#cards then selectedCard=selectedCard+1 end
  374.         elseif var1 == keys.left then
  375.             if selectedCard~=1 then selectedCard=selectedCard-1 end
  376.         elseif var1 == keys.up then
  377.             change.title()
  378.         elseif var1 == keys.down then
  379.             change.description()
  380.         elseif var1 == keys.s then
  381.             fw.saveCard(card, "saves/"..card.title)
  382.         elseif var1 == keys.backspace or var1 == keys.d or var1 == keys.delete then
  383.             delcard()
  384.         elseif var1 == keys.c then
  385.             copycard()
  386.         elseif var1 == keys.l then
  387.             loadCard()
  388.         elseif var1 == keys.e then
  389.             fw.exit()
  390.         elseif var1 == keys.n then
  391.             newcard()
  392.         end
  393.     end
  394.     fw.update(textinput, event, var1, var2, var3)
  395.     fw.update(elements, event, var1, var2, var3)
  396.     if not textinput.inp then
  397.         input = fw.button(1, 1, 1, 1, "", nil, nil, nil, true)
  398.     end
  399.     if not textinput.inp2 then
  400.         input2 = fw.button(1, 1, 1, 1, "", nil, nil, nil, true)
  401.     end
  402. end
Add Comment
Please, Sign In to add comment