Need a chart or something to find out a position?

Blitz3D Forums/Blitz3D Programming/Need a chart or something to find out a position?

AM(Posted 2016) [#1]
Hi dose blitz3d have a chart somewhere that has
Y Hight Width.
I'm tying to move a image from left side of the screen to the midele of the screen and just want to know if there is a chart of the with and hight of the image.

Thank you


RustyKristi(Posted 2016) [#2]
Maybe you're going for something like this? middle of the screen is

X = GraphicsWidth()/2 - (imagewidth/2)
Y = GraphicsHeight()/2 - (imageheight/2)


AM(Posted 2016) [#3]
Here is what I have, I just dont know how to set it to the middle, I have this code I just want to move this to middle.


Function CreateActionBarButtonHide(TexName$, X#, Toggle = True, FreeTex = True)

	Tex = LoadTexture("File\Images\GUI\" + TexName$, 1)
	;                                       y#        Hight       Width           color when activated
	Button = GY_CreateButton(0, X# - 10.0, 0.8, 0.05, 0.05, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function


I'm just looking for a number chart or something like that.


AM(Posted 2016) [#4]
I understand the code is just I can not get a grip on how to move button to left and right and up and down, thats why i was wondering if theirs a easy way for me to do this.


RustyKristi(Posted 2016) [#5]
Function CreateActionBarButtonHide(TexName$, X#, Toggle = True, FreeTex = True)
       imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("File\Images\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, imageheight, imagewidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function



AM(Posted 2016) [#6]
Hi, thanks, can you explain a little about how you came up with this.

imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 



RustyKristi(Posted 2016) [#7]
That is just a sample but it got mixed up with your example. Just replaced it with your image dimensions so it can be centered properly.


AM(Posted 2016) [#8]
Hi thanks for the replay here is what I'm trying to do, Here is my GUI Image.



This is just a draft of a gui.


RustyKristi(Posted 2016) [#9]
That looks neat. You could post part of your code at least with just placeholders if you need some hands on help here so others can chime in.


AM(Posted 2016) [#10]
Hello here is my code it starts with UpdateInterface() and the end is UpdateActionBarIcons()



Function CreateInterface()
;helptex = LoadTexture("Data\Textures\GUI\BG.png", 1 + 2)

	; Quit bar
;	QuitLabel = GY_CreateLabel(0, 0.5, 0.4, LanguageString$(LS_QuitProgress), 255, 255, 255, Justify_Centre)
;	QuitBar = GY_CreateProgressBar(0, 0.35, 0.43, 0.3, 0.02, 0, 100, 255, 255, 0)

	; Chat bubble
	ChatBubbleFont = GY_LoadFont("Data\UI\Fonts\Bubble", True)
	ChatBubbleEN = CreateMesh()
	Surf = CreateSurface(ChatBubbleEN)
	v1  = AddVertex(Surf, -0.1, -1.1,  0.0, 1.0, 0.0)
	v2  = AddVertex(Surf,  0.0, -1.1,  0.0, 0.9, 0.0)
	v3  = AddVertex(Surf,  1.0, -1.1,  0.0, 0.1, 0.0)
	v4  = AddVertex(Surf,  1.1, -1.1,  0.0, 0.0, 0.0)
	v5  = AddVertex(Surf, -0.1, -1.0,  0.0, 1.0, 0.1)
	v6  = AddVertex(Surf,  0.0, -1.0,  0.0, 0.9, 0.1)
	v7  = AddVertex(Surf,  1.0, -1.0,  0.0, 0.1, 0.1)
	v8  = AddVertex(Surf,  1.1, -1.0,  0.0, 0.0, 0.1)
	v9  = AddVertex(Surf, -0.1,  0.0,  0.0, 1.0, 0.66)
	v10 = AddVertex(Surf,  0.0,  0.0,  0.0, 0.9, 0.66)
	v11 = AddVertex(Surf,  1.0,  0.0,  0.0, 0.1, 0.66)
	v12 = AddVertex(Surf,  1.1,  0.0,  0.0, 0.0, 0.66)
	v13 = AddVertex(Surf, -0.1,  0.25, 0.0, 1.0, 1.0)
	v14 = AddVertex(Surf,  0.0,  0.25, 0.0, 0.9, 1.0)
	v15 = AddVertex(Surf,  1.0,  0.25, 0.0, 0.1, 1.0)
	v16 = AddVertex(Surf,  1.1,  0.25, 0.0, 0.0, 1.0)
	AddTriangle(Surf, v1,  v2,  v5)
	AddTriangle(Surf, v2,  v6,  v5)
	AddTriangle(Surf, v2,  v3,  v6)
	AddTriangle(Surf, v3,  v7,  v6)
	AddTriangle(Surf, v3,  v4,  v7)
	AddTriangle(Surf, v4,  v8,  v7)
	AddTriangle(Surf, v5,  v6,  v9)
	AddTriangle(Surf, v6,  v10, v9)
	AddTriangle(Surf, v6,  v7,  v10)
	AddTriangle(Surf, v7,  v11, v10)
	AddTriangle(Surf, v7,  v8,  v11)
	AddTriangle(Surf, v8,  v12, v11)
	AddTriangle(Surf, v9,  v10, v13)
	AddTriangle(Surf, v10, v14, v13)
	AddTriangle(Surf, v10, v11, v14)
	AddTriangle(Surf, v11, v15, v14)
	AddTriangle(Surf, v11, v12, v15)
	AddTriangle(Surf, v12, v16, v15)
	HideEntity(ChatBubbleEN)
	ChatBubbleTex = LoadTexture("Data\Textures\Bubble.png", 1 + 4)
	If ChatBubbleTex = 0 Then RuntimeError("File not found: Data\Textures\Bubble.png!")

	; Chat bar
	If ChatBar <> Null
		ChatBar\Component = CreateInterfaceQuad(GY_Cam)
		EntityTexture(ChatBar\Component, GetTexture(ChatBar\Texture))
		UnloadTexture(ChatBar\Texture)
		ScaleMesh(ChatBar\Component, ChatBar\Width# * 20.0, ChatBar\Height# * 15.0, 1.0)
		PositionEntity(ChatBar\Component, (ChatBar\X# * 20.0) - 10.0, (ChatBar\Y# * -15.0) + 7.5, 10.0)
		EntityAlpha(ChatBar\Component, ChatBar\Alpha#)
	EndIf

	; Attribute displays
	For i = 0 To 39
		If AttributeDisplays(i)\Width# > 0.0 And AttributeDisplays(i)\Height# > 0.0
			; Create bar
			
				; Game options
	F = ReadFile("Data\Options.dat")
	If F = 0 Then RuntimeError("Could not open Data\Options.dat!")
		Width = ReadShort(F)
		Height = ReadShort(F)

	CloseFile(F)
			
			
			
	;		R = AttributeDisplays(i)\R : G = AttributeDisplays(i)\G : B = AttributeDisplays(i)\B
	;		X# = Width - Width ;(winX# * 20) - 10.0 ; - winX# ; - winX# ;+ 0.05 ;AttributeDisplays(i)\X#
	;		Y# = AttributeDisplays(i)\Y#
	;		W# = AttributeDisplays(i)\Width#
	;		H# = AttributeDisplays(i)\Height#
	;		AttributeDisplays(i)\Component = GY_CreateProgressBar(0, X#, Y#, W#, H#, 50, 100, R, G, B)
			
			
			R = AttributeDisplays(i)\R : G = AttributeDisplays(i)\G : B = AttributeDisplays(i)\B
			X# = AttributeDisplays(i)\X#
			Y# = AttributeDisplays(i)\Y#
			W# = AttributeDisplays(i)\Width#
			H# = AttributeDisplays(i)\Height#
			AttributeDisplays(i)\Component = GY_CreateProgressBar(0, X#, Y#, W#, H#, 50, 100, R, G, B)			
			
			
			
			GY_GadgetAlpha(AttributeDisplays(i)\Component, 0.85, True)
			GY_DropGadget(AttributeDisplays(i)\Component)

			; Create number display
			X# = X# + (W# / 2.0)
			Y# = (Y# + (H# / 2.0)) - 0.015


		EndIf
	Next

	; Large map
	
;;	WLargeMap = GY_CreateWindow(LanguageString$(LS_Map), 0.15, 0.1, 0.6, 0.8, True, True, False, 0, False)
;############################# Money bag ####################################
Portrait = LoadTexture("Data\Textures\Menu\A_OptionsMenu.png", 1 + 2)

;WLargeMap = GY_CreateWindow(LanguageString$(LS_Map), 0.0, 0.0, 1.0, 1.0, False, False, False, Portrait)
;WLargeMap = GY_CreateWindow(0, 0.78, 0.1, 0.2, 0.4, False, False, False, Portrait)


WLargeMap = GY_CreateWindow(0, 0.01, 0.01, 1.0, 1.0, False, False, False, Portrait)
	;GY_CreateLabel_Menu(WLargeMap, 0.5, 0.125, Me\Name$, 210, 210, 210, Justify_Centre)
	
	
;	BShowGrass = GY_CreateCustomButton(WLargeMap, 0.1, 0.13, 0.8, 0.13, LoadButtonU("A_Grass"), LoadButtonD("A_Grass"), LoadButtonH("A_Grass"))	
;	BShowFlowers = GY_CreateCustomButton(WLargeMap, 0.1, 0.28, 0.8, 0.13, LoadButtonU("A_Flowers"), LoadButtonD("A_Flowers"), LoadButtonH("A_Flowers"))
;	BShowShadows= GY_CreateCustomButton(WLargeMap, 0.1, 0.43, 0.8, 0.13, LoadButtonU("A_Shadows"), LoadButtonD("A_Shadows"), LoadButtonH("A_Shadows"))	
;	BDistance= GY_CreateCustomButton(WLargeMap, 0.1, 0.58, 0.8, 0.13, LoadButtonU("A_Distance"), LoadButtonD("A_Distance"), LoadButtonH("A_Distance"))

	
	
;	BScreenRez= GY_CreateCustomButton(WLargeMap, 0.1, 0.73, 0.8, 0.13, LoadButtonU("A_Quithf"), LoadButtonD("A_Quithf"), LoadButtonH("A_Quithf"))
	
		BShowGrass = GY_CreateCustomButton(WLargeMap, 0.1, 0.14, 0.2, 0.04, LoadButtonU("A_Grass"), LoadButtonD("A_Grass"), LoadButtonH("A_Grass"))	
	BShowFlowers = GY_CreateCustomButton(WLargeMap, 0.1, 0.2, 0.2, 0.04, LoadButtonU("A_Flowers"), LoadButtonD("A_Flowers"), LoadButtonH("A_Flowers"))
	BShowShadows= GY_CreateCustomButton(WLargeMap, 0.1, 0.26, 0.2, 0.04, LoadButtonU("A_Shadows"), LoadButtonD("A_Shadows"), LoadButtonH("A_Shadows"))	
	BDistance= GY_CreateCustomButton(WLargeMap, 0.1, 0.32, 0.2, 0.04, LoadButtonU("A_Distance"), LoadButtonD("A_Distance"), LoadButtonH("A_Distance"))

	
	
	BScreenRez= GY_CreateCustomButton(WLargeMap, 0.1, 0.38, 0.2, 0.04, LoadButtonU("A_Quithf"), LoadButtonD("A_Quithf"), LoadButtonH("A_Quithf"))
		
	


;############################################################################
	; Chat entry
	ChatEntry\Component = GY_CreateChatTextField(0, ChatEntry\X#, ChatEntry\Y#, ChatEntry\Width#, 0, 100)
	ChatEntry\Alpha# = 0.0
	GY_GadgetAlpha(ChatEntry\Component, 0.0)

	; Compass
	Compass\Component = GY_CreateQuad(GY_Cam)
	Tex = LoadTexture("Data\Textures\Compass Overlay.PNG", 1 + 4)
	If Tex = 0 Then RuntimeError("File not found: Data\Textures\Compass Overlay.PNG!")
	EntityTexture(Compass\Component, Tex)
	FreeTexture(Tex)
	ScaleMesh(Compass\Component, Compass\Width# * 20.0, Compass\Height# * 15.0, 1.0)
	PositionEntity(Compass\Component, (Compass\X# * 20.0) - 10.0, (Compass\Y# * -15.0) + 7.5, 10.0)
	EntityOrder(Compass\Component, -1)
	EntityAlpha(Compass\Component, Compass\Alpha#)
	CompassBackground = GY_CreateQuad(GY_Cam)
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1 + 2); took out +4

	If Tex = 0 Then RuntimeError("File not found: Data\Textures\Compass.PNG!")
	EntityTexture(CompassBackground, Tex)
	FreeTexture(Tex)
	ScaleMesh(CompassBackground, Compass\Width# * 20.0, Compass\Height# * 15.0, 1.0)
	PositionEntity(CompassBackground, (Compass\X# * 20.0) - 10.0, (Compass\Y# * -15.0) + 7.5, 10.0)
	EntityOrder(CompassBackground, -2)
	EntityAlpha(CompassBackground, Compass\Alpha#)
	EntityParent(CompassBackground, Compass\Component)

	; Actor effect icons
	IconsAcross = Floor#(BuffsArea\Width# / 0.0225)
	IconsDown = Floor#(BuffsArea\Height# / 0.03)
	X# = BuffsArea\X#
	Y# = BuffsArea\Y#
	For i = 1 To IconsDown
		For j = 1 To IconsAcross
			EIS.EffectIconSlot = New EffectIconSlot
			EIS\EN = GY_CreateQuad(GY_Cam)
			EntityOrder(EIS\EN, -1)
			PositionEntity(EIS\EN, (X# * 20.0) - 10.0, (Y# * -15.0) + 7.5, 10.0)
			ScaleMesh(EIS\EN, 0.0225 * 20.0, 0.03 * 15.0, 1.0)
			HideEntity(EIS\EN)
			X# = X# + 0.0225
		Next
		X# = BuffsArea\X#
		Y# = Y# + 0.03
	Next

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	; Action bar
	ActionBarUpTex = LoadTexture("Data\Textures\GUI\A_Up.png");#############################
	If ActionBarUpTex = 0 Then RuntimeError("File not found: Data\Textures\GUI\ArrowUp.bmp!");###############################
	ActionBarDownTex = LoadTexture("Data\Textures\GUI\A_Down.png");#######################################
	If ActionBarDownTex = 0 Then RuntimeError("File not found: Data\Textures\GUI\ArrowDown.bmp!");##########################
	ActionEN = GY_CreateQuad(GY_Cam)
	EntityOrder ActionEN, -1
	
	
	; Use fullscreen bar
	ClearTextureFilters
	TextureFilter("a_", 1 + 2)
	TextureFilter("m_", 1 + 4)
	
	;      Width = GfxModeWidth() 
  ;    Height = GfxModeHeight()

	Tex = LoadTexture("Data\Textures\GUI\a_Action Bar_full.png", 1 + 2)
	If tex = 0 Then Tex = LoadTexture("Data\Textures\GUI\Action Bar_full.bmp", 1 + 4 + 16 + 32)
	If tex <> 0
		PositionEntity ActionEN, -10.0, 7.55, 10.0
		
	;	PositionEntity ActionEN, 0.0, 0.0, 10.0

		
		ScaleMesh ActionEN, 20.0, 15.0, 1
		
	;	ScaleMesh ActionEN, winX#/50,winY#/50, 1

		
	;	GY_CreateLabelChar(ActionEN, 0.17, 0.058, Me\Name$, 176, 163, 111, Justify_Centre)
;		GY_CreateLabel_Menu(ActionEN, 0.25, 0.035, Me\Level, 210, 210, 210, Justify_Centre)
;GY_UpdateLabel(LLevel, "  " + Me\Level)
	;	If Me\HomeFaction=4 ;wild animals
;GY_CreateWindow(ActionEN, 2.01, 2.01, 2.01, 2.06, False, False, False, LoadTexture("Data\Textures\GUI\a_Action BarOverlay_full.png", 1 + 2))
	
GY_CreateWindow(ActionEN, 0.06, 0.0505, 0.15, 0.031, False, False, False, LoadTexture("Data\Textures\GUI\a_Action BarOverlay.png"))



	;Else	

	;	GY_CreateWindow(ActionEN, 0.05, 0.05, 0.05, 0.05, False, False, False, LoadTexture("Data\Textures\GUI\A_InventoryBG.png"))
	
;GY_CreateWindow(ActionEN, 0.01, 0.01, 8.01, 8.06, False, False, False, LoadTexture("Data\Textures\GUI\a_Action BarOverlay_full.png", 1 + 2))
	
;EndIf
	

		
		

	EndIf
	
	; Use the regular bar if the fullscreen bar is not available
	If tex = 0 
		Tex = LoadTexture("Data\Textures\GUI\Action Bar.dds", 1 + 2 + 16 + 32)
		If tex = 0 Then Tex = LoadTexture("Data\Textures\GUI\Action Bar.bmp", 1 + 4 + 16 + 32)
		
		PositionEntity ActionEN, -10.0, -5.0, 10.0
		ScaleMesh ActionEN, 20.0, 2.5, 1.0
	EndIf
	
;	
;	If LoadScreen = True
;		EntityTexture(ActionEN, LoadTexture("Data\Textures\GUI\A_Blank.png"))
;	FreeTexture Tex
;
;	Else
	
		EntityTexture(ActionEN, Tex)
	FreeTexture Tex

;	EndIf
	
	
	EntityTexture(ActionEN, Tex)
	FreeTexture Tex
;	XPEN = GY_CreateQuad(GY_Cam)
;	EntityOrder XPEN, -2
;	PositionEntity XPEN, -6.416015625, -5.0, 10.0 : ScaleMesh XPEN, 0.0, 0.0, 0.0
;	Tex = LoadTexture("Data\Textures\GUI\Help.bmp", 1 + 2)
;	EntityTexture(XPEN, Tex)
;	FreeTexture Tex

;	BMap = CreateActionBarButton("A_Blank2.png", 0.89) ; Option Menu for rendering
	BMap = GY_CreateCustomButton(0, 0.013, 0.03, 0.05, 0.065, LoadButtonU("A_Pack"), LoadButtonD("A_Pack"), LoadButtonH("A_Pack"), True)

	
;	BChat = CreateActionBarButton2("A_Blank2.png", 0.84)
		
;helptex = LoadTexture("Data\Textures\GUI\A_Up.png", 1 + 2)
	
;helptex = LoadTexture("Data\Textures\GUI\Tab.png", 1 + 2)


								;Select Rand(1,4)
								;	Case 1
;CryTex = LoadTexture("Data\Textures\GUI\A_Blank2.png", 1);Weapon
								;	Case 2
;CryTex = LoadTexture("Data\Textures\GUI\A_Crystal.png", 1);Weapon
								;	Case 3
;CryTex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Weapon
								;	Case 4
;CryTex = LoadTexture("Data\Textures\GUI\A_Crystal.png", 1);Weapon
							;	End Select





	
;	CreateInventoryButton2(0, SlotI_Weapon, Tex)
;	BCrystal = CreateInventoryButton2(0, SlotI_Amulet2, CryTex)



	
	
;###################

	BCharStats = GY_CreateCustomButton(0, 0.000, 0.27,  0.02, 0.06, LoadButtonU("A_Tab"), LoadButtonD("A_Tab"), LoadButtonH("A_Tab"), True)
	BHelp =      GY_CreateCustomButton(0, 0.000, 0.345, 0.02, 0.06, LoadButtonU("A_Tab"), LoadButtonD("A_Tab"), LoadButtonH("A_Tab"), True)
	BSpells =    GY_CreateCustomButton(0, 0.000, 0.42,  0.02, 0.06, LoadButtonU("A_Tab"), LoadButtonD("A_Tab"), LoadButtonH("A_Tab"), True)
	BInventory = GY_CreateCustomButton(0, 0.000, 0.57,  0.02, 0.06, LoadButtonU("A_Tab"), LoadButtonD("A_Tab"), LoadButtonH("A_Tab"), True)
	BQuestlog =	 GY_CreateCustomButton(0, 0.000, 0.495, 0.02, 0.06, LoadButtonU("A_Tab"), LoadButtonD("A_Tab"), LoadButtonH("A_Tab"), True)
	GY_GadgetAlpha(BCharStats , 0.5)
	GY_GadgetAlpha(BHelp , 0.5)
	GY_GadgetAlpha(BSpells , 0.5)
	GY_GadgetAlpha(BInventory , 0.5)
	GY_GadgetAlpha(BQuestlog , 0.5)


;###################
	BParty = CreateActionBarButton1("A_Blank.png", 0.94)

	GY_DropGadget(BPrevBar)
	GY_DropGadget(BNextBar)
	For i = 0 To 0
	
	
	;															Starting #			Spread #
		;BActionBar(i) = CreateActionBarButton("A_EmptySlot.png", 0.59 + (Float#(i) * 0.051), False, False)
 BActionBar(i) = CreateActionBarButtonUP("A_EmptySlot.png", 0.855, False, False)

	Next
	For i = 1 To 1
	
	
	;															Starting #			Spread #
		;BActionBar(i) = CreateActionBarButton("A_EmptySlot.png", 0.59 + (Float#(i) * 0.051), False, False)
 BActionBar(i) = CreateActionBarButtonDown("A_EmptySlot.png", 0.855, False, False)

	Next
	For i = 2 To 2
	
	
	;															Starting #			Spread #
		;BActionBar(i) = CreateActionBarButton("A_EmptySlot.png", 0.59 + (Float#(i) * 0.051), False, False)
 BActionBar(i) = CreateActionBarButtonLeft("A_EmptySlot.png", 0.81, False, False)

	Next
	For i = 3 To 3
	
	
	;															Starting #			Spread #
		;BActionBar(i) = CreateActionBarButton("A_EmptySlot.png", 0.59 + (Float#(i) * 0.051), False, False)
 BActionBar(i) = CreateActionBarButtonRight("A_EmptySlot.png", 0.90, False, False)

	Next
	
	
;	For i = 4 To 4
	
	
	;crystal															Starting #			Spread #
		;BActionBar(i) = CreateActionBarButton("A_EmptySlot.png", 0.59 + (Float#(i) * 0.051), False, False)
; BActionBar(i) = CreateActionBarButtonCenter("A_Blank2.png", 0.855, False, False)

;	Next	
	
	
	
	
	
	
	
	
	
		For i = 4 To 11 ;11
	
	
	;															Starting #			Spread #
		;BActionBar(i) = CreateActionBarButton("A_EmptySlot.png", 0.59 + (Float#(i) * 0.051), False, False)
 BActionBar(i) = CreateActionBarButtonHide("A_Blank.png", 0.0, False, False)

	Next

	
	
	

	; Chat text display
	MaxChatLine = Int(Floor#(Chat\Height# / 0.025)) - 1
	Dim ChatLines(MaxChatLine)
	Y# = Chat\Y#
	;X# = winX# ;Chat\X#
	X# = Chat\X#

	If Chat\X# <= 0.5 Then X# = X# + 0.035
	For i = 0 To MaxChatLine
		ChatLines(i) = GY_CreateLabelchat(0, X#, Y#, String$(" ", 200))
		GY_UpdateLabel(ChatLines(i), "")
		GY_DropGadget(ChatLines(i))
	;	Y# = Y# + 0.025
		Y# = Y# + 0.013

	Next
	X# = Chat\X# + 0.005
	If Chat\X# > 0.5 Then X# = Chat\X# + Chat\Width# - 0.025
	BHistoryMode = GY_CreateButton(0, X#, Chat\Y# + 0.005, 0.02, 0.015, "", False, 0, 0, 0, ActionBarDownTex)
	GY_GadgetAlpha(BHistoryMode, 0.85)
	BHistoryUp = GY_CreateButton(0, X#, Chat\Y# + 0.005, 0.02, 0.015, "", False, 0, 0, 0, ActionBarUpTex)
	BHistoryDown = GY_CreateButton(0, X#, Chat\Y# + 0.025, 0.02, 0.015, "", False, 0, 0, 0, ActionBarDownTex)
	GY_GadgetAlpha(BHistoryUp, 0.0)
	GY_GadgetAlpha(BHistoryDown, 0.0)

	; Amount dialog
	Tex = LoadTexture("Data\Textures\GUI\A_Amount.png", 1 + 2)
	WAmount = GY_CreateWindow(LanguageString$(LS_ChooseAmount), 0.35, 0.4, 0.3, 0.14, False, False, False, tex)
	BAmountOK = GY_CreateButton(WAmount, 0.7, 0.38, 0.2, 0.2, "")
	TAmount = GY_CreateTextField(WAmount, 0.4, 0.35, 0.31, 2, 5)

	; Party window (NOW BOSS WINDOW)
	WParty = GY_CreateWindow(LanguageString$(LS_Party), 0.3, 0.015, 0.4, 0.13, False, False, False, LoadTexture("Data\Textures\GUI\A_PartyBG.png"))
	WBossLabel = GY_CreateLabel_Menu(WParty, 0.5, 0.1, "              ", 255, 255, 255, Justify_Centre)
	BossBloodP = GY_CreateProgressBar(WParty, 0.19, 0.43, 0.625, 0.14, 100, 100, 142, 0, 0)

	Tex = LoadTexture("Data\Textures\GUI\Backpack.bmp", 4)


;	Y# = 0.05
;	For i = 0 To 6
;		LPartyName(i) = GY_CreateLabel(WParty, 0.05, Y#, "LONGEST PLAYER NAME GOES HERE!")
;		Y# = Y# + 0.07
;	Next
;	For i = 0 To 6
;		GY_UpdateLabel(LPartyName(i), "", 255, 255, 0)
;	Next

	; Spells (abilities) window
	If RequireMemorise = 0 Then FirstSpell = 0
	WSpells = GY_CreateWindow(LanguageString$(LS_Abilities), 0.008, 0.001, 0.31, 0.73, False, False, False, LoadTexture("Data\Textures\GUI\A_AbilitiesBG.png"))
	
	BPrevSpells = GY_CreateButtonChar(WSpells, 0.26, 0.85, 0.1, 0.05, "Previous", True, 220, 220, 220)
	BNextSpells = GY_CreateButtonChar(WSpells, 0.68, 0.85, 0.1, 0.05, "Next", True, 220, 220, 220)
	
	GY_CreateLabel_Menu(WSpells, 0.12, 0.185, Me\Name$, 255, 255, 255, Justify_Left)
	GY_CreateLabelChar(WSpells, 0.66, 0.195, Me\Actor\Race$, 250, 240, 220, Justify_Left)
	LLevel = GY_CreateLabel_Menu(WSpells, 0.88, 0.15, "     ", 210, 210, 210, Justify_Centre)
	GY_UpdateLabel(LLevel, "  " + Me\Level)
	FR = GY_CreateLabelChar(WSpells, 0.66, 0.215, FactionNames$(Me\HomeFaction), 250, 240, 220, Justify_Left)
	GY_UpdateLabel(FR, FactionNames$(Me\HomeFaction))



	X# = 0.183
	Y# = 0.43

	ButtonTex = CreateTexture(2, 2)
	For i = 0 To 9
		; Create gadgets
		If i = 5 Then X# = 0.51 : Y# = 0.05 ; Move sideways to second 'page'
		BSpellImgs(i) = GY_CreateButton(WSpells, X#, Y#, 0.14, 0.07, "", False, 0, 0, 0, ButtonTex)
		LSpellNames(i) = GY_CreateLabelchar(WSpells, X# + 0.15, Y# + 0.0185, "LONGEST SPELL NAME GOES HERE!", 210, 210, 210)
	;	LSpellLevels(i) = GY_CreateLabel_blank(WSpells, X#, Y# + 0.02, LanguageString$(LS_Level) + " 00000", 10,10,10)
		Y# = Y# + 0.06
	Next
	UpdateSpellbook()

	; Spell unmemorisation confirmation box
	WSpellRemove = GY_CreateWindow(LanguageString$(LS_Unmemorise), 0.35, 0.4, 0.4, 0.1, True, True, False)
	GY_CreateLabel(WSpellRemove, 0.5, 0.05, LanguageString$(LS_UnmemoriseDetail), 255, 255, 255, Justify_Centre)
	BSpellRemoveOK = GY_CreateButton(WSpellRemove, 0.1, 0.7, 0.3, 0.2, LanguageString$(LS_Yes))
	BSpellRemoveCancel = GY_CreateButton(WSpellRemove, 0.6, 0.7, 0.3, 0.2, LanguageString$(LS_No))

	; Quest log window
	WQuestLog = GY_CreateWindow(LanguageString$(LS_Quests), 0.008, 0.001, 0.31, 0.73, False, False, False, LoadTexture("Data\Textures\GUI\A_QuestLogBG.png"))
	
			Snd_Window = LoadSound("Data\Sounds\Doors\LockpickPins3.ogg")
			SoundVolume(Snd_Window, 1.0) 
			PlaySound(Snd_Window)
			
	GY_CreateLabel_Menu(WQuestLog, 0.12, 0.185, Me\Name$, 255, 255, 255, Justify_Left)
	GY_CreateLabelChar(WQuestLog, 0.66, 0.195, Me\Actor\Race$, 250, 240, 220, Justify_Left)
	LLevel = GY_CreateLabel_Menu(WQuestLog, 0.88, 0.15, "     ", 210, 210, 210, Justify_Centre)
	GY_UpdateLabel(LLevel, "  " + Me\Level)
	FR = GY_CreateLabelChar(WQuestLog, 0.66, 0.215, FactionNames$(Me\HomeFaction), 250, 240, 220, Justify_Left)
	GY_UpdateLabel(FR, FactionNames$(Me\HomeFaction))
		

	
	For i = 0 To 16
		LQuestLines(i) = GY_CreateLabelStat(WQuestLog, 0.15, 0.4 + (Float#(i) * 0.023), String$(" ", 43))
	;	LQuestLines(i) = GY_CreateLabelchar(WQuestLog, 0.15, 0.275 + (Float#(i) * 0.023), String$(" ", 60))

	Next
;	BCompleteQuests = GY_CreateCheckBox(WQuestLog, 0.55, 0.09, LanguageString$(LS_ShowCompleted), True); was (LS_Show Completed)
	BCompleteQuests = GY_CreateCheckBox(WQuestLog, 0.75, 0.80, "", True); was (LS_Show Completed)
		
	
	;BPrevQuest = GY_CreateButton(WQuestLog, 0.45, 0.18, 0.1, 0.05, LanguageString$(LS_Up))
	;BNextQuest = GY_CreateButton(WQuestLog, 0.45, 0.78, 0.1, 0.05, LanguageString$(LS_Down))
	BPrevQuest = GY_CreateButtonChar(WQuestLog, 0.26, 0.85, 0.1, 0.05, "Previous", True, 220, 220, 220)
	BNextQuest = GY_CreateButtonChar(WQuestLog, 0.68, 0.85, 0.1, 0.05, "Next", True, 220, 220, 220)

	; Inventory
	MouseSlotEN = GY_CreateQuad(GY_Mouse) : EntityOrder MouseSlotEN, -3010
	

	PositionEntity MouseSlotEN, 0.4, -0.4, 0 : ScaleMesh MouseSlotEN, 2.5, 2.5, 1.0
	HideEntity MouseSlotEN
;	X# = InventoryWindow\X#
;	Y# = InventoryWindow\Y#
;	Width# = InventoryWindow\Width#
;	Height# = InventoryWindow\Height#
;	WInventory = GY_CreateWindow(LanguageString$(LS_Inventory), X#, Y#, Width#, Height#, False, False, False, LoadTexture("Data\Textures\GUI\InventoryBG.png"))
	WInventory = GY_CreateWindow(LanguageString$(LS_Inventory), 0.008, 0.001, 0.98, 0.73, False, False, False, LoadTexture("Data\Textures\GUI\A_InventoryBG.png"))
;EntityOrder WInventory, -1
			Snd_Window = LoadSound("Data\Sounds\Doors\LockpickPins3.ogg")
			SoundVolume(Snd_Window, 1.0) 
			PlaySound(Snd_Window)
			
	GY_CreateLabel_Menu(WInventory, 0.038, 0.185, Me\Name$, 255, 255, 255, Justify_Left)
	GY_CreateLabelChar(WInventory, 0.209, 0.195, Me\Actor\Race$, 250, 240, 220, Justify_Left)
	LLevel = GY_CreateLabel_Menu(WInventory, 0.279, 0.15, "     ", 210, 210, 210, Justify_Centre)
	GY_UpdateLabel(LLevel, "  " + Me\Level)
	FR = GY_CreateLabelChar(WInventory, 0.209, 0.215, FactionNames$(Me\HomeFaction), 250, 240, 220, Justify_Left)			
	GY_UpdateLabel(FR, FactionNames$(Me\HomeFaction))
		
			
			
		WEIL = GY_CreateLabelStat(WInventory, 0.26, 0.54, "00000/00000", 25, 190, 25, Justify_Right)
		GY_UpdateLabel(WEIL, Me\Attributes\Value[26])
		MWEIL = GY_CreateLabelStat(WInventory, 0.26, 0.497, "00000/00000", 190, 25, 25, Justify_Right)
		GY_UpdateLabel(MWEIL, Me\Attributes\Value[2] * 3)
	
		ATTL = GY_CreateLabelStat(WInventory, 0.26, 0.587, "00000/00000", 250, 240, 220, Justify_Right)
		GY_UpdateLabel(ATTL, Me\Attributes\Value[28])
		DEFL = GY_CreateLabelStat(WInventory, 0.26, 0.628, "00000/00000", 250, 240, 220, Justify_Right)
		GY_UpdateLabel(DEFL, Me\Attributes\Value[29])
		RESL = GY_CreateLabelStat(WInventory, 0.26, 0.673, "00000/00000", 250, 240, 220, Justify_Right)
		GY_UpdateLabel(RESL, Me\Attributes\Value[13])
		
		
		
		
		STRL = GY_CreateLabelStat(WInventory, 0.26, 0.718, "00000/00000", 250, 240, 220, Justify_Right)
		GY_UpdateLabel(STRL, Me\Attributes\Value[2])
		AGIL = GY_CreateLabelStat(WInventory, 0.26, 0.765, "00000/00000", 250, 240, 220, Justify_Right)
		GY_UpdateLabel(AGIL, Me\Attributes\Value[4])
		SWIL = GY_CreateLabelStat(WInventory, 0.26, 0.812, "00000/00000", 250, 240, 220, Justify_Right)
		GY_UpdateLabel(SWIL, Me\Attributes\Value[5])
		CHAL = GY_CreateLabelStat(WInventory, 0.26, 0.86, "00000/00000", 250, 240, 220, Justify_Right)
		GY_UpdateLabel(CHAL, Me\Attributes\Value[34])

	
	Tex = LoadTexture("Data\Textures\GUI\Backpack.bmp", 4)
	BInventoryDrop = GY_CreateButton_Blank(WInventory, InventoryDrop\X#, InventoryDrop\Y#, InventoryDrop\Width#, InventoryDrop\Height#, LanguageString$(LS_Drop), True, 0, 0, 0, tex)
	Tex = LoadTexture("Data\Textures\GUI\Backpack.bmp", 4)	
	BInventoryEat = GY_CreateButton_Blank(WInventory, InventoryEat\X#, InventoryEat\Y#, InventoryEat\Width#, InventoryEat\Height#, LanguageString$(LS_Use), True, 0, 0, 0, tex)
	
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Weapon
	CreateInventoryButton(WInventory, SlotI_Weapon, Tex)
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Shield
	CreateInventoryButton(WInventory, SlotI_Shield, Tex)
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Hat
	CreateInventoryButton(WInventory, SlotI_Hat, Tex)
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Chest
	CreateInventoryButton(WInventory, SlotI_Chest, Tex)
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Hand
	CreateInventoryButton(WInventory, SlotI_Hand, Tex)
	
	
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1)
	CreateInventoryButton(WInventory, SlotI_Belt, Tex)

	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Legs
	CreateInventoryButton(WInventory, SlotI_Legs, Tex)
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Feet
	CreateInventoryButton(WInventory, SlotI_Feet, Tex)
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Ring
	CreateInventoryButton(WInventory, SlotI_Ring1, Tex)
	CreateInventoryButton(WInventory, SlotI_Ring2, Tex)
	CreateInventoryButton(WInventory, SlotI_Ring3, Tex)
;	CreateInventoryButton(WInventory, SlotI_Ring4, Tex)
	
	
	Tex = LoadTexture("Data\Textures\GUI\A_Blank.png", 1);Amulet
	
	
	CreateInventoryButton(WInventory, SlotI_Amulet1, Tex)
;	CreateInventoryButton(WInventory, SlotI_Amulet2, Tex)
	
	
	Tex = LoadTexture("Data\Textures\GUI\Backpack.bmp", 4)
	If GetFlag(Me\Actor\InventorySlots, Slot_Backpack - 1) = True
		For i = SlotI_Backpack To SlotI_Backpack + 31
			CreateInventoryButton(WInventory, i, Tex)
		Next
	EndIf

	; Trading
	WTrading = GY_CreateWindow("Trading", 0.15, 0.2, 0.25, 0.45, False, False, False, LoadTexture("Data\Textures\GUI\A_Trading.png"))
;	LTradingGold = GY_CreateLabel(WTrading, 0.02, 0.81, LanguageString$(LS_Money) + " 00000000000000000000000000000000000000000000000000000000")
;	LTradingCost = GY_CreateLabel(WTrading, 0.02, 0.87, LanguageString$(LS_Cost) + " 00000000000000000000000000000000000000000000000000000000")
;	BCostUp = GY_CreateButton(WTrading, 0.02, 0.93, 0.2, 0.045, LanguageString$(LS_IncreaseCost))
;	BCostDown = GY_CreateButton(WTrading, 0.25, 0.93, 0.2, 0.045, LanguageString$(LS_DecreaseCost))


BTradingOK = GY_CreateCustomButton(WTrading,  0.55, 0.87, 0.4, 0.09, LoadButtonU("Take"), LoadButtonD("Take"), LoadButtonH("Take"))


BTradingCancel = GY_CreateCustomButton(WTrading, 0.05, 0.87, 0.4, 0.09, LoadButtonU("Cancel"), LoadButtonD("Cancel"), LoadButtonH("Cancel"))

;	BTradingOK = GY_CreateButton(WTrading, 0.88, 0.93, 0.1, 0.045, LanguageString$(LS_Accept))
;	BTradingCancel = GY_CreateButton(WTrading, 0.75, 0.93, 0.1, 0.045, LanguageString$(LS_Cancel))
	X# = 0.08 : Y# = 0.05
	For i = 0 To 31
	BSlotsMine(i) = GY_CreateButton(WTrading, 0, 0, 0.001, 0.001, "", True, 0, 0, 0, Tex)
BSlotsHis(i) = GY_CreateButton(WTrading, X#, Y#, 0.2, 0.15, "", True, 0, 0, 0, Tex)

	;	BSlotsMine(i) = GY_CreateButton(WTrading, X#, Y#, 0.05625, 0.1, "", True, 0, 0, 0, Tex)
		;BSlotsHis(i) = GY_CreateButton(WTrading, X# + 0.5, Y#, 0.05625, 0.1, "", True, 0, 0, 0, Tex)
		X# = X# + 0.21
	;	If X# > 0.42 Then X# = 0.02 : Y# = Y# + 0.125
		If X# > 0.77 Then X# = 0.02 : Y# = Y# + 0.125

	Next


	; Hide all windows
	GY_GadgetAlpha(WCharStats, 0.0, True)
	GY_GadgetAlpha(WQuestLog, 0.0, True)
	GY_GadgetAlpha(WParty, 0.0, True)
	GY_GadgetAlpha(WInventory, 0.0, True)
	GY_GadgetAlpha(WAmount, 0.0, True)
	GY_GadgetAlpha(WSpells, 0.0, True)
	
;	GY_GadgetAlpha(WASpells, 0.0, True);#################################################

	
	
	GY_GadgetAlpha(WSpellRemove, 0.0, True)
	GY_GadgetAlpha(WTrading, 0.0, True)
	GY_GadgetAlpha(WHelp, 0.0, True)
	GY_GadgetAlpha(WLargeMap, 0.0, True)
	
	;############################## Added ######################
	GY_GadgetAlpha(WMoney, 0.0, True)

	;###########################################################



	LastMouseMove = MilliSecs()
	LastLeftClick = MilliSecs()

End Function

; Creates a quad mesh
Function CreateInterfaceQuad(P = 0)

	If P Then EN = CreateMesh(P) Else EN = CreateMesh()
	s = CreateSurface(EN)
	v1 = AddVertex(s, 0.0, -1.0, 0.0, 1.0, 1.0)
	v2 = AddVertex(s, 1.0, -1.0, 0.0, 0.0, 1.0)
	v3 = AddVertex(s, 1.0, 0.0, 0.0, 0.0, 0.0)
	v4 = AddVertex(s, 0.0, 0.0, 0.0, 1.0, 0.0)
	AddTriangle(s, v3, v2, v1)
	AddTriangle(s, v4, v3, v1)
	Return EN

End Function

; Enables/disables all the buttons for empty inventory slots
Function EnableInventoryBlanks(Disable = False)

	GY_LockGadget(BInventoryDrop, Disable)
	GY_LockGadget(BInventoryEat, Disable)
	For i = 0 To Slots_Inventory
		If BSlots(i) <> 0
			If Me\Inventory\Items[i] = Null Then GY_LockGadget(BSlots(i), Disable)
		EndIf
	Next

End Function

; Sets picking modes
Function SetPickModes(Scenery = 0, Actors = 0, NonCombatants = True, DroppedItems = 0)

	If Scenery = 0
		For S.Scenery = Each Scenery
			Collides = GetEntityType(S\EN)
			If Collides = C_Sphere
				EntityPickMode(S\EN, 3, True); was 1 (wanted box rather then sphere)
			ElseIf Collides = C_Triangle
				EntityPickMode(S\EN, 2, True)
			ElseIf Collides = C_Box
				EntityPickMode(S\EN, 3, True);, fixed bug, was 2
			EndIf
		Next
		For T.Terrain = Each Terrain : EntityPickMode(T\EN, 2, True) : Next
	ElseIf Scenery = -1
		For S.Scenery = Each Scenery : EntityPickMode(S\EN, 0, True) : Next
		For T.Terrain = Each Terrain : EntityPickMode(T\EN, 0, True) : Next
	Else
		For S.Scenery = Each Scenery : EntityPickMode(S\EN, Scenery, True) : Next
		For T.Terrain = Each Terrain : EntityPickMode(T\EN, Scenery, True) : Next
	EndIf

	For AI.ActorInstance = Each ActorInstance
		If Actors = 4
			If AI\Attributes\Value[HealthStat] > 0
				EntityPickMode AI\EN, 0, True
				EntityPickMode AI\CollisionEN, 1
			Else
				EntityPickMode AI\EN, 0, False
				EntityPickMode AI\CollisionEN, 0
			EndIf
		Else
			If AI <> Me And AI\Rider = Null
				If AI\Attributes\Value[HealthStat] <= 0 Or (AI\Actor\Aggressiveness = 3 And NonCombatants = False) Or (AI\RNID = True And PvPEnabled = False And NonCombatants = False)
					EntityPickMode AI\EN, 0, True
					EntityPickMode AI\CollisionEN, 0
				ElseIf Actors = 1
					EntityPickMode AI\EN, 0, True
					EntityPickMode AI\CollisionEN, 1
				ElseIf Actors = 2
					EntityPickMode AI\EN, 2, True
					EntityPickMode AI\CollisionEN, 0
				ElseIf Actors = 3
					EntityPickMode AI\EN, 0, True
					EntityPickMode AI\CollisionEN, 1
				Else
					EntityPickMode AI\EN, 0, True
					EntityPickMode AI\CollisionEN, 0
				EndIf
			Else
				EntityPickMode AI\EN, 0, True
				EntityPickMode AI\CollisionEN, 0
			EndIf
		EndIf
	Next

	For D.DroppedItem = Each DroppedItem
		EntityPickMode(D\EN, DroppedItems)
	Next

End Function

; Creates an action bar button
Function CreateActionBarButton(TexName$, X#, Toggle = True, FreeTex = True)
       imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, imageheight, imagewidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function
Function CreateActionBarButtonHide(TexName$, X#, Toggle = True, FreeTex = True)
       imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, imageheight, imagewidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function

Function CreateActionBarButtonUP(TexName$, X#, Toggle = True, FreeTex = True)
       imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, imageheight, imagewidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function
Function CreateActionBarButtonDown(TexName$, X#, Toggle = True, FreeTex = True)
       imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, ImageHeight, ImageWidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function


Function CreateActionBarButtonLeft(TexName$, X#, Toggle = True, FreeTex = True)
       imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, imageheight, imagewidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function
Function CreateActionBarButtonRight(TexName$, X#, Toggle = True, FreeTex = True)
       imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, imageheight, imagewidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function
;Function CreateActionBarButtonRight(TexName$, X#, Toggle = True, FreeTex = True)
       ;imagewidth = 0.5
      ; imageheight = 0.8

      ;  X = GraphicsWidth()/2 - (imagewidth/2)
      ;  Y = GraphicsHeight()/2 - (imageheight/2) 
;
	;Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	;Button = GY_CreateButton(0, X, Y, imageheight, imagewidth, "", Toggle, 0, 0, 0, Tex)
	;If FreeTex = True Then FreeTexture(Tex)
	;GY_DropGadget(Button)
	;Return Button

;End Function

;######################################### Added for Edit ###########################################################
Function CreateActionBarButton1(TexName$, X#, Toggle = True, FreeTex = True)

	imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, ImageHeight, ImageWidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function



Function CreateActionBarButton2(TexName$, X#, Toggle = True, FreeTex = True)

	imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, ImageHeight, ImageWidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function


;Function CreateActionBarButtonAbilities(TexName$, X#, Toggle = True, FreeTex = True)

;	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
;	Button = GY_CreateButton(0, X# + 0.003, 0.871, 0.06 - 0.0055, 0.08 - 0.0055, "", Toggle, 0, 0, 0, Tex)
;	If FreeTex = True Then FreeTexture(Tex)
;	GY_DropGadget(Button)
;	Return Button

;End Function


;Function CreateActionBarButtonInventory(TexName$, X#, Toggle = True, FreeTex = True)

;	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
;	Button = GY_CreateButton(0, X# + 0.003, 0.874, 0.05 - 0.0055, 0.07 - 0.0055, "", Toggle, 0, 0, 0, Tex)
;	If FreeTex = True Then FreeTexture(Tex)
;	GY_DropGadget(Button)
;	Return Button

;End Function


Function CreateActionBarButtonHotkey(TexName$, X#, Toggle = True, FreeTex = True)

	imagewidth = 0.5
       imageheight = 0.8

        X = GraphicsWidth()/2 - (imagewidth/2)
        Y = GraphicsHeight()/2 - (imageheight/2) 

	Tex = LoadTexture("Data\Textures\GUI\" + TexName$, 1)
	
	Button = GY_CreateButton(0, X, Y, imageheight, imagewidth, "", Toggle, 0, 0, 0, Tex)
	If FreeTex = True Then FreeTexture(Tex)
	GY_DropGadget(Button)
	Return Button

End Function


;####################################################################################################################



; Creates an inventory slot button
Function CreateInventoryButton(W, S, Tex)

	BSlots(S) = GY_CreateButton(W, InventoryButtons(S)\X#, InventoryButtons(S)\Y#, InventoryButtons(S)\Width#, InventoryButtons(S)\Height#, "", True, 0, 0, 0, Tex)

End Function
Function CreateInventoryButton2(W, S, Tex)

	BSlots(S) = GY_CreateButton(0, 0.846, 0.797, 0.059, 0.071, "", True, 0, 0, 0, Tex)

End Function
; Resets the text on the quest log
Function RedrawQuestLog()

	; Clear all labels
	For i = 0 To 16
		GY_UpdateLabel(LQuestLines(i), "")
	Next

	; Buttons
	If QuestLogVisible Then GY_GadgetAlpha(WQuestLog, 1.0, True); was .85

	GY_LockGadget(BPrevQuest, False) : GY_LockGadget(BNextQuest, False)
	MaxQuest = CountQuests(QuestLog) - 1
	If MaxQuest < 0
		GY_GadgetAlpha(BPrevQuest, 0.0) : GY_LockGadget(BPrevQuest, True)
		GY_GadgetAlpha(BNextQuest, 0.0) : GY_LockGadget(BNextQuest, True)
		GY_UpdateLabel(LQuestLines(0), LanguageString$(LS_NoQuestsAvailable))
		Return
	EndIf
	If FirstQuest = 0 Then GY_GadgetAlpha(BPrevQuest, 0.0) : GY_LockGadget(BPrevQuest, True)
	If FirstQuest >= MaxQuest Then FirstQuest = MaxQuest : GY_GadgetAlpha(BNextQuest, 0.0) : GY_LockGadget(BNextQuest, True)

	DrawDone = GY_CheckBoxDown(BCompleteQuests)

	; Find first quest to draw
	Num = 0
	Start = -1
	For i = 0 To 499
		If QuestLog\EntryName$[i] <> ""
			If DrawDone = True Or Asc(Mid$(QuestLog\EntryStatus$[i], 4, 1)) <> 254
				If Num = FirstQuest Then Start = i : Exit
				Num = Num + 1
			EndIf
		EndIf
	Next

	; If there wasn't one (usually when not displaying completed)
	If Start < 0
		GY_GadgetAlpha(BPrevQuest, 0.0) : GY_LockGadget(BPrevQuest, True)
		GY_GadgetAlpha(BNextQuest, 0.0) : GY_LockGadget(BNextQuest, True)
		GY_UpdateLabel(LQuestLines(0), LanguageString$(LS_NoQuestsAvailable))
		Return
	EndIf

	; Draw until we run out of lines
	CurrentLine = 0
	For CurrentQuest = Start To 499
		If CurrentLine > 16 Then Exit
		If QuestLog\EntryName$[CurrentQuest] <> "" And (DrawDone = True Or Asc(Mid$(QuestLog\EntryStatus$[CurrentQuest], 4, 1)) <> 254)
			GY_UpdateLabel(LQuestLines(CurrentLine), QuestLog\EntryName$[CurrentQuest] + " -", 255, 255, 255)
			CurrentLine = CurrentLine + 1
			Status$ = QuestLog\EntryStatus$[CurrentQuest]
			cR = RCE_IntFromStr(Mid$(Status$, 1, 1))
			cG = RCE_IntFromStr(Mid$(Status$, 2, 1))
			cB = RCE_IntFromStr(Mid$(Status$, 3, 1))
			Status$ = Mid$(Status$, 4)
			If Status$ = Chr$(254)
				Status$ = "  " + LanguageString$(LS_Completed)
				cR = 255 : cG = 225 : cB = 100
			Else
				Status$ = "  " + Status$
			EndIf
			While Status$ <> "" And CurrentLine <= 16
				; Word wrap
				If Len(Status$) > 43
					SplitChar = 0
					For i = 43 To 1 Step -1
						If Mid$(Status$, i, 1) = " " Then SplitChar = i : Exit
					Next
					If SplitChar > 0
						GY_UpdateLabel(LQuestLines(CurrentLine), Left$(Status$, SplitChar - 1), cR, cG, cB)
					;	GY_UpdateLabel(LQuestLines(CurrentLine), Left$(Status$, SplitChar - 1), 0, 255, 0)

						Status$ = Mid$(Status$, SplitChar + 1)
					Else
						GY_UpdateLabel(LQuestLines(CurrentLine), Left$(Status$, 25), cR, cG, cB)
					;	GY_UpdateLabel(LQuestLines(CurrentLine), Left$(Status$, 25), 0, 255, 0)

						Status$ = Mid$(Status$, 26)
					EndIf
					CurrentLine = CurrentLine + 1
				Else
					GY_UpdateLabel(LQuestLines(CurrentLine), Status$, cR, cG, cB)
				;	GY_UpdateLabel(LQuestLines(CurrentLine), Status$, 0, 255, 0)

					Status$ = ""
				EndIf
			Wend
			CurrentLine = CurrentLine + 2
		EndIf
	Next

End Function

; Updates the button icons for the action bar quick-slots
Function UpdateActionBarIcons()

	If ActionBarStart = 2
		Offset = 12
	ElseIf ActionBarStart = 3
		Offset = 24
	EndIf
	
	For i = 0 To 11
		
		
		; Spell
		If ActionBarSlots(i + Offset) < 0
			If RequireMemorise
				Num = ActionBarSlots(i + Offset) + 5
				Sp.Spell = SpellsList(Me\KnownSpells[Me\MemorisedSpells[Num]])
			Else
				Num = ActionBarSlots(i + Offset) + 1000
				Sp.Spell = SpellsList(Me\KnownSpells[Num])
			EndIf
			GYG.GY_Gadget = Object.GY_Gadget(BActionBar(i))
			EntityTexture(GYG\EN, GetTexture(Sp\ThumbnailTexID))
		; Item
		ElseIf ActionBarSlots(i + Offset) < 65535
			It.Item = ItemList(ActionBarSlots(i + Offset))
			GYG.GY_Gadget = Object.GY_Gadget(BActionBar(i))
			EntityTexture GYG\EN, GetTexture(It\ThumbnailTexID)
		Else
			GYG.GY_Gadget = Object.GY_Gadget(BActionBar(i))
			GYB.GY_Button = Object.GY_Button(GYG\TypeHandle)
			EntityTexture GYG\EN, GYB\UserTexture
		EndIf
	Next

End Function



AM(Posted 2016) [#11]
Can someone help me with this, I'm still having trouble moving buttons .


Kryzon(Posted 2016) [#12]
Those interface buttons seem to be made with 3D geometry, which uses a different coordinate system than the screen.

The vertices of 3D objects have X, Y and Z coordinates with respect to the origin of the 3D world.
Pixels on the screen have X and Y coordinates with respect to the top-left corner of the graphics window.
They are not the same.

If you want to position 3D objects by using pixels, you need to map screen coordinates to 3D coordinates.

There's some math involved, it depends on the depth of the vertex with relation to the camera. You didn't post function "GY_CreateButton" and I imagine that is where the vertices are created and their Z position is specified.