Advertisement
Mijyuoon

E2 sgc_dialer

Aug 30th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.87 KB | None | 0 0
  1. @name SGC_Dialer
  2. @inputs W:wirelink On Key Ext:table TClk1
  3. @inputs Iris Valid Active Open Inbound Chevron RingRotation
  4. @inputs RingSpeedModeI Diag UEPO
  5. @inputs [Chevrons RingSymbol DialingAddress]:string
  6. @outputs RotateRing ChevronEncode Chevron7Lock
  7. @outputs Close RingSpeedMode IrTg Ans:table Dial
  8. @persist LCBx LCBy CSBx CSBy Gch:array ChrA:string
  9. @persist Pause EmgD Chv Addr:string
  10. @persist Avm Btn Snd Lck RSM Cgt Ang
  11.  
  12. #include "lib/lib_egppatch"
  13.  
  14. function void emgD(){
  15. Addr=Ext["emgd-a",string]
  16. RingSpeedMode=3
  17. Dial=1 Pause=0 Chv=0 EmgD=2
  18. W:egpSetText(204,Addr)
  19. }
  20.  
  21. function void lckMsg(){ Lck=1
  22. W:egpBoxOutline(291,vec2(256,256)-vec2(120,50),vec2(240,100))
  23. W:egpSize2(291,-10) W:egpColor(291,vec(255,0,0))
  24. W:egpBox(292,vec2(256,256)-vec2(120,50),vec2(240,100))
  25. W:egpColor(292,vec(0,0,0)) W:egpText(293,"LOCKED",vec2(256,256))
  26. W:egpColor(293,vec(255,0,0)) W:egpSize2(293,60) W:egpAlign(293,1,1)
  27. }
  28.  
  29. function void lckRem(){ Lck=0
  30. for(K=291,293){ W:egpRemove(K) }
  31. }
  32.  
  33. function void emdMsg(){
  34. W:egpBoxOutline(294,vec2(256,256)-vec2(210,30),vec2(420,60))
  35. W:egpSize2(294,-10) W:egpColor(294,vec(0,150,255))
  36. W:egpBox(295,vec2(256,256)-vec2(210,30),vec2(420,60))
  37. W:egpColor(295,vec(0,0,0)) W:egpText(296,"EMERGENCY DIAL",vec2(256,256))
  38. W:egpColor(296,vec(0,150,255)) W:egpSize2(296,50) W:egpAlign(296,1,1)
  39. timer("edr",2000)
  40. }
  41.  
  42. function void emdRem(){
  43. for(K=294,296){ W:egpRemove(K) }
  44. }
  45.  
  46. if(clk("edr")){ emdRem() }
  47.  
  48. if(~On&On==2){ reset() }
  49. if(On){
  50. ###########################################################
  51. if(first()|dupefinished()){
  52. W:egpClear() W:egpDrawTopLeft(1) RSM=1 EmgD=0
  53. CSBx=13 CSBy=225 LCBx=440 LCBy=60 RingSpeedMode=0
  54. ChrA="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890@#*"
  55. Gch[1,normal]=105 Gch[2,normal]=106 Gch[3,normal]=107
  56. Gch[4,normal]=110 Gch[5,normal]=111 Gch[6,normal]=112
  57. Gch[7,normal]=103 Gch[8,normal]=108 Gch[9,normal]=109
  58. ################################
  59. for(K=1,9){
  60. W:egpBoxOutline(K,vec2(LCBx,LCBy)+vec2(0,50*(K-1)),vec2(60,40))
  61. W:egpColor(K,vec(0,80,180)) W:egpSize2(K,-4)
  62. W:egpBox(K+10,vec2(LCBx,LCBy)+vec2(0,50*(K-1)),vec2(60,40))
  63. W:egpColor(K+10,vec(0,0,0))
  64. W:egpTextLayout(K+20,"",vec2(LCBx,LCBy)+vec2(0,50*(K-1)),vec2(60,40))
  65. W:egpFont(K+20,"Stargate Address Glyphs Concept",34) W:egpAlign(K+20,1,1)
  66. }
  67. ################################
  68. W:egpBoxOutline(201,vec2(272,500)-vec2(110,60),vec2(220,60))
  69. W:egpColor(201,vec(0,80,180)) W:egpSize2(201,-4)
  70. W:egpTextLayout(202,"IDLE",vec2(272,500)-vec2(110,60),vec2(220,60))
  71. W:egpColor(202,vec(255,255,200)) W:egpAlign(202,1,1)
  72. W:egpSize2(202,34)
  73. ######
  74. W:egpBoxOutline(203,vec2(496,15)-vec2(180,0),vec2(180,30))
  75. W:egpColor(203,vec(0,80,180)) W:egpSize2(203,-6)
  76. W:egpTextLayout(204,"",vec2(496,15)-vec2(180,0),vec2(180,30))
  77. W:egpColor(204,vec(255,255,255)) W:egpAlign(204,1,1)
  78. #W:egpFont(204,"Stargate Address Glyphs Concept",20)
  79. W:egpFont(204,"WireGPU_ConsoleFont",28)
  80. ################################
  81. W:egpBoxOutline(220,vec2(CSBx,CSBy-115),vec2(112,90))
  82. W:egpColor(220,vec(0,80,180)) W:egpSize2(220,-4)
  83. W:egpTextLayout(221,"RING.SYM:",vec2(CSBx,CSBy-112),vec2(112,20))
  84. W:egpColor(221,vec(255,255,200)) W:egpAlign(221,1,1) W:egpFont(221,"Arial",20)
  85. W:egpTextLayout(222,"",vec2(CSBx-20,CSBy-115+25),vec2(152,65))
  86. W:egpAlign(222,1,1) W:egpFont(222,"Stargate Address Glyphs Concept",54)
  87. W:egpBoxOutline(224,vec2(CSBx,CSBy-210),vec2(180,80))
  88. W:egpColor(224,vec(0,80,180)) W:egpSize2(224,-4)
  89. W:egpText(225,"WORMHOLE TIME:",vec2(CSBx,CSBy-210)+vec2(90,0))
  90. W:egpAlign(225,1,0) W:egpSize2(225,22)
  91. W:egpText(226,"--:--:--",vec2(13,225-210)+vec2(90,25))
  92. W:egpAlign(226,1,0) W:egpSize2(226,44)
  93. ################################
  94. W:egpBoxOutline(120,vec2(CSBx,CSBy-10),vec2(112,220))
  95. W:egpSize2(120,-4) W:egpColor(120,vec(0,80,180))
  96. for(K=1,7){
  97. W:egpBoxOutline(120+K,vec2(CSBx+5,CSBy+5)+vec2(0,20*(K-1)),vec2(24,10))
  98. W:egpColor(120+K,vec(0,80,180)) W:egpSize2(120+K,-2)
  99. W:egpBox(130+K,vec2(CSBx+7,CSBy+7)+vec2(0,20*(K-1)),vec2(20,6))
  100. W:egpColor(130+K,vec(255,0,0))
  101. ######
  102. W:egpBoxOutline(140+K,vec2(CSBx+36,CSBy+5)+vec2(0,20*(K-1)),vec2(24,10))
  103. W:egpColor(140+K,vec(0,80,180)) W:egpSize2(140+K,-2)
  104. W:egpBox(150+K,vec2(CSBx+38,CSBy+7)+vec2(0,20*(K-1)),vec2(20,6))
  105. W:egpColor(150+K,vec(0,0,0))
  106. ######
  107. W:egpText(160+K,toString(K),vec2(CSBx+67,CSBy+10)+vec2(0,20*(K-1)))
  108. W:egpColor(160+K,vec(255,255,200)) W:egpAlign(160+K,0,1)
  109. W:egpText(170+K,"",vec2(CSBx+82,CSBy+10)+vec2(0,20*(K-1)))
  110. W:egpColor(170+K,vec(0,255,0)) W:egpAlign(170+K,0,1)
  111. W:egpSize2(170+K,16)
  112. } for(K=8,9){
  113. W:egpBoxOutline(120+K,vec2(CSBx+5,CSBy+5)+vec2(0,20*K),vec2(24,10))
  114. W:egpColor(120+K,vec(0,80,180)) W:egpSize2(120+K,-2)
  115. W:egpBox(130+K,vec2(CSBx+7,CSBy+7)+vec2(0,20*K),vec2(20,6))
  116. W:egpColor(130+K,vec(255,0,0))
  117. ######
  118. W:egpBoxOutline(140+K,vec2(CSBx+36,CSBy+5)+vec2(0,20*K),vec2(24,10))
  119. W:egpColor(140+K,vec(0,80,180)) W:egpSize2(140+K,-2)
  120. W:egpBox(150+K,vec2(CSBx+38,CSBy+7)+vec2(0,20*K),vec2(20,6))
  121. W:egpColor(150+K,vec(0,0,0))
  122. ######
  123. W:egpText(160+K,toString(K),vec2(CSBx+67,CSBy+10)+vec2(0,20*K))
  124. W:egpColor(160+K,vec(255,255,200)) W:egpAlign(160+K,0,1)
  125. W:egpText(170+K,"",vec2(CSBx+82,CSBy+10)+vec2(0,20*K))
  126. W:egpColor(170+K,vec(0,255,0)) W:egpAlign(170+K,0,1)
  127. W:egpSize2(170+K,16)
  128. }
  129. ################################
  130. W:egpBoxOutline(210,vec2(CSBx,CSBy+225),vec2(102,50))
  131. W:egpColor(210,vec(0,80,180)) W:egpSize2(210,-4)
  132. W:egpText(211,"IRIS:",vec2(CSBx+5,CSBy+250))
  133. W:egpColor(211,vec(255,255,200)) W:egpSize2(211,22)
  134. W:egpAlign(211,0,1)
  135. W:egpText(212,"#",vec2(CSBx+65,CSBy+250))
  136. W:egpColor(212,vec(0,255,0)) W:egpSize2(212,40)
  137. W:egpAlign(212,0,1)
  138. ################################
  139. MG=24 MY=16
  140. W:egpCircle(101,vec2(272+MG-16,230+MY),vec2(130,130))
  141. W:egpColor(101,vec(47,51,57))
  142. #chev7
  143. W:egpTriangle(103,vec2(242+MG,100+MY),vec2(256+MG,118+MY),vec2(270+MG,100+MY))
  144. W:egpColor(103,vec(120,120,80))
  145. #chev1
  146. W:egpTriangle(105,vec2(319+MG,116+MY),vec2(315+MG+2,136+MY),vec2(339+MG,129+MY))
  147. W:egpColor(105,vec(120,120,80))
  148. #chev2
  149. W:egpTriangle(106,vec2(379+MG,183+MY),vec2(364+MG,200+MY),vec2(385+MG,209+MY))
  150. W:egpColor(106,vec(120,120,80))
  151. #chev3
  152. W:egpTriangle(107,vec2(383+MG,263+MY),vec2(361+MG,266+MY),vec2(373+MG,289+MY))
  153. W:egpColor(107,vec(120,120,80))
  154. #chev8
  155. W:egpTriangle(108,vec2(326+MG,341+MY),vec2(305+MG,332+MY),vec2(300+MG,354+MY))
  156. W:egpColor(108,vec(120,120,80))
  157. #chev9
  158. W:egpTriangle(109,vec2(187+MG,341+MY),vec2(207+MG,332+MY),vec2(212+MG,354+MY))
  159. W:egpColor(109,vec(120,120,80))
  160. #chev4
  161. W:egpTriangle(110,vec2(129+MG,263+MY),vec2(150+MG,266+MY),vec2(139+MG,289+MY))
  162. W:egpColor(110,vec(120,120,80))
  163. #chev5
  164. W:egpTriangle(111,vec2(134+MG,183+MY),vec2(147+MG,200+MY),vec2(127+MG,209+MY))
  165. W:egpColor(111,vec(120,120,80))
  166. #chev6
  167. W:egpTriangle(112,vec2(193+MG,116+MY),vec2(195+MG,137+MY),vec2(173+MG,129+MY))
  168. W:egpColor(112,vec(120,120,80))
  169. ######
  170. W:egpCircle(113,vec2(272+MG-16,230+MY),vec2(118,118))
  171. W:egpColor(113,vec(70,70,50))
  172. ######
  173. for(I=1,40){
  174. W:egpLine(300+I,vec2(0,0),vec2(sin(180-(360/39)*I),cos(180-(360/39)*I))*118)
  175. W:egpColor(300+I,vec(190,190,90)) W:egpSize2(300+I,2)
  176. W:egpParent(300+I,113) } W:egpAngle(113,round(180/39)) Ang=round(180/39)
  177. ######
  178. W:egpCircle(115,vec2(272+MG-16,230+MY),vec2(103,103))
  179. W:egpColor(115,vec(47,51,57))
  180. W:egpCircle(116,vec2(272+MG-16,230+MY),vec2(95,95))
  181. W:egpColor(116,vec(0,0,0))
  182. ######
  183. W:egpCircle(117,vec2(272+MG-16,230+MY),vec2(94,94))
  184. W:egpColor(117,vec(0,0,0))
  185. ######
  186. W:egpText(223,"",vec2(272+MG-16,230+MY))
  187. W:egpAlign(223,1,1) W:egpFont(223,"Stargate Address Glyphs Concept",150)
  188. ################################
  189. }
  190. ######################################################
  191. if(Dial&!~Ext){
  192. if(RingSymbol!=Addr[Chv+1]&!Pause){ RotateRing=1 }
  193. if(RingSymbol==Addr[Chv+1]&!Pause){
  194. if(Addr:length()>Chevron+1){ RotateRing=0 Pause=1 Chv++ timer("eng",150) }
  195. if(Addr:length()==Chevron+1){ RotateRing=0 Pause=2 timer("lck",150) }
  196. }
  197. if(clk("eng")){ ChevronEncode=1 }
  198. if(clk("lck")){ Chevron7Lock=1 }
  199. if(Chv==Chevron&$Chevron){
  200. if(Pause==1){ timer("rel1",500) }
  201. if(Pause==2){ timer("rel2",500) }
  202. }
  203. if(clk("rel1")){ ChevronEncode=0 Pause=0 }
  204. if(clk("rel2")){ Pause=-2 }
  205. if(Pause==-2&Open){ Pause=0 Dial=0 RotateRing=0
  206. ChevronEncode=0 Chevron7Lock=0 }
  207. if(EmgD==2&Open){ EmgD=0 }
  208. if(Chevron<-6){ RotateRing=0 ChevronEncode=0 Chevron7Lock=0 Dial=0 Pause=0 }
  209. }
  210. if(Inbound){ Dial=0 RotateRing=0 ChevronEncode=0 Chevron7Lock=0 EmgD=1 }
  211. if(!Inbound&!Active&EmgD==1){ EmgD=0 if(Ext["emgd-e",normal]){ RingSpeedMode=3 emdMsg() emgD() } }
  212. if(clk("emgd-i")){ }
  213. ######################################################
  214. if(~Key&Key==9){ reset() }
  215. if(!Ext["lock",normal]&~Key&Key&!Btn&Key!=154){ Btn=1
  216. if(Addr:length()<9&!Dial){
  217. for(I=1,ChrA:length()){ if(toChar(Key)==ChrA[I]){
  218. Addr+=ChrA[I]:upper() } } }
  219. if(~Key&Key==127&Addr:length()>0&!Dial){ Addr=Addr:left(Addr:length()-1) }
  220. if(~Key&Key==13&!Dial&!Diag&!Active&Addr:length()>6){ RingSpeedMode=RSM+(Ext["acc-e",normal]*2)
  221. Dial=1 Pause=0 Chv=0 }
  222. if(~Key&toChar(Key)=="["&!IrTg){ IrTg=1 timer("irtg",100) }
  223. if(~Key&toChar(Key)=="-"){ Avm=1-Avm
  224. if(Avm){
  225. W:egpBoxOutline(203,vec2(496,15)-vec2(280,0),vec2(280,30))
  226. W:egpTextLayout(204,"",vec2(496,15)-vec2(280,0),vec2(280,30))
  227. W:egpFont(204,"Stargate Address Glyphs Concept",26)
  228. W:egpSize2(203,-6)
  229. }else{
  230. W:egpBoxOutline(203,vec2(496,15)-vec2(180,0),vec2(180,30))
  231. W:egpTextLayout(204,"",vec2(496,15)-vec2(180,0),vec2(180,30))
  232. W:egpFont(204,"WireGPU_ConsoleFont",28)
  233. W:egpSize2(203,-6)
  234. }
  235. }
  236. if(~Key&toChar(Key)=="\\"&!Inbound&!Pause){ Close=1 Dial=0 RotateRing=0
  237. #["]# ChevonEncode=0 Chevron7Lock=0 Pause=0 Cgt=1 timer("rclg",500) }
  238. W:egpSetText(204,Addr:upper())
  239. }elseif(!Key|Ext["Lock",normal]){ Btn=0 }
  240. if(clk("rclg")){ Close=0 }
  241. if(clk("irtg")){ IrTg=0 }#RingSpeedMode=RSM+(Ext["acc-e",normal]*2) }
  242. if(!Chevron&Cgt){ Cgt=0 }
  243. if($Dial){ Ans["dial",normal]=Dial }
  244.  
  245. for(I=1,9){
  246. if(!Diag){
  247. #if(~Chevron|~DialingAddress|~Inbound|~Valid){
  248. if(!Inbound){
  249. if(Chevron>=I){ W:egpSetText(I+20,DialingAddress[I])
  250. }elseif(Chevron<=0-I&Chevron<-6){
  251. W:egpSetText(I+20,DialingAddress[I])
  252. }else{ W:egpSetText(I+20,"") }
  253. if(Open&Chevron>=I){ W:egpColor(I,vec(0,140,240))
  254. W:egpColor(I+10,vec(0,50,150))
  255. }elseif(Chevron<=0-I&Chevron<-6&Chevrons[1]=="1"&!Cgt){
  256. W:egpColor(I,vec(255,0,0))
  257. W:egpColor(I+10,vec(0,0,0))
  258. }else{ W:egpColor(I,vec(0,80,180))
  259. W:egpColor(I+10,vec(0,0,0)) }
  260. }else{
  261. if(Chevron>=I){
  262. W:egpColor(I,(!Valid ? vec(255,0,0) : vec(0,255,0)))
  263. W:egpColor(I+10,(!Valid ? vec(120,0,0) : vec(0,120,0)))
  264. }
  265. W:egpSetText(I+20,"")
  266. } } #}
  267. if(~Chevron|first()){
  268. if(Chevron>=I&Chevrons[1]=="1"){
  269. if(Chevron&!Inbound&!UEPO){ ChvErr=1 }else{ ChvErr=0 }
  270. W:egpColor(130+I,vec(0,0,0))
  271. W:egpColor(150+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
  272. W:egpSetText(170+I,(!ChvErr ? "OK" : "LOG"))
  273. W:egpColor(170+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
  274. }elseif(Chevron<0-I&Chevron<-6&Chevrons[1]=="1"){
  275. if(Chevron&!Inbound&!UEPO){ ChvErr=1 }else{ ChvErr=0 }
  276. W:egpColor(130+I,vec(0,0,0))
  277. W:egpColor(150+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
  278. W:egpSetText(170+I,(!ChvErr ? "OK" : "LOG"))
  279. W:egpColor(170+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
  280. }elseif(Chevron<=0-I&Chevron>=-6&Chevrons[1]=="1"){
  281. if(Chevron&!Inbound&!UEPO){ ChvErr=1 }else{ ChvErr=0 }
  282. W:egpColor(130+I,vec(0,0,0))
  283. W:egpColor(150+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
  284. W:egpSetText(170+I,(!ChvErr ? "OK" : "LOG"))
  285. W:egpColor(170+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
  286. }else{
  287. W:egpColor(130+I,vec(255,0,0)) W:egpColor(150+I,vec(0,0,0))
  288. W:egpSetText(170+I,"")
  289. }}
  290. if(Chevrons[I]=="1"){
  291. W:egpColor(Gch[I,normal],(!Valid ? vec(255,20,20) : vec(20,255,20))) #vec(190,120,50))
  292. }else{
  293. W:egpColor(Gch[I,normal],vec(120,120,80)) #vec(100,62,10))
  294. }
  295. }
  296.  
  297. Q1=(RingSymbol:upper()=="X"|RingSymbol:upper()=="2"|RingSymbol:upper()=="K" ? " " : "")
  298. if(RingSymbol!=""){ W:egpSetText(222,Q1+RingSymbol:upper()+Q1) }
  299. if((ChevronEncode&Addr[Chevron]!=RingSymbol:upper())
  300. |(Chevron7Lock&!Open)|(Chevron<-6&DialingAddress[1]!="")){
  301. W:egpSetText(223,RingSymbol:upper())
  302. }else{ W:egpSetText(223,"") }
  303.  
  304. if(!Diag){
  305. if(!Dial&!Active){ W:egpSetText(202," IDLE ")
  306. W:egpColor(202,vec(255,255,200))
  307. }else{ if(!Inbound&Chevron>=0){
  308. W:egpColor(202,vec(255,255,200))
  309. if(!Open&!ChevronEncode&!Chevron7Lock){
  310. W:egpSetText(202,"")
  311. }elseif(ChevronEncode){ W:egpSetText(202," ENGAGED ")
  312. }elseif(Chevron7Lock&Chevron>6){ W:egpSetText(202," LOCKED ")
  313. }elseif(Open){ W:egpSetText(202," ACTIVE ") }
  314. }elseif(Inbound){ W:egpColor(202,vec(255,0,0))
  315. if(!Open|!Iris){ W:egpSetText(202," INCOMING ")
  316. }else{ W:egpSetText(202," IRIS CLOSED ") }
  317. }}
  318. if(Chevron<0){ W:egpColor(202,vec(255,0,0))
  319. if(Chevron<-6&!Cgt){ W:egpSetText(202," NOT LOCKED ")
  320. }else{ W:egpSetText(202," ABORTED ") }
  321. } }
  322. if(Diag){ W:egpColor(202,vec(255,255,200))
  323. W:egpSetText(202,"GATE DIAG\nIN PROGRESS")
  324. W:egpSize2(202,24)
  325. }else{ W:egpSize2(202,34) }
  326.  
  327. if(Iris){
  328. W:egpColor(117,vec(100,100,100))
  329. W:egpColor(212,vec(255,0,0))
  330. }elseif(Open){
  331. W:egpColor(117,vec(90,120,180))
  332. W:egpColor(212,vec(0,255,0))
  333. }else{
  334. W:egpColor(117,vec(0,0,0))
  335. W:egpColor(212,vec(0,255,0))
  336. }
  337.  
  338. if(!Snd&(ChevronEncode|Chevron7Lock)){ Snd=1
  339. if(ChevronEncode){ W:entity():soundPlay(1,2.262,"/prg_chev.wav")
  340. }elseif(Chevron7Lock){ W:entity():soundPlay(2,0,"/prg_chev7.wav")
  341. }}elseif(!ChevronEncode&!Chevron7Lock){ Snd=0 }
  342.  
  343. if(Ext["lock",normal]&!Lck){ lckMsg() }
  344. elseif(!Ext["lock",normal]&Lck){ lckRem() }
  345.  
  346. if(RingRotation){ timer("rrc",22-(RingSpeedModeI-1)*4) }
  347. else{ stoptimer("rrc") }
  348. if(clk("rrc")){ Ang=(RingRotation==1 ? Ang-1 : Ang+1) W:egpAngle(113,Ang)
  349. timer("rrc",22-(RingSpeedModeI-1)*4) }
  350. ###########################################################
  351. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement