Advertisement
Wihad

OC McWiMa

Apr 16th, 2018
545
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.86 KB | None | 0 0
  1. -- pastebin get -f vCVSNzcP McWiMa
  2. local computer = require("computer")
  3. local event = require("event")
  4. local component=require ("component")
  5. local gpu=component.gpu
  6. local transposer=component.transposer
  7. local screen=component.screen
  8. local screenX, screenY, Ebene, Summe, DrawerSeite, EmeraldSeite
  9. local Menus={}
  10. local Bestellung={}
  11. local Menge={}
  12. local wkX=46            -- welcome x-coord
  13.  
  14. local Preise={
  15. ["Corned Beef Breakfast"]={13,32,2},
  16. ["Korean Dinner"]={12,29,2},
  17. ["Thankful Dinner"]={12,29,2},
  18. ["Meat Feast Pizza"]={12,29,2},
  19. ["Southern Style Breakfast"]={10,24,2}
  20. }
  21. local GP={0.07,0.03,0.5}
  22.  
  23. function hinterGrund()
  24. gpu.setBackground(0x002288)
  25. gpu.setForeground(0xAAFF00)
  26. gpu.fill(1, 1, 96, 30, " ")
  27. gpu.fill(2, 3, 94, 1, "X")
  28. gpu.fill(2, 29, 94, 1, "X")
  29. gpu.fill(2, 3, 1, 26, "X")
  30. gpu.fill(95, 3, 1, 26, "X")
  31. gpu.fill(48, 4, 1, 25, "|")
  32. gpu.setForeground(0xEEAA55)
  33. gpu.set(42,2,"   McWiMa   ")
  34. gpu.setBackground(0xAAAABB)
  35. gpu.set(94,1," x ")
  36. end
  37.  
  38. function willkommen()
  39. gpu.setBackground(0x002288)
  40. gpu.setForeground(0xEEAA55)
  41. gpu.fill(wkX, 30, 7, 1, " ")
  42. wkX=wkX-1
  43. if wkX<-6 then wkX=96 end
  44. gpu.set(wkX,30,"welcome")
  45. end
  46.  
  47. function startSeite()
  48. gpu.setBackground(0x008800)
  49. gpu.setForeground(0xAADDFF)
  50. local Zeile=5
  51. local Spalte=0
  52. for Seite=0,5 do
  53. local isInterface=transposer.getInventoryName(Seite)
  54. if isInterface and string.match(isInterface,"drawer") then DrawerSeite=Seite
  55. elseif isInterface and string.match(isInterface,"interface") then
  56. for Slot=1, transposer.getInventorySize(Seite) do
  57. local Essen=transposer.getStackInSlot(Seite,Slot)
  58. if Essen and string.match(Essen.label,"Emerald") then EmeraldSeite=Seite
  59. elseif Essen and not string.match(Essen.label,"Emerald") then
  60. gpu.fill(4+Spalte*44, Zeile, 43, 2, " ")
  61. gpu.set(5+Spalte*44, Zeile, Essen.label)
  62. table.insert(Menus, Essen.label)
  63. local Preis=Preise[Essen.label][1]*GP[1]+Preise[Essen.label][2]*GP[2]+Preise[Essen.label][3]*GP[3]
  64. gpu.set(41+Spalte*44,Zeile+1,tostring(math.floor((Preis)*10)/10).." €")
  65. Zeile=Zeile+3
  66. if Zeile>27 then Spalte=1 Zeile=5 end
  67. end end end end end
  68.  
  69. function touchKoor(_,_,x,y)
  70.     screenX=x
  71.     screenY=y
  72.     if screenX>93 and screenY<=1 then unterBrochen() print("true") end
  73.     if Ebene==1 then selectMenu()
  74.     elseif Ebene==2 then selectNumber()
  75.     end
  76. end
  77.  
  78. function selectMenu()
  79. for i=1, math.min(8, #Menus) do
  80. if screenY>4+3*(i-1) and screenY<=6+3*(i-1) then
  81. for a=0,1 do
  82. if screenX>=4+a*46 and screenX<=46+a*46 and i<= #Menus-a*8 then
  83. table.insert(Bestellung, Menus[i+a*8])
  84. Menge[#Bestellung]=1
  85. gpu.setBackground(0x002288)
  86. gpu.fill(4, 5, 44, 22, " ")
  87. gpu.fill(50, 5, 44, 22, " ")
  88. Ebene=2
  89. selectNumberSeite()
  90. end end end end
  91. end
  92.  
  93.  
  94. function selectNumberSeite()
  95. gpu.setBackground(0xAAAABB)
  96. gpu.setForeground(0xDD0000)
  97. gpu.set(12,16," -- ") gpu.set(17,16," - ")
  98. gpu.setForeground(0x008800)
  99. gpu.set(24,16," + ") gpu.set(28,16," ++ ")
  100. gpu.setForeground(0x660000)
  101. for i=1,3 do
  102. gpu.fill(52,i*6,40,3," ")
  103. if i==1 then gpu.set(62,7,"Bestellung ergänzen")
  104. elseif i==2 then gpu.set(61,13,"Bestellung abbrechen")
  105. elseif i==3 then gpu.set(64,19,"jetzt bezahlen")
  106. end end
  107. gpu.setForeground(0xAAEEFF)
  108. gpu.setBackground(0x002288)
  109. gpu.set(4,10,Bestellung[#Bestellung].." :")
  110. gpu.set(4,13,"Bitte, geben Sie die Menge ein...")
  111. gpu.set(21,16,"01")
  112. end
  113.  
  114. function selectNumber()
  115. if screenY>15 and screenY<=16 then
  116. if screenX>11 and screenX<=15 then Menge[#Menge]=Menge[#Menge]-10
  117. elseif screenX>16 and screenX<=19 then Menge[#Menge]=Menge[#Menge]-1
  118. elseif screenX>23 and screenX<=26 then Menge[#Menge]=Menge[#Menge]+1
  119. elseif screenX>27 and screenX<=31 then Menge[#Menge]=Menge[#Menge]+10
  120. end
  121. if Menge[#Menge]>32 then Menge[#Menge]=32
  122. elseif Menge[#Menge]<1 then Menge[#Menge]=1
  123. end
  124. gpu.setForeground(0xAAEEFF)
  125. if Menge[#Menge]>9 then gpu.set(21,16, tostring(Menge[#Menge]))
  126. else gpu.set(21,16, "0"..tostring(Menge[#Menge])) end
  127. end
  128. if screenX>51 and screenX<=92 then
  129. if screenY>5 and screenY<=8 then
  130. elseif screenY>11 and screenY<=14 then
  131. elseif screenY>17 and screenY<=20 then
  132. Ebene=3
  133. Summe=0
  134. gpu.setBackground(0x002288)
  135. gpu.fill(4, 5, 44, 22, " ")
  136. gpu.fill(50, 5, 44, 22, " ")
  137. for i=1,#Bestellung do
  138. gpu.set(4,10+2*i,Menge[i].."x  "..Bestellung[i].." :")
  139. local Preis=math.floor((Preise[Bestellung[i]][1]*GP[1]+Preise[Bestellung[i]][2]*GP[2]+Preise[Bestellung[i]][3]*GP[3])*10*Menge[i])/10
  140. Summe=Summe+Preis
  141. local pY=0
  142. if Preis>=10 then pY=1 elseif Preis>=100 then pY=2 end
  143. if math.floor(Preis)== math.ceil(Preis) then Preis=tostring(Preis)..",0" end
  144. gpu.set(41-pY,10+2*i,tostring(Preis).." €")
  145. end
  146. gpu.set(60,20,tostring(Summe).. " €")
  147. end end end
  148.  
  149. function Bezahlung()
  150.     if Summe== 0 then
  151.         for a=1, #Bestellung do
  152.             for Seite=0,5 do
  153.                 local isInterface=transposer.getInventoryName(Seite)
  154.                 if isInterface and string.match(isInterface,"interface") then
  155.                     for Slot=1, transposer.getInventorySize(Seite) do
  156.                         local Essen=transposer.getStackInSlot(Seite,Slot)
  157.                         if Essen and Essen.label==Bestellung[a] then
  158.                             if transposer.getSlotStackSize(Seite,Slot)>=Menge[a] then
  159.                                 if transposer.transferItem(Seite,DrawerSeite,Menge[a],Slot) then Menge[a]=0 end
  160.                             else
  161.                                 Menge[a]=Menge[a]-transposer.getSlotStackSize(Seite,Slot)
  162.                                 if not transposer.transferItem(Seite,DrawerSeite,transposer.getSlotStackSize(Seite,Slot),Slot) then
  163.                                 Menge[a]=Menge[a]+transposer.getSlotStackSize(Seite,Slot) end
  164.                             end
  165.                         end
  166.                     end
  167.                 end
  168.             end
  169.         end
  170.     elseif Summe>0 then
  171.         for b =1, transposer.getInventorySize(DrawerSeite) do
  172.             local Geld=transposer.getStackInSlot(DrawerSeite,b)
  173.             if Geld and Geld.label=="Emerald" then
  174.                 Summe=Summe-Geld.size
  175.                 while transposer.transferItem(DrawerSeite,EmeraldSeite,Geld.size,b,1) do end
  176.             elseif Geld and Geld.label=="Emerald Nugget" then
  177.                 Summe=Summe-Geld.size/10
  178.                 while transposer.transferItem(DrawerSeite,EmeraldSeite,Geld.size,b,2) do end
  179.             end
  180.         end
  181.     elseif Summe<0 then
  182.         local c=math.min(transposer.getSlotStackSize(EmeraldSeite,1)-1,0-math.ceil(Summe))
  183.         Summe=Summe+c
  184.         transposer.transferItem(EmeraldSeite,DrawerSeite,c,1)
  185.         transposer.transferItem(EmeraldSeite,DrawerSeite,(math.ceil(Summe)-Summe)*10,2)
  186.         Summe=math.ceil(Summe)
  187.     end
  188.     gpu.set(60,20,tostring(Summe).. " €")
  189. end
  190.  
  191. function unterBrochen()
  192. --event.ignore("interrupted",unterBrochen)
  193. os.exit()
  194. event.ignore("touch",touchKoor)
  195. computer.shutdown(true)
  196. end
  197.  
  198. local w, h = component.screen.getAspectRatio()  -- check 3x2 screen
  199. if w~=3 or h~=2 or gpu.maxDepth()<8 then
  200. print("Sorry, this Programm works only on 3x2 Tier 3 Screen!")
  201. os.sleep(5)
  202. os.exit() end
  203.  
  204. gpu.setResolution(96,30)
  205. screen.setTouchModeInverted(true)               -- shift+right-click to enter
  206.  
  207. hinterGrund()
  208. startSeite()
  209. event.listen("touch",touchKoor)
  210. event.listen("interrupted",unterBrochen)
  211. Ebene=1
  212.  
  213. while true do
  214.     willkommen()
  215.     if Ebene==3 then Bezahlung() end
  216.     os.sleep(0.2)
  217.  
  218. --touchKoor(event.pull("touch"))
  219. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement