Magus

(Wiremod Expression 2) Lodkagan EGP Drawing Example

Jul 24th, 2012
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.67 KB | None | 0 0
  1. @name EGP Drawing
  2. @inputs [EGP EGP2]:wirelink Key E:entity
  3. @outputs Status SetSize SetPos SetColor SetAngle
  4. @persist [Pos_default Size_default]:vector2  A String:string
  5. @persist [Size Pos Pos2]:vector2 [Color Color_default]:vector4
  6. @persist [A_array Size_array Pos_array Color_array]:array
  7. @persist FileName:string
  8. # Expression 2 Chip by Magus / Lodkagan
  9. if(first()) {
  10.    
  11.     # =====================================
  12.     # config start
  13.     # =====================================
  14.    
  15.     #
  16.     FileName = "EGP" + ".txt"
  17.    
  18.     #
  19.     Pos_default   = vec2(256,256)
  20.     Size_default  = vec2(256,256)
  21.     Color_default = vec4(255,255,255,255)
  22.    
  23.     # =====================================
  24.     # config end
  25.     # =====================================
  26.    
  27.     EGP:egpClear()
  28.     EGP2:egpClear()
  29.    
  30.    
  31.     # =====================================
  32.     EGP2:egpTextLayout(1,"    -- Create Stuff --
  33.    1 - Create Box
  34.    2 - Create Circle
  35.    3 - Create Wedge
  36.    4 - Create TextString
  37.    
  38.    Q - Create Rounded Box
  39.    W - Create Circle Outline
  40.    E - Create Wedge Outline
  41.    ",vec2(25,75),vec2(270,290))
  42.    
  43.     EGP2:egpTextLayout(2,"    -- Menu --
  44.    BACKSPACE - Delete
  45.    ENTER - Print to chat and
  46.    write file  ( "+FileName+" )
  47.    
  48.    Y - Size mode
  49.    X - Position mode
  50.    C - Color mode
  51.    V - Angle Mode
  52.    ",vec2(280,75),vec2(512,290))
  53.    
  54.     EGP2:egpTextLayout(3,"    -- Presets --
  55.    D - Set Default Values
  56.    S - Set to 512 (fullscreen)
  57.    ",vec2(25,300),vec2(275,510))
  58.    
  59.     EGP2:egpTextLayout(4,"    -- Preset Colors (Numpad) --
  60.    1 - Red
  61.    2 - Green
  62.    3 - Blue
  63.    4 - Yellow
  64.    5 - Pink
  65.    6 - Light Blue
  66.    7 - Gray
  67.    8 - White
  68.    9 - Black
  69.    
  70.    ",vec2(275,300),vec2(512,510))
  71.     # =====================================
  72.    
  73.     EGP2:egpText(5,"Filename: " +FileName,vec2(10,10))
  74.    
  75.     EGP2:egpText(6,"Drawing: ",vec2(220,50))
  76.    
  77.     A = 1
  78.     String = ""
  79.    
  80.     function createBox() {
  81.         A_array[A,string] = ":egpBox(" + A + ","
  82.         EGP:egpBox(A,Pos_default,Size_default)
  83.         EGP:egpColor(A,Color_default)
  84.         A++
  85.         exit()
  86.        
  87.     }
  88.    
  89.     function createRoundedBox() {
  90.         A_array[A,string] = ":egpRoundedBox(" + A + ","
  91.         EGP:egpRoundedBox(A,Pos_default,Size_default)
  92.         EGP:egpColor(A,Color_default)
  93.         A++
  94.         exit()
  95.        
  96.     }
  97.    
  98.     function createCircle() {
  99.         A_array[A,string] = ":egpCircle(" + A + ","
  100.         EGP:egpCircle(A,Pos_default,Size_default/2)
  101.         EGP:egpColor(A,Color_default)
  102.         A++
  103.         exit()
  104.        
  105.     }
  106.    
  107.     function createCircleOutline() {
  108.         A_array[A,string] = ":egpCircleOutline(" + A + ","
  109.         EGP:egpCircleOutline(A,Pos_default,Size_default/2)
  110.         EGP:egpColor(A,Color_default)
  111.         A++
  112.         exit()
  113.        
  114.     }
  115.    
  116.     function createWedge() {
  117.         A_array[A,string] = ":egpWedge(" + A + ","
  118.         EGP:egpWedge(A,Pos_default,Size_default/2)
  119.         EGP:egpColor(A,Color_default)
  120.         A++
  121.         exit()
  122.        
  123.     }
  124.    
  125.     function createWedgeOutline() {
  126.         A_array[A,string] = ":egpWedgeOutline(" + A + ","
  127.         EGP:egpWedgeOutline(A,Pos_default,Size_default/2)
  128.         EGP:egpColor(A,Color_default)
  129.         A++
  130.         exit()
  131.        
  132.     }
  133.    
  134.     function createText() {
  135.         A_array[A,string] = ":egpText(" + A + ","
  136.         EGP:egpText(A,"This is a String!",Pos_default)
  137.         EGP:egpColor(A,Color_default)
  138.         A++
  139.         exit()
  140.        
  141.     }
  142.    
  143.     function delete() {
  144.         A_array[A,string] = ""
  145.         EGP:egpRemove(A-1)
  146.         A--
  147.         if(A < 1) {A = 1}
  148.         exit()
  149.        
  150.     }
  151.    
  152.     function setBackground() {
  153.         EGP:egpPos(A-1,vec2(256,256))
  154.         EGP:egpSize(A-1,vec2(512,512))
  155.         exit()
  156.        
  157.     }
  158.    
  159.     function setDefault() {
  160.         EGP:egpPos(A-1,Pos_default)
  161.         EGP:egpSize(A-1,Size_default)
  162.         EGP:egpColor(A-1,Color_default)
  163.         exit()
  164.        
  165.     }
  166.    
  167.     function outputEGP() {
  168.             I = 1
  169.             while(I < EGP:egpNumObjects()+1) {
  170.                 Pos_array[I,vector2]   = EGP:egpPos(I)
  171.                 Size_array[I,vector2]  = EGP:egpSize(I)
  172.                 Color_array[I,vector4] = EGP:egpColor4(I)
  173.                
  174.                 # Remove comment if you want to write everything to your chat
  175.                 #print(A_array[I,string]+"vec2("+EGP:egpPos(I):x()+"," + EGP:egpPos(I):y()+"),vec2("+EGP:egpSize(I):x()+"," + EGP:egpSize(I):y()+")")
  176.                 #print(":egpColor("+I+",vec4("+EGP:egpColor4(I):x()+","+EGP:egpColor4(I):y()+","+EGP:egpColor4(I):z()+","+EGP:egpColor4(I):w()+")")
  177.                 #print(":egpAngle("+I+","+EGP:egpAngle(I)+")")
  178.                 #print("")
  179.                
  180.                 String += A_array[I,string]+"vec2("+EGP:egpPos(I):x()+"," + EGP:egpPos(I):y()+"),vec2("+EGP:egpSize(I):x()+"," + EGP:egpSize(I):y()+")\n"
  181.                 String += ":egpColor("+I+",vec4("+EGP:egpColor4(I):x()+","+EGP:egpColor4(I):y()+","+EGP:egpColor4(I):z()+","+EGP:egpColor4(I):w()+")\n"
  182.                 String += ":egpAngle("+I+","+EGP:egpAngle(I)+")\n\n"
  183.                
  184.                 I++
  185.                
  186.             }
  187.             if(fileCanWrite()) {
  188.                 fileWrite(FileName,String)
  189.                 String = ""
  190.                 print("data/e2files/"+FileName+" written")
  191.                 exit()
  192.                
  193.             } else {
  194.                 print("ERROR: Can't write to file: " + FileName)
  195.                 exit()
  196.                
  197.             }
  198.        
  199.         }
  200.        
  201.     function setColor(Col1:number, Col2:number, Col3:number, Col4:number) {
  202.         EGP:egpColor(A-1,vec4(Col1,Col2,Col3,Col4))
  203.        
  204.     }
  205.        
  206. } # first() end
  207.  
  208. if(E) {
  209.     if(SetPos) {
  210.         Pos = EGP:egpCursor(E)
  211.         EGP:egpPos(A-1,round(Pos,1))
  212.         EGP:egpText(99,"Position Mode",vec2(400,490))
  213.        
  214.     } elseif(SetColor) {
  215.         EGP:egpText(99,"Color Mode",vec2(420,490))
  216.        
  217.     } elseif(SetSize) {
  218.         if(A_array[A-1,string]:sub(1,9) != ":egpWedge" &
  219.             A_array[A-1,string]:sub(1,9) != ":egpCircle") {
  220.             EGP:egpSize(A-1,round(EGP:egpCursor(E),1))
  221.            
  222.         } else {
  223.             EGP:egpSize(A-1,round((Pos2:x()+Pos2:y())-(EGP:egpCursor(E):x()+EGP:egpCursor(E):y()),1))
  224.  
  225.         }
  226.         EGP:egpText(99,"Size Mode",vec2(430,490))
  227.        
  228.     } elseif(SetAngle) {
  229.         EGP:egpAngle(A-1,round(EGP:egpCursor(E):x()/1.3))
  230.         EGP:egpText(99,"Angle Mode",vec2(420,490))
  231.        
  232.     } else {
  233.         EGP:egpRemove(99)
  234.        
  235.     }
  236.    
  237.     interval(150)
  238.    
  239. } else {
  240.     SetPos   = 0
  241.     SetColor = 0
  242.     SetSize  = 0
  243.    
  244. }
  245.  
  246. if(~Key & Key) {
  247.           if(Key ==  49) {
  248.         createBox()
  249.        
  250.     } elseif(Key == 113) {
  251.         createRoundedBox()
  252.        
  253.     } elseif(Key ==  50) {
  254.         createCircle()
  255.        
  256.     } elseif(Key == 119) {
  257.         createCircleOutline()
  258.        
  259.     } elseif(Key ==  51) {
  260.         createWedge()
  261.        
  262.     } elseif(Key ==  52) {
  263.         createText()
  264.        
  265.     } elseif(Key == 101) {
  266.         createWedgeOutline()
  267.        
  268.     } elseif(Key == 127) {
  269.         delete()
  270.        
  271.     } elseif(Key ==  13) {
  272.         outputEGP()
  273.        
  274.     } elseif(Key == 120) {
  275.         SetPos = (SetPos ? 0 : 1)
  276.         SetColor = 0
  277.         SetSize  = 0
  278.         SetAngle = 0
  279.        
  280.     } elseif(Key == 99) {
  281.         SetColor = (SetColor ? 0 : 1)
  282.         Pos2     = EGP:egpCursor(E)
  283.         SetPos   = 0
  284.         SetSize  = 0
  285.         SetAngle = 0
  286.        
  287.     } elseif(Key == 121) {
  288.         SetSize  = (SetSize ? 0 : 1)
  289.         SetColor = 0
  290.         SetPos   = 0
  291.         SetAngle = 0
  292.        
  293.     } elseif(Key == 118) {
  294.         SetAngle = (SetAngle ? 0 : 1)
  295.         SetColor = 0
  296.         SetPos   = 0
  297.         SetSize  = 0
  298.          
  299.     } elseif(Key == 100) {
  300.         setDefault()
  301.        
  302.     } elseif(Key == 115) {
  303.         setBackground()
  304.        
  305.     }  elseif(Key == 129) {
  306.         setColor(255,0,0,255)
  307.    
  308.     } elseif(Key == 130) {
  309.         setColor(0,255,0,255)
  310.        
  311.     } elseif(Key == 131) {
  312.         setColor(0,0,255,255)
  313.        
  314.     } elseif(Key == 132) {
  315.         setColor(255,255,0,255)
  316.        
  317.     } elseif(Key == 133) {
  318.         setColor(255,0,255,255)
  319.        
  320.     } elseif(Key == 134) {
  321.         setColor(0,255,255,255)
  322.        
  323.     } elseif(Key == 135) {
  324.         setColor(125,125,125,255)
  325.        
  326.     } elseif(Key == 136) {
  327.         setColor(255,255,255,255)
  328.        
  329.     } elseif(Key == 137) {
  330.         setColor(0,0,0,255)
  331.        
  332.     }
  333.    
  334. }
  335.  
  336. EGP2:egpSetText(6,"Drawings: "+(A-1))
Advertisement
Add Comment
Please, Sign In to add comment