@name Hat Machine
@inputs EGP:wirelink StandV:vector
@outputs Page BarX I Inx1 Inx2 
@outputs User:entity Smodel:string Total
@persist Hat:string Particle:string PlayerN:string Inx1 Inx2
interval(50)

O=owner()
E=entity()
Cursor = EGP:egpCursor(User)

findByClass("Player")
User=findClosest(E:pos())

########   PRICES   ##########
Pskull=700
Pbomb=500
Pturtle=600
Pcone=500
Pmelon=600
Pcake=900
Trail=650

if(first()){
    EGP:egpClear()
    Page=1
    EGP:egpBox(1,vec2(256,256),vec2(512,512))
    EGP:egpMaterial(1,"vgui/pipboy_overlay")
    Smodel="models/Gibs/HGIBS.mdl"
    holoCreate(100,StandV)
    holoModel(100,Smodel)
    holoPos(100,StandV+vec(0,0,12))
    holoAng(100,ang(0,90,0))
    holoScale(100,vec(2,2,2))
    holoParent(100,entity())

    EGP:egpCircle(2,vec2(256,256),vec2(235,235))
    EGP:egpColor(2,vec(35,35,35))

    EGP:egpCircle(3,vec2(256,256),vec2(215,215))
    
    EGP:egpCircle(4,vec2(256,256),vec2(200,200))
    EGP:egpColor(4,vec(35,35,35))
    
    EGP:egpText(5,"Divalent's",vec2(156,150))
    EGP:egpSize(5,50)
    EGP:egpText(6,"Hat Shop",vec2(120,260))
    EGP:egpSize(6,70)
    
    EGP:egpColor(3,vec(0,255,0))
}
if(Page==2){
    #Loading Bar
    EGP:egpBox(7,vec2(256,256),vec2(512,512))
    EGP:egpMaterial(7,"vgui/pipboy_overlay")
    EGP:egpRoundedBox(8,vec2(256,256),vec2(BarX,100))
    EGP:egpColor(8,vec(0,255,0))
    #Loading Text
    EGP:egpText(9,"Loading...",vec2(116,220))
    EGP:egpColor(9,vec(255,255,255))
    EGP:egpSize(9,75)
    for(I = 1, 6){
        BarX++
        if(BarX>400){BarX=400,Page=3,EGP:egpClear(),Page=3}
    }
}

if(Page==1 & inrange(Cursor, EGP:egpPos(2)-EGP:egpSize(2)/2, EGP:egpPos(2)+EGP:egpSize(2)/2) & User:keyUse()){

    EGP:egpClear()
    EGP:egpRoundedBox(10,vec2(256,256),vec2(512,512))
    EGP:egpColor(10,vec(15,15,15))
    
    EGP:egpRoundedBox(11,vec2(256,256),vec2(400,100))
    EGP:egpColor(11,vec(255,0,0))
    Page=2
}

if(Page==3){
    EGP:egpBox(12,vec2(256,256),vec2(512,512))
    EGP:egpMaterial(12,"vgui/pipboy_overlay")
    
    EGP:egpText(13,"Select A Model For Your Hat!",vec2(75,10))
    EGP:egpColor(13,vec(0,0,0))
    EGP:egpSize(13,30)
    #Buttons to press
    
    #Buttons for choosing
    #left side
    EGP:egpRoundedBox(14,vec2(157,76),vec2(150,32))
    EGP:egpColor(14,vec(255,0,0))
    
    EGP:egpRoundedBox(15,vec2(157,176),vec2(150,32))
    EGP:egpColor(15,vec(255,0,0))
    
    EGP:egpRoundedBox(16,vec2(157,126),vec2(150,32))
    EGP:egpColor(16,vec(255,0,0))
    #right side
    EGP:egpRoundedBox(17,vec2(352,76),vec2(135,32))
    EGP:egpColor(17,vec(255,0,0))
    
    EGP:egpRoundedBox(18,vec2(360,176),vec2(150,32))
    EGP:egpColor(18,vec(255,0,0))
    
    EGP:egpRoundedBox(19,vec2(355,126),vec2(140,32))
    EGP:egpColor(19,vec(255,0,0))
    
    EGP:egpRoundedBox(20,vec2(157,126),vec2(150,120))
    EGP:egpColor(20,vec(255,0,0))
    
    EGP:egpRoundedBox(21,vec2(360,126),vec2(160,135))
    EGP:egpColor(21,vec(255,0,0))
    #Middle
    EGP:egpRoundedBox(22,vec2(260,276),vec2(175,35))
    EGP:egpColor(22,vec(255,0,0))
    #End
    EGP:egpText(23,"Skull: "+Pskull,vec2(90,60))
    EGP:egpColor(23,vec(255))
    EGP:egpSize(23,30)
    
    EGP:egpText(24,"Turtle: "+Pbomb,vec2(90,110))
    EGP:egpColor(24,vec(255))
    EGP:egpSize(24,30)
    
    EGP:egpText(25,"Bomb: "+Pturtle,vec2(90,160))
    EGP:egpColor(25,vec(255))
    EGP:egpSize(25,30)
    
    EGP:egpText(26,"Cone: "+Pcone,vec2(290,60))
    EGP:egpColor(26,vec(255))
    EGP:egpSize(26,30)
    
    EGP:egpText(27,"Cake: "+Pmelon,vec2(290,110))
    EGP:egpColor(27,vec(255))
    EGP:egpSize(27,30)
    
    EGP:egpText(28,"Melon: "+Pcake,vec2(290,160))
    EGP:egpColor(28,vec(255))
    EGP:egpSize(28,30)
    
    EGP:egpText(29,"Trail: "+Trail,vec2(180,256))
    EGP:egpColor(29,vec(255))
    EGP:egpSize(29,40)
    
    if(inrange(Cursor, EGP:egpPos(14)-EGP:egpSize(14)/2, EGP:egpPos(14)+EGP:egpSize(14)/2) & User:keyUse()){
    Hat="models/Gibs/HGIBS.mdl"
    Smodel=Hat
    Total=Pskull
    Page=5
    }
    if(inrange(Cursor, EGP:egpPos(15)-EGP:egpSize(15)/2, EGP:egpPos(15)+EGP:egpSize(15)/2) & User:keyUse()){
    Hat="models/Combine_Helicopter/helicopter_bomb01.mdl"
    Smodel=Hat
    Total=Pbomb
    Page=5
    }
    if(inrange(Cursor, EGP:egpPos(16)-EGP:egpSize(16)/2, EGP:egpPos(16)+EGP:egpSize(16)/2) & User:keyUse()){
    Hat="models/props/de_tides/vending_turtle.mdl"
    Smodel=Hat
    Total=Pturtle
    Page=5
    }
    if(inrange(Cursor, EGP:egpPos(17)-EGP:egpSize(17)/2, EGP:egpPos(17)+EGP:egpSize(17)/2) & User:keyUse()){
    Hat="models/duncehat/duncehat.mdl"
    Smodel=Hat
    Total=Pcone
    Page=5  
    }
    if(inrange(Cursor, EGP:egpPos(18)-EGP:egpSize(18)/2, EGP:egpPos(18)+EGP:egpSize(18)/2) & User:keyUse()){
    Hat="models/props_junk/watermelon01.mdl"
    Smodel=Hat
    Total=Pmelon
    Page=5
    }
    if(inrange(Cursor, EGP:egpPos(19)-EGP:egpSize(19)/2, EGP:egpPos(19)+EGP:egpSize(19)/2) & User:keyUse()){
    Hat="models/cakehat/cakehat.mdl"
    Smodel=Hat
    Total=Pcake
    Page=5  
    }
}
if(Page==5){
    EGP:egpClear()
    EGP:egpBox(30,vec2(256,256),vec2(512,512))
    EGP:egpMaterial(30,"vgui/pipboy_overlay")
    #Complete
    EGP:egpRoundedBox(31,vec2(256,256),vec2(400,100))
    EGP:egpColor(31,vec(255,0,0))
    #Button Text
    EGP:egpText(32,"Finish!",vec2(156,220))
    EGP:egpColor(32,vec(255,255,255))
    EGP:egpSize(32,75)
    
    PlayerN = "Player: "+User:name()
    
    EGP:egpText(33,PlayerN,vec2(PlayerN:length()+256/2/2,310))
    EGP:egpColor(33,vec(255,255,255))
    EGP:egpSize(33,50)
    
    if(inrange(Cursor, EGP:egpPos(31)-EGP:egpSize(31)/2, EGP:egpPos(31)+EGP:egpSize(31)/2) & changed(User:keyUse()) & User:keyUse()){    
    moneyRequest(User, Total)
  }
}
if(moneyClk()==1){
    Inx1=200
    Inx2=201
    
    holoCreate(Inx1)
    holoPos(Inx1, User:attachmentPos("eyes")+vec(0,0,0))
    holoAng(Inx1, User:attachmentAng("eyes"))
    holoParentAttachment(Inx1,User,"eyes")
    holoEntity(Inx1):setColor(vec(), 0)

    holoCreate(Inx2)
    holoPos(Inx2, holoEntity(Inx1):pos() + holoEntity(Inx1):up() + holoEntity(Inx1):forward()*-4)
    holoAng(Inx2, holoEntity(Inx1):angles())
    holoModel(Inx2,Hat)
    holoParent(Inx2,Inx1)
    holoScale(Inx2,vec(2,2,2))
    holoVisible(Inx2,User,0)
    Total=0
    EGP:egpClear()
    Page=1
    }
if(User:keyUse()){
    Cursorcolor=vec4(0,0,0,0)
}else{
    Cursorcolor=vec4(0,0,0,0)
}
if(EGP:entity():pos():distance(User:pos()) > 100) {EGP}

EGP:egpCircle(100, vec2(0,0), vec2(8,8))
EGP:egpColor(100,Cursorcolor)
EGP:egpParentToCursor(100)
