Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

EO 4.2.3 GUI issues.


Joseph Stacko
 Share

Recommended Posts

**EDIT:**

Never mind on my question - I figured it out (I forgot to set 2 variables).

I am still curious why I cannot post in the Q&A section, though.

~~Hey all,~~

~~First off, let me apologize if this is in the wrong section - for some reason it would not let me start a new thread in the Q&A section.~~

~~So my issue is as follows. I have been trying to convert my game over to EO 4.2.3, from an old Mirage/Konfuze based system that I heavily modified back in 2006/2007\. I am still relatively early in the process, so I have been dabeling with different aspects of the engine to get a real feel for it. I am very familiar with VB6 (having re-written much of the source from the Konfuze engine), but I am not a graphics person by any means. I am not sure if my issue is with the code, with my graphics, or a combination of both.~~

~~So I have been trying to implement aspects of my old GUI into the system, while to get a handle on it. However for some reason the graphics tend to be VERY finicky when changing GUI item dimensions. Here is the current example I am struggling with:~~

~~3.png is a very simple news background. It is 300x90 pixels. I use the following code, inside of Sub LoadGUI, in the client:~~

```

NewsPanelX = 100
NewsPanelY = 200
NewsPanelWidth = 300
NewsPanelHeight = 90

NumTextures = NumTextures + 1
ReDim Preserve gTexture(NumTextures)
NewsPanelImage.filepath = App.path & GFX_PATH & "gui\3.png"
NewsPanelImage.Texture = NumTextures 
```
~~Then I use the following code in Sub CacheInterfaceBounds:~~

```
dX = NewsPanelX
dY = NewsPanelY
dw = NewsPanelWidth
dH = NewsPanelHeight
If dw > 0 And dH > 0 And (dw + dX) > 0 And (dY + dH) > 0 Then
If dX < GUIContainerWidth And dY < GUIContainerHeight Then
If dX + dw > GUIContainerWidth Then
dw = dw - ((dX + dw) - GUIContainerWidth)
End If
If dY + dH > GUIContainerHeight Then
dH = dH - ((dY + dH) - GUIContainerHeight)
End If
If dX < 0 Then
sx = dX * -1
dw = dw + dX
dX = dX + sx
End If
If dY < 0 Then
sy = dY * -1
dH = dH + dY
dY = dY + sy
End If
dX = dX + GUIContainerX
dY = dY + GUIContainerY
sW = dw
```
                sH = dH
                If NewsPanelImage.Texture > 0 Then
                End If
NewsPanelBounds.Left = dX NewsPanelBounds.Right = dw NewsPanelBounds.Top = dY NewsPanelBounds.Bottom = dH NewsPanelSrcBounds.Left = sx NewsPanelSrcBounds.Right = sW NewsPanelSrcBounds.Top = sy NewsPanelSrcBounds.Bottom = sH End If sx = 0 sy = 0 End If 

~~ And then finally I modified Sub DrawNewsPanel to the following:~~

```
Sub DrawNewsPanel(bx As Long, by As Long, bw As Long, bh As Long)
Dim dX As Long, dY As Long, dw As Long, dH As Long, sx As Long, sy As Long, sW As Long, sH As Long
Dim NewsText As String, a() As String, i As Long

On Error GoTo errorhandler

dX = NewsPanelBounds.Left
dY = NewsPanelBounds.Top
dw = NewsPanelBounds.Right
dH = NewsPanelBounds.Bottom
sx = NewsPanelSrcBounds.Left
sy = NewsPanelSrcBounds.Top
sW = NewsPanelSrcBounds.Right
sH = NewsPanelSrcBounds.Bottom

If dw > 0 And dH > 0 And (dw + dX) > 0 And (dY + dH) > 0 Then
If NewsPanelImage.Texture > 0 Then
RenderTexture NewsPanelImage, dX, dY, sx, sy, dw, dH, sW, sH
End If
NewsText = WordWrap(News, dw - 4)
NewsText = LimitTextLines(NewsText, Fix(dH / 14), 0)
a = Split(NewsText, vbNewLine)
If UBound(a) > 0 Then
For i = 0 To UBound(a)
RenderText Font_Georgia, a(i), dX + (dw / 2) - (EngineGetTextWidth(Font_Georgia, a(i)) / 2), dY + i * 12, FontColor
Next
End If
End If

On Error GoTo 0
Exit Sub
errorhandler:
HandleError "DrawNewsPanel", "modUserInterface", Err.Number, Err.Description, Erl
Err.Clear
End Sub

```
~~Attached is bug.png - this is how the image ends up displaying.~~

~~It is the correct 'size' (300x90) however it appears as if DX8 is grabbing hold of the upper left corner of the image, and then pulling from the right side of the image, causing this very odd distortion.~~

~~Any insight into this issue would be very much appreciated. Again, sorry if this should be in the Q&A section, however I was unable to start a topic there.~~

~~Thanks all for your help!~~
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...