PDA

View Full Version : Progress report and windows build


jbb
12-27-2004, 08:47 PM
Edit: Replaced overly long post with a shorter one.

I made a windows build of the latest openeq (http://www.fx2100.com/openeq.zip).

Unzip it to a directory and run it from the command line:
openeq "c:\program files\sony\everquest" poknowledge
replacing the directory name and zone name as required. You don't need the .S3D on the zone name.

At the moment it's a zone view which you can walk around in.
Almost all of the code is Daeken's except for the collision detection and walking code which is mine (and rather experimental, more a proof of concept rather than fully working code).

This build is of a slightly old version of openeq. This version on renders the basic zone mesh and not all the objects in the zone. So the zones look rather empty... Daeken has got this working in later versions. He's now working on a user interface for it. I intend to keep working on the movement and collision detection.

Enjoy!

(This is a work in progress. I believe it's safe to run or I wouldn't have posted it here, but like any software under development there is a small risk that a bug might damage your system in some way so run it at your own risk. I don't believe there is a problem but it's only fair to warn people)[/url]

daeken_bb
12-28-2004, 04:23 AM
I love you, will you have my children? :D

Nice work man :)

Btw... the UI now supports: Windows, text boxes, and buttons fully. I cleaned up the API a good bit, and it's now getting to be really usable. I have a simple python debug console working perfectly :D

Here's the actual class that handles input from the user and writes output from the interpreter to the UI. It's derived from InteractiveInterpreter.

class DevConsole(code.InteractiveInterpreter):
def write(self, data):
ui.widgets['chat'].AddText(data.strip() + '\n')
def Enter(self, textbox):
if textbox.text == '/quit':
return -1
elif textbox.text[:7] == '/python':
print self.runsource(textbox.text[8:], '<<console>>')
textbox.SetText('/python ')
else:
ui.widgets['chat'].AddText(textbox.text + '\n')
textbox.SetText('')
return True


And this is the actual initialization code for the UI Test. Following this is all the implementation-specific rendering stuff. OpenEQ will render to OpenGL of course, but the current UI Test just renders to a pygame (SDL) window:


class UITest:
size = (800, 600)
def __init__(self):
self.ui = ui.UI(self.size)
win1 = self.ui.Window('win1', pos=(100, 100), size=(600, 600), bgcolor=(255, 255, 255, 255), outline=(255, 0, 0, 255))
tb1 = win1.Textbox(name='tb1', pos=(10, 310), size=(580, 40), bgcolor=(0, 0, 0, 255), outline=(255, 0, 0, 255), fgcolor=(255, 255, 255, 255), center=(False, True))
win1.Textbox(name='chat', pos=(10, 10), size=(580, 300), bgcolor=(0, 0, 0, 255), outline=(255, 0, 0, 255), fgcolor=(255, 255, 255, 255), center=(False, False), freeze=True)

dc = DevConsole()
tb1.Register('enter', dc.Enter)


If anyone has any ideas on the API, please let me know. Thanks!

(Btw... those keyword args to the Window and Textbox functions populate the `props' property of the widgets. Soon you'll be able to do win1['bgcolor'] = (255, 255, 255, 255) or whatever also... gotta implement that still :) )