Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @name SGC_Dialer
- @inputs W:wirelink On Key Ext:table TClk1
- @inputs Iris Valid Active Open Inbound Chevron RingRotation
- @inputs RingSpeedModeI Diag UEPO
- @inputs [Chevrons RingSymbol DialingAddress]:string
- @outputs RotateRing ChevronEncode Chevron7Lock
- @outputs Close RingSpeedMode IrTg Ans:table Dial
- @persist LCBx LCBy CSBx CSBy Gch:array ChrA:string
- @persist Pause EmgD Chv Addr:string
- @persist Avm Btn Snd Lck RSM Cgt Ang
- #include "lib/lib_egppatch"
- function void emgD(){
- Addr=Ext["emgd-a",string]
- RingSpeedMode=3
- Dial=1 Pause=0 Chv=0 EmgD=2
- W:egpSetText(204,Addr)
- }
- function void lckMsg(){ Lck=1
- W:egpBoxOutline(291,vec2(256,256)-vec2(120,50),vec2(240,100))
- W:egpSize2(291,-10) W:egpColor(291,vec(255,0,0))
- W:egpBox(292,vec2(256,256)-vec2(120,50),vec2(240,100))
- W:egpColor(292,vec(0,0,0)) W:egpText(293,"LOCKED",vec2(256,256))
- W:egpColor(293,vec(255,0,0)) W:egpSize2(293,60) W:egpAlign(293,1,1)
- }
- function void lckRem(){ Lck=0
- for(K=291,293){ W:egpRemove(K) }
- }
- function void emdMsg(){
- W:egpBoxOutline(294,vec2(256,256)-vec2(210,30),vec2(420,60))
- W:egpSize2(294,-10) W:egpColor(294,vec(0,150,255))
- W:egpBox(295,vec2(256,256)-vec2(210,30),vec2(420,60))
- W:egpColor(295,vec(0,0,0)) W:egpText(296,"EMERGENCY DIAL",vec2(256,256))
- W:egpColor(296,vec(0,150,255)) W:egpSize2(296,50) W:egpAlign(296,1,1)
- timer("edr",2000)
- }
- function void emdRem(){
- for(K=294,296){ W:egpRemove(K) }
- }
- if(clk("edr")){ emdRem() }
- if(~On&On==2){ reset() }
- if(On){
- ###########################################################
- if(first()|dupefinished()){
- W:egpClear() W:egpDrawTopLeft(1) RSM=1 EmgD=0
- CSBx=13 CSBy=225 LCBx=440 LCBy=60 RingSpeedMode=0
- ChrA="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890@#*"
- Gch[1,normal]=105 Gch[2,normal]=106 Gch[3,normal]=107
- Gch[4,normal]=110 Gch[5,normal]=111 Gch[6,normal]=112
- Gch[7,normal]=103 Gch[8,normal]=108 Gch[9,normal]=109
- ################################
- for(K=1,9){
- W:egpBoxOutline(K,vec2(LCBx,LCBy)+vec2(0,50*(K-1)),vec2(60,40))
- W:egpColor(K,vec(0,80,180)) W:egpSize2(K,-4)
- W:egpBox(K+10,vec2(LCBx,LCBy)+vec2(0,50*(K-1)),vec2(60,40))
- W:egpColor(K+10,vec(0,0,0))
- W:egpTextLayout(K+20,"",vec2(LCBx,LCBy)+vec2(0,50*(K-1)),vec2(60,40))
- W:egpFont(K+20,"Stargate Address Glyphs Concept",34) W:egpAlign(K+20,1,1)
- }
- ################################
- W:egpBoxOutline(201,vec2(272,500)-vec2(110,60),vec2(220,60))
- W:egpColor(201,vec(0,80,180)) W:egpSize2(201,-4)
- W:egpTextLayout(202,"IDLE",vec2(272,500)-vec2(110,60),vec2(220,60))
- W:egpColor(202,vec(255,255,200)) W:egpAlign(202,1,1)
- W:egpSize2(202,34)
- ######
- W:egpBoxOutline(203,vec2(496,15)-vec2(180,0),vec2(180,30))
- W:egpColor(203,vec(0,80,180)) W:egpSize2(203,-6)
- W:egpTextLayout(204,"",vec2(496,15)-vec2(180,0),vec2(180,30))
- W:egpColor(204,vec(255,255,255)) W:egpAlign(204,1,1)
- #W:egpFont(204,"Stargate Address Glyphs Concept",20)
- W:egpFont(204,"WireGPU_ConsoleFont",28)
- ################################
- W:egpBoxOutline(220,vec2(CSBx,CSBy-115),vec2(112,90))
- W:egpColor(220,vec(0,80,180)) W:egpSize2(220,-4)
- W:egpTextLayout(221,"RING.SYM:",vec2(CSBx,CSBy-112),vec2(112,20))
- W:egpColor(221,vec(255,255,200)) W:egpAlign(221,1,1) W:egpFont(221,"Arial",20)
- W:egpTextLayout(222,"",vec2(CSBx-20,CSBy-115+25),vec2(152,65))
- W:egpAlign(222,1,1) W:egpFont(222,"Stargate Address Glyphs Concept",54)
- W:egpBoxOutline(224,vec2(CSBx,CSBy-210),vec2(180,80))
- W:egpColor(224,vec(0,80,180)) W:egpSize2(224,-4)
- W:egpText(225,"WORMHOLE TIME:",vec2(CSBx,CSBy-210)+vec2(90,0))
- W:egpAlign(225,1,0) W:egpSize2(225,22)
- W:egpText(226,"--:--:--",vec2(13,225-210)+vec2(90,25))
- W:egpAlign(226,1,0) W:egpSize2(226,44)
- ################################
- W:egpBoxOutline(120,vec2(CSBx,CSBy-10),vec2(112,220))
- W:egpSize2(120,-4) W:egpColor(120,vec(0,80,180))
- for(K=1,7){
- W:egpBoxOutline(120+K,vec2(CSBx+5,CSBy+5)+vec2(0,20*(K-1)),vec2(24,10))
- W:egpColor(120+K,vec(0,80,180)) W:egpSize2(120+K,-2)
- W:egpBox(130+K,vec2(CSBx+7,CSBy+7)+vec2(0,20*(K-1)),vec2(20,6))
- W:egpColor(130+K,vec(255,0,0))
- ######
- W:egpBoxOutline(140+K,vec2(CSBx+36,CSBy+5)+vec2(0,20*(K-1)),vec2(24,10))
- W:egpColor(140+K,vec(0,80,180)) W:egpSize2(140+K,-2)
- W:egpBox(150+K,vec2(CSBx+38,CSBy+7)+vec2(0,20*(K-1)),vec2(20,6))
- W:egpColor(150+K,vec(0,0,0))
- ######
- W:egpText(160+K,toString(K),vec2(CSBx+67,CSBy+10)+vec2(0,20*(K-1)))
- W:egpColor(160+K,vec(255,255,200)) W:egpAlign(160+K,0,1)
- W:egpText(170+K,"",vec2(CSBx+82,CSBy+10)+vec2(0,20*(K-1)))
- W:egpColor(170+K,vec(0,255,0)) W:egpAlign(170+K,0,1)
- W:egpSize2(170+K,16)
- } for(K=8,9){
- W:egpBoxOutline(120+K,vec2(CSBx+5,CSBy+5)+vec2(0,20*K),vec2(24,10))
- W:egpColor(120+K,vec(0,80,180)) W:egpSize2(120+K,-2)
- W:egpBox(130+K,vec2(CSBx+7,CSBy+7)+vec2(0,20*K),vec2(20,6))
- W:egpColor(130+K,vec(255,0,0))
- ######
- W:egpBoxOutline(140+K,vec2(CSBx+36,CSBy+5)+vec2(0,20*K),vec2(24,10))
- W:egpColor(140+K,vec(0,80,180)) W:egpSize2(140+K,-2)
- W:egpBox(150+K,vec2(CSBx+38,CSBy+7)+vec2(0,20*K),vec2(20,6))
- W:egpColor(150+K,vec(0,0,0))
- ######
- W:egpText(160+K,toString(K),vec2(CSBx+67,CSBy+10)+vec2(0,20*K))
- W:egpColor(160+K,vec(255,255,200)) W:egpAlign(160+K,0,1)
- W:egpText(170+K,"",vec2(CSBx+82,CSBy+10)+vec2(0,20*K))
- W:egpColor(170+K,vec(0,255,0)) W:egpAlign(170+K,0,1)
- W:egpSize2(170+K,16)
- }
- ################################
- W:egpBoxOutline(210,vec2(CSBx,CSBy+225),vec2(102,50))
- W:egpColor(210,vec(0,80,180)) W:egpSize2(210,-4)
- W:egpText(211,"IRIS:",vec2(CSBx+5,CSBy+250))
- W:egpColor(211,vec(255,255,200)) W:egpSize2(211,22)
- W:egpAlign(211,0,1)
- W:egpText(212,"#",vec2(CSBx+65,CSBy+250))
- W:egpColor(212,vec(0,255,0)) W:egpSize2(212,40)
- W:egpAlign(212,0,1)
- ################################
- MG=24 MY=16
- W:egpCircle(101,vec2(272+MG-16,230+MY),vec2(130,130))
- W:egpColor(101,vec(47,51,57))
- #chev7
- W:egpTriangle(103,vec2(242+MG,100+MY),vec2(256+MG,118+MY),vec2(270+MG,100+MY))
- W:egpColor(103,vec(120,120,80))
- #chev1
- W:egpTriangle(105,vec2(319+MG,116+MY),vec2(315+MG+2,136+MY),vec2(339+MG,129+MY))
- W:egpColor(105,vec(120,120,80))
- #chev2
- W:egpTriangle(106,vec2(379+MG,183+MY),vec2(364+MG,200+MY),vec2(385+MG,209+MY))
- W:egpColor(106,vec(120,120,80))
- #chev3
- W:egpTriangle(107,vec2(383+MG,263+MY),vec2(361+MG,266+MY),vec2(373+MG,289+MY))
- W:egpColor(107,vec(120,120,80))
- #chev8
- W:egpTriangle(108,vec2(326+MG,341+MY),vec2(305+MG,332+MY),vec2(300+MG,354+MY))
- W:egpColor(108,vec(120,120,80))
- #chev9
- W:egpTriangle(109,vec2(187+MG,341+MY),vec2(207+MG,332+MY),vec2(212+MG,354+MY))
- W:egpColor(109,vec(120,120,80))
- #chev4
- W:egpTriangle(110,vec2(129+MG,263+MY),vec2(150+MG,266+MY),vec2(139+MG,289+MY))
- W:egpColor(110,vec(120,120,80))
- #chev5
- W:egpTriangle(111,vec2(134+MG,183+MY),vec2(147+MG,200+MY),vec2(127+MG,209+MY))
- W:egpColor(111,vec(120,120,80))
- #chev6
- W:egpTriangle(112,vec2(193+MG,116+MY),vec2(195+MG,137+MY),vec2(173+MG,129+MY))
- W:egpColor(112,vec(120,120,80))
- ######
- W:egpCircle(113,vec2(272+MG-16,230+MY),vec2(118,118))
- W:egpColor(113,vec(70,70,50))
- ######
- for(I=1,40){
- W:egpLine(300+I,vec2(0,0),vec2(sin(180-(360/39)*I),cos(180-(360/39)*I))*118)
- W:egpColor(300+I,vec(190,190,90)) W:egpSize2(300+I,2)
- W:egpParent(300+I,113) } W:egpAngle(113,round(180/39)) Ang=round(180/39)
- ######
- W:egpCircle(115,vec2(272+MG-16,230+MY),vec2(103,103))
- W:egpColor(115,vec(47,51,57))
- W:egpCircle(116,vec2(272+MG-16,230+MY),vec2(95,95))
- W:egpColor(116,vec(0,0,0))
- ######
- W:egpCircle(117,vec2(272+MG-16,230+MY),vec2(94,94))
- W:egpColor(117,vec(0,0,0))
- ######
- W:egpText(223,"",vec2(272+MG-16,230+MY))
- W:egpAlign(223,1,1) W:egpFont(223,"Stargate Address Glyphs Concept",150)
- ################################
- }
- ######################################################
- if(Dial&!~Ext){
- if(RingSymbol!=Addr[Chv+1]&!Pause){ RotateRing=1 }
- if(RingSymbol==Addr[Chv+1]&!Pause){
- if(Addr:length()>Chevron+1){ RotateRing=0 Pause=1 Chv++ timer("eng",150) }
- if(Addr:length()==Chevron+1){ RotateRing=0 Pause=2 timer("lck",150) }
- }
- if(clk("eng")){ ChevronEncode=1 }
- if(clk("lck")){ Chevron7Lock=1 }
- if(Chv==Chevron&$Chevron){
- if(Pause==1){ timer("rel1",500) }
- if(Pause==2){ timer("rel2",500) }
- }
- if(clk("rel1")){ ChevronEncode=0 Pause=0 }
- if(clk("rel2")){ Pause=-2 }
- if(Pause==-2&Open){ Pause=0 Dial=0 RotateRing=0
- ChevronEncode=0 Chevron7Lock=0 }
- if(EmgD==2&Open){ EmgD=0 }
- if(Chevron<-6){ RotateRing=0 ChevronEncode=0 Chevron7Lock=0 Dial=0 Pause=0 }
- }
- if(Inbound){ Dial=0 RotateRing=0 ChevronEncode=0 Chevron7Lock=0 EmgD=1 }
- if(!Inbound&!Active&EmgD==1){ EmgD=0 if(Ext["emgd-e",normal]){ RingSpeedMode=3 emdMsg() emgD() } }
- if(clk("emgd-i")){ }
- ######################################################
- if(~Key&Key==9){ reset() }
- if(!Ext["lock",normal]&~Key&Key&!Btn&Key!=154){ Btn=1
- if(Addr:length()<9&!Dial){
- for(I=1,ChrA:length()){ if(toChar(Key)==ChrA[I]){
- Addr+=ChrA[I]:upper() } } }
- if(~Key&Key==127&Addr:length()>0&!Dial){ Addr=Addr:left(Addr:length()-1) }
- if(~Key&Key==13&!Dial&!Diag&!Active&Addr:length()>6){ RingSpeedMode=RSM+(Ext["acc-e",normal]*2)
- Dial=1 Pause=0 Chv=0 }
- if(~Key&toChar(Key)=="["&!IrTg){ IrTg=1 timer("irtg",100) }
- if(~Key&toChar(Key)=="-"){ Avm=1-Avm
- if(Avm){
- W:egpBoxOutline(203,vec2(496,15)-vec2(280,0),vec2(280,30))
- W:egpTextLayout(204,"",vec2(496,15)-vec2(280,0),vec2(280,30))
- W:egpFont(204,"Stargate Address Glyphs Concept",26)
- W:egpSize2(203,-6)
- }else{
- W:egpBoxOutline(203,vec2(496,15)-vec2(180,0),vec2(180,30))
- W:egpTextLayout(204,"",vec2(496,15)-vec2(180,0),vec2(180,30))
- W:egpFont(204,"WireGPU_ConsoleFont",28)
- W:egpSize2(203,-6)
- }
- }
- if(~Key&toChar(Key)=="\\"&!Inbound&!Pause){ Close=1 Dial=0 RotateRing=0
- #["]# ChevonEncode=0 Chevron7Lock=0 Pause=0 Cgt=1 timer("rclg",500) }
- W:egpSetText(204,Addr:upper())
- }elseif(!Key|Ext["Lock",normal]){ Btn=0 }
- if(clk("rclg")){ Close=0 }
- if(clk("irtg")){ IrTg=0 }#RingSpeedMode=RSM+(Ext["acc-e",normal]*2) }
- if(!Chevron&Cgt){ Cgt=0 }
- if($Dial){ Ans["dial",normal]=Dial }
- for(I=1,9){
- if(!Diag){
- #if(~Chevron|~DialingAddress|~Inbound|~Valid){
- if(!Inbound){
- if(Chevron>=I){ W:egpSetText(I+20,DialingAddress[I])
- }elseif(Chevron<=0-I&Chevron<-6){
- W:egpSetText(I+20,DialingAddress[I])
- }else{ W:egpSetText(I+20,"") }
- if(Open&Chevron>=I){ W:egpColor(I,vec(0,140,240))
- W:egpColor(I+10,vec(0,50,150))
- }elseif(Chevron<=0-I&Chevron<-6&Chevrons[1]=="1"&!Cgt){
- W:egpColor(I,vec(255,0,0))
- W:egpColor(I+10,vec(0,0,0))
- }else{ W:egpColor(I,vec(0,80,180))
- W:egpColor(I+10,vec(0,0,0)) }
- }else{
- if(Chevron>=I){
- W:egpColor(I,(!Valid ? vec(255,0,0) : vec(0,255,0)))
- W:egpColor(I+10,(!Valid ? vec(120,0,0) : vec(0,120,0)))
- }
- W:egpSetText(I+20,"")
- } } #}
- if(~Chevron|first()){
- if(Chevron>=I&Chevrons[1]=="1"){
- if(Chevron&!Inbound&!UEPO){ ChvErr=1 }else{ ChvErr=0 }
- W:egpColor(130+I,vec(0,0,0))
- W:egpColor(150+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
- W:egpSetText(170+I,(!ChvErr ? "OK" : "LOG"))
- W:egpColor(170+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
- }elseif(Chevron<0-I&Chevron<-6&Chevrons[1]=="1"){
- if(Chevron&!Inbound&!UEPO){ ChvErr=1 }else{ ChvErr=0 }
- W:egpColor(130+I,vec(0,0,0))
- W:egpColor(150+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
- W:egpSetText(170+I,(!ChvErr ? "OK" : "LOG"))
- W:egpColor(170+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
- }elseif(Chevron<=0-I&Chevron>=-6&Chevrons[1]=="1"){
- if(Chevron&!Inbound&!UEPO){ ChvErr=1 }else{ ChvErr=0 }
- W:egpColor(130+I,vec(0,0,0))
- W:egpColor(150+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
- W:egpSetText(170+I,(!ChvErr ? "OK" : "LOG"))
- W:egpColor(170+I,(!ChvErr ? vec(0,255,0) : vec(255,0,0)))
- }else{
- W:egpColor(130+I,vec(255,0,0)) W:egpColor(150+I,vec(0,0,0))
- W:egpSetText(170+I,"")
- }}
- if(Chevrons[I]=="1"){
- W:egpColor(Gch[I,normal],(!Valid ? vec(255,20,20) : vec(20,255,20))) #vec(190,120,50))
- }else{
- W:egpColor(Gch[I,normal],vec(120,120,80)) #vec(100,62,10))
- }
- }
- Q1=(RingSymbol:upper()=="X"|RingSymbol:upper()=="2"|RingSymbol:upper()=="K" ? " " : "")
- if(RingSymbol!=""){ W:egpSetText(222,Q1+RingSymbol:upper()+Q1) }
- if((ChevronEncode&Addr[Chevron]!=RingSymbol:upper())
- |(Chevron7Lock&!Open)|(Chevron<-6&DialingAddress[1]!="")){
- W:egpSetText(223,RingSymbol:upper())
- }else{ W:egpSetText(223,"") }
- if(!Diag){
- if(!Dial&!Active){ W:egpSetText(202," IDLE ")
- W:egpColor(202,vec(255,255,200))
- }else{ if(!Inbound&Chevron>=0){
- W:egpColor(202,vec(255,255,200))
- if(!Open&!ChevronEncode&!Chevron7Lock){
- W:egpSetText(202,"")
- }elseif(ChevronEncode){ W:egpSetText(202," ENGAGED ")
- }elseif(Chevron7Lock&Chevron>6){ W:egpSetText(202," LOCKED ")
- }elseif(Open){ W:egpSetText(202," ACTIVE ") }
- }elseif(Inbound){ W:egpColor(202,vec(255,0,0))
- if(!Open|!Iris){ W:egpSetText(202," INCOMING ")
- }else{ W:egpSetText(202," IRIS CLOSED ") }
- }}
- if(Chevron<0){ W:egpColor(202,vec(255,0,0))
- if(Chevron<-6&!Cgt){ W:egpSetText(202," NOT LOCKED ")
- }else{ W:egpSetText(202," ABORTED ") }
- } }
- if(Diag){ W:egpColor(202,vec(255,255,200))
- W:egpSetText(202,"GATE DIAG\nIN PROGRESS")
- W:egpSize2(202,24)
- }else{ W:egpSize2(202,34) }
- if(Iris){
- W:egpColor(117,vec(100,100,100))
- W:egpColor(212,vec(255,0,0))
- }elseif(Open){
- W:egpColor(117,vec(90,120,180))
- W:egpColor(212,vec(0,255,0))
- }else{
- W:egpColor(117,vec(0,0,0))
- W:egpColor(212,vec(0,255,0))
- }
- if(!Snd&(ChevronEncode|Chevron7Lock)){ Snd=1
- if(ChevronEncode){ W:entity():soundPlay(1,2.262,"/prg_chev.wav")
- }elseif(Chevron7Lock){ W:entity():soundPlay(2,0,"/prg_chev7.wav")
- }}elseif(!ChevronEncode&!Chevron7Lock){ Snd=0 }
- if(Ext["lock",normal]&!Lck){ lckMsg() }
- elseif(!Ext["lock",normal]&Lck){ lckRem() }
- if(RingRotation){ timer("rrc",22-(RingSpeedModeI-1)*4) }
- else{ stoptimer("rrc") }
- if(clk("rrc")){ Ang=(RingRotation==1 ? Ang-1 : Ang+1) W:egpAngle(113,Ang)
- timer("rrc",22-(RingSpeedModeI-1)*4) }
- ###########################################################
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement