Here something I made. A tabber.
Code below :
Import mojo
Class tab
Field x:Int,y:Int
Field buttontext:String[10]
Field numbuttons:Int
Field activetab:Int=0
Method update()
If MouseDown(MOUSE_LEFT)
Local x1:Int=0
For Local i=0 Until numbuttons
Local tw:Int = TextWidth(buttontext[i])+16
If rectsoverlap(MouseX(),MouseY(),1,1,x+x1,y,tw,16)
activetab = i
Exit
End If
x1+=tw
Next
End If
End Method
Method draw()
Local x1:Int=0
For Local i=0 Until numbuttons
Local tw:Int = TextWidth(buttontext[i])+16
Local at:Bool=False
Local mo:Bool=False
If activetab=i Then at=True Else at=False
mo = rectsoverlap(MouseX(),MouseY(),1,1,x+x1,y,tw,16)
drawbutton(x+x1,y,tw,16,at,mo)
SetColor 255,255,255
DrawText buttontext[i],x+x1+(tw/2),y+8,0.5,0.5
x1+=tw
Next
End Method
Method drawbutton(x:Int,y:Int,w:Int,h:Int,selected:Bool,mouseover:Bool)
If selected = False
If mouseover=False Then
SetColor 150,150,150
Else
SetColor 180,180,180
End If
DrawRect x,y,w,h
SetColor 200,200,200
DrawLine x,y,x+w,y
DrawLine x,y,x,y+h
SetColor 100,100,100
DrawLine x,y+h,x+w,y+h
DrawLine x+w,y,x+w,y+h
End If
If selected = True
If mouseover=False Then
SetColor 100,100,100
Else
SetColor 130,130,130
End If
DrawRect x,y,w,h
SetColor 50,50,50
DrawLine x,y,x+w,y
DrawLine x,y,x,y+h
SetColor 70,70,70
DrawLine x,y+h,x+w,y+h
DrawLine x+w,y,x+w,y+h
End If
End Method
Method rectsoverlap:Bool(x1:Int, y1:Int, w1:Int, h1:Int, x2:Int, y2:Int, w2:Int, h2:Int)
If x1 >= (x2 + w2) Or (x1 + w1) <= x2 Then Return False
If y1 >= (y2 + h2) Or (y1 + h1) <= y2 Then Return False
Return True
End Method
End Class
Global t:tab = New tab
Class MyGame Extends App
Method OnCreate()
SetUpdateRate(60)
t.x = 50
t.y = 32
t.buttontext[0] = "City 1"
t.buttontext[1] = "City 2"
t.buttontext[2] = "City 3"
t.buttontext[3] = "City 4"
t.buttontext[4] = "City 5"
t.buttontext[5] = "City 6"
t.numbuttons = 6
End Method
Method OnUpdate()
t.update
End Method
Method OnRender()
Cls 0,0,0
SetColor 255,255,255
DrawText "Simple Tabber, press mouse on buttons to switch screens",0,0
DrawText "Tab Selected : "+t.activetab,t.x+100,t.y+100
t.draw
End Method
End Class
Function Main()
New MyGame()
End Function
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.