diff orpg/networking/gsclient.py @ 96:65c1604e7949 alpha

Traipse Alpha 'OpenRPG' {090924-00} Traipse is a distribution of OpenRPG that is designed to be easy to setup and go. Traipse also makes it easy for developers to work on code without fear of sacrifice. 'Ornery-Orc' continues the trend of 'Grumpy' and adds fixes to the code. 'Ornery-Orc's main goal is to offer more advanced features and enhance the productivity of the user. Update Summary: 00: Update forwards to the 090909-02 Server code that now works. New default Lobby Map, designed for Traipse. Feel free to change it. Updates to Server GUI: * Admin can Ban from Backend. * Prework to modify Ban List in back end. * Server GUI finds your Lobby Name * New users default as Lurker unless a Role is set New Addition to Chat Die Roll commands. Math Ordering. Ex. [(X+Y)dZ]. Currently does pairs only, no nesting either. Cleaner TraipseSuiteAttention portability and clean up in Main (Beta!)
author sirebral
date Thu, 24 Sep 2009 02:05:08 -0500
parents d1aff41c031b
children 905fa5b06d53 dcf4fbe09b70
line wrap: on
line diff
--- a/orpg/networking/gsclient.py	Sat Sep 19 12:19:17 2009 -0500
+++ b/orpg/networking/gsclient.py	Thu Sep 24 02:05:08 2009 -0500
@@ -28,15 +28,14 @@
 
 __version__ = "$Id: gsclient.py,v 1.53 2007/10/25 21:49:34 digitalxero Exp $"
 
-import orpg.dirpath
+from orpg.dirpath import dir_struct
 from orpg.orpg_windows import *
-from orpg.orpg_xml import *
 import meta_server_lib
+import orpg.tools.orpg_settings
 from orpg.tools.orpg_settings import settings
 import orpg.tools.rgbhex
-from orpg.orpgCore import open_rpg, component
+from orpg.orpgCore import component
 import traceback
-from orpg.tools.orpg_log import logger
 
 gs_host = 1
 gs_join = 2
@@ -100,10 +99,10 @@
     def __init__(self,parent):
         wx.Panel.__init__(self, parent, -1)
         self.parent = parent
-        logger.debug("Enter game_server_panel", False)
         self.password_manager = component.get('password_manager') # passtool --SD 8/03
         self.frame = component.get('frame')
         self.session = component.get('session')
+        self.xml = component.get('xml') #Not used??
         self.serverNameSet = 0
         self.last_motd = ""
         self.buttons = {}
@@ -112,14 +111,11 @@
         self.build_ctrls()
         self.refresh_server_list()
         self.refresh_room_list()
-        logger.debug("Exit game_server_panel", False)
 
 #---------------------------------------------------------
 # [START] Snowdog: Updated Game Server Window 12/02
 #---------------------------------------------------------
     def build_ctrls(self):
-        logger.debug("Enter game_server_panel->build_ctrls(self)", False)
-
         ## Section Sizers (with frame edges and text captions)
         self.box_sizers = {}
         self.box_sizers["server"] = wx.StaticBox(self, -1, "Server")
@@ -157,9 +153,9 @@
 
         #Build Rooms Sizer
         self.room_list = wx.ListCtrl(self, LIST_ROOM, style=wx.LC_REPORT | wx.SUNKEN_BORDER)
-        self.room_list.InsertColumn(0,"Game", wx.LIST_FORMAT_LEFT,0)
-        self.room_list.InsertColumn(1,"Players", wx.LIST_FORMAT_LEFT,0)
-        self.room_list.InsertColumn(2,"PW", wx.LIST_FORMAT_LEFT,0)
+        self.room_list.InsertColumn(0,"Game", wx.LIST_FORMAT_LEFT,-1)
+        self.room_list.InsertColumn(1,"Players", wx.LIST_FORMAT_LEFT,-1)
+        self.room_list.InsertColumn(2,"PW", wx.LIST_FORMAT_LEFT,-1)
         self.buttons[GS_JOIN] = wx.Button(self, GS_JOIN, "Join Room")
         self.buttons[GS_JOINLOBBY] = wx.Button(self, GS_JOINLOBBY, "Lobby")
         self.sizers["roombtns"] = wx.BoxSizer(wx.HORIZONTAL)
@@ -235,21 +231,17 @@
         self.cur_room_index = -1
         self.cur_server_index = -1
         self.rmList = {}
-        logger.debug("Exit game_server_panel->build_ctrls(self)", False)
 
 #---------------------------------------------------------
 # [END] Snowdog: Updated Game Server Window 12/02
 #---------------------------------------------------------
 
-
     #-----------------------------------------------------
     # on_server_dbclick()
     # support for double click selection of server.
     # 5/16/05 -- Snowdog
     #-----------------------------------------------------
     def on_server_dbclick(self, evt=None):
-        logger.debug("Enter game_server_panel->on_server_dbclick(self, evt)", False)
-
         #make sure address is updated just in case list select wasn't done
         try:
             self.on_select(evt)
@@ -264,7 +256,6 @@
                 #address differs, disconnect.
                 self.frame.kill_mplay_session()
         self.do_connect(address)
-        logger.debug("Exit game_server_panel->on_server_dbclick(self, evt)", False)
 
 
     #-----------------------------------------------------
@@ -274,8 +265,6 @@
     #-----------------------------------------------------
 
     def on_room_dbclick(self, evt=None):
-        logger.debug("Enter game_server_panel->on_room_dbclick(self, evt)", False)
-
         #make sure address is updated just in case list select wasn't done
         try:
             self.on_select(evt)
@@ -301,11 +290,9 @@
             else:
                 pwd = ""
             self.session.send_join_group(group_id, pwd)
-        logger.debug("Exit game_server_panel->on_room_dbclick(self, evt)", False)
 
 
     def on_select(self,evt):
-        logger.debug("Enter game_server_panel->on_select(self,evt)", False)
         id = evt.GetId()
         if id == LIST_ROOM:
             self.cur_room_index = evt.m_itemIndex
@@ -316,19 +303,15 @@
             port = self.svrList[self.cur_server_index].port
             self.texts["address"].SetValue(address+":"+str(port))
             self.refresh_room_list()
-        logger.debug("Exit game_server_panel->on_select(self,evt)", False)
 
     def on_text(self,evt):
-        logger.debug("Enter game_server_panel->on_text(self,evt)", False)
         id = evt.GetId()
         if (id == ADDRESS) and (self.cur_server_index >= 0):
             #print "ADDRESS id = ", id, "index = ", self.cur_server_index
             self.cur_server_index = -1
         evt.Skip()
-        logger.debug("Exit game_server_panel->on_text(self,evt)", False)
 
     def add_room(self,data):
-        logger.debug("Enter game_server_panel->add_room(self,data)", False)
         i = self.room_list.GetItemCount()
         if (data[2]=="1") or (data[2]=="True"): pwd="yes"
         else: pwd="no"
@@ -337,21 +320,17 @@
         self.room_list.SetStringItem(i,2,pwd)
         self.room_list.SetItemData(i,int(data[0]))
         self.refresh_room_list()
-        logger.debug("Exit game_server_panel->add_room(self,data)", False)
 
     def del_room(self, data):
-        logger.debug("Enter game_server_panel->del_room(self, data)", False)
         i = self.room_list.FindItemData(-1, int(data[0]))
         self.room_list.DeleteItem(i)
         self.refresh_room_list()
-        logger.debug("Exit game_server_panel->del_room(self, data)", False)
 
 #---------------------------------------------------------
 # [START] Snowdog Password/Room Name altering code 12/02
 #---------------------------------------------------------
 
     def update_room(self,data):
-        logger.debug("Enter game_server_panel->update_room(self,data)", False)
 
         #-------------------------------------------------------
         # Udated 12/02 by Snowdog
@@ -364,7 +343,6 @@
         self.room_list.SetStringItem(i,1,data[3])
         self.room_list.SetStringItem(i,2,pwd)
         self.refresh_room_list()
-        logger.debug("Exit game_server_panel->update_room(self,data)", False)
 
 #---------------------------------------------------------
 # [END] Snowdog Password/Room Name altering code 12/02
@@ -376,12 +354,9 @@
         #self.sizers["room"].Layout()
 
     def set_lobbybutton(self,allow):
-        logger.debug("Enter game_server_panel->set_lobbybutton(self,allow)", False)
         self.buttons[GS_JOINLOBBY].Enable(allow)
-        logger.debug("Exit game_server_panel->set_lobbybutton(self,allow)", False)
 
     def set_connected(self,connected):
-        logger.debug("Enter game_server_panel->set_connected(self,connected)", False)
         self.buttons[GS_CONNECT].Enable(not connected)
         self.buttons[GS_DISCONNECT].Enable(connected)
         self.buttons[GS_JOIN].Enable(connected)
@@ -396,10 +371,8 @@
             #data = self.session.get_my_group()
             self.frame.status.set_connect_status(self.name)
             self.set_cur_room_text("Lobby")
-        logger.debug("Exit game_server_panel->set_connected(self,connected)", False)
 
     def on_button(self,evt):
-        logger.debug("Enter game_server_panel->son_button(self,evt)", False)
         id = evt.GetId()
         if id == GS_CONNECT:
             address = self.texts["address"].GetValue()
@@ -409,18 +382,12 @@
             except:
                 self.name = `address`
             self.do_connect(address)
-        elif id == GS_DISCONNECT:
-            self.frame.kill_mplay_session()
-        elif id == GS_CREATE_ROOM:
-            self.do_create_group()
-        elif id == GS_JOIN:
-            self.do_join_group()
-        elif id == GS_JOINLOBBY:
-            self.do_join_lobby()
-        elif id == GS_SERVER_REFRESH:
-            self.refresh_server_list()
-        elif id == GS_PWD:
-            self.texts["room_pwd"].Enable(evt.Checked())
+        elif id == GS_DISCONNECT: self.frame.kill_mplay_session()
+        elif id == GS_CREATE_ROOM: self.do_create_group()
+        elif id == GS_JOIN: self.do_join_group()
+        elif id == GS_JOINLOBBY: self.do_join_lobby()
+        elif id == GS_SERVER_REFRESH: self.refresh_server_list()
+        elif id == GS_PWD: self.texts["room_pwd"].Enable(evt.Checked())
         elif id == OR_CLOSE:
             dlg = wx.MessageDialog(self,"Quit OpenRPG?","OpenRPG",wx.YES_NO)
             if dlg.ShowModal() == wx.ID_YES:
@@ -429,10 +396,8 @@
                 self.frame.closed_confirmed()
         elif id == GS_CLOSE:
             self.parent.OnMB_GameServerBrowseServers()
-        logger.debug("Exit game_server_panel->son_button(self,evt)", False)
 
     def refresh_room_list(self):
-        logger.debug("Enter game_server_panel->refresh_room_list(self)", False)
         self.room_list.DeleteAllItems()
         address = self.texts["address"].GetValue()
         try:
@@ -457,18 +422,14 @@
             self.colorize_group_list(groups)
             self.room_list.SortItems(roomCmp)
             wx.CallAfter(self.autosizeRooms)
-        logger.debug("Exit game_server_panel->refresh_room_list(self)", False)
 
     def autosizeRooms(self):
-        logger.debug("Enter game_server_panel->autosizeRooms(self)", False)
         self.room_list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
-        self.room_list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
-        self.room_list.SetColumnWidth(2, wx.LIST_AUTOSIZE)
-        logger.debug("Exit game_server_panel->autosizeRooms(self)", False)
+        if self.room_list.GetColumnWidth(0) < 70: self.room_list.SetColumnWidth(0, 70)
+        if self.room_list.GetColumnWidth(1) < 70: self.room_list.SetColumnWidth(1, 70)
+        if self.room_list.GetColumnWidth(2) < 50: self.room_list.SetColumnWidth(2, 50)
 
     def refresh_server_list(self):
-        logger.debug("Enter game_server_panel->refresh_server_list(self)", False)
-
         try:
             self.svrList = []
             self.server_list.DeleteAllItems()
@@ -486,7 +447,9 @@
                 partLength = 1.0/length
                 for n in node_list:
                     if n.hasAttribute('id') and n.hasAttribute('name') and n.hasAttribute('num_users') and n.hasAttribute('address') and n.hasAttribute('port'):
-                        self.svrList.append( server_instance(n.getAttribute('id'),n.getAttribute('name'), n.getAttribute('num_users'), n.getAttribute('address'),n.getAttribute('port')))
+                        self.svrList.append(server_instance(n.getAttribute('id'), n.getAttribute('name'), 
+                                            n.getAttribute('num_users'), n.getAttribute('address'), 
+                                            n.getAttribute('port')))
                         address = n.getAttribute('address') + ':' + n.getAttribute('port')
                         self.rmList[address] = []
                         rooms = n.getElementsByTagName('room')
@@ -525,6 +488,7 @@
             # No server is currently selected!!!  Versus the broken and random 0!
             self.cur_server_index = -1
             self.server_list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+            if self.server_list.GetColumnWidth(0) < 70: self.server_list.SetColumnWidth(0, 70)
             self.server_list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
 
             if self.serverNameSet == 0:
@@ -548,10 +512,8 @@
         except Exception, e:
             print "Server List not available."
             traceback.print_exc()
-        logger.debug("Exit game_server_panel->refresh_server_list(self)", False)
 
     def failed_connection(self):
-        logger.debug("Enter game_server_panel->failed_connection(self)", False)
         if(self.cur_server_index >= 0):
             id = self.servers[self.cur_server_index].getAttribute('id')
             meta = self.servers[self.cur_server_index].getAttribute('meta')
@@ -561,10 +523,8 @@
             #  was removed.  If it was, refresh the display
             if(meta_server_lib.post_failed_connection(id,meta=meta,address=address,port=port)):
                 self.refresh_server_list()
-        logger.debug("Exit game_server_panel->failed_connection(self)", False)
 
     def do_connect(self, address):
-        logger.debug("Enter game_server_panel->do_connect(self, address)", False)
         chat = component.get('chat')
         chat.InfoPost("Locating server at " + address + "...")
         if self.session.connect(address):
@@ -572,17 +532,13 @@
         else:
             chat.SystemPost("Failed to connect to game server...")
             self.failed_connection()
-        logger.debug("Exit game_server_panel->do_connect(self, address)", False)
 
     def do_join_lobby(self):
-        logger.debug("Enter game_server_panel->do_join_lobby(self)", False)
         self.cur_room_index = 0
         self.session.send_join_group("0","")
         self.set_lobbybutton(0);
-        logger.debug("Exit game_server_panel->do_join_lobby(self)", False)
 
     def do_join_group(self):
-        logger.debug("Enter game_server_panel->do_join_group(self)", False)
         if self.cur_room_index >= 0:
             if self.cur_room_index != 0:
                 self.set_lobbybutton(1);
@@ -601,10 +557,8 @@
                 pwd = ""
             if pwd != None: #pwd==None means the user clicked "Cancel"
                 self.session.send_join_group(group_id,pwd)
-        logger.debug("Exit game_server_panel->do_join_group(self)", False)
 
     def do_create_group(self):
-        logger.debug("Enter game_server_panel->do_create_group(self)", False)
         name = self.texts["room_name"].GetValue()
         boot_pwd = self.texts["room_boot_pwd"].GetValue()
         minversion = self.texts["room_min_version"].GetValue()
@@ -649,7 +603,6 @@
             self.session.send( msg )
             self.session.send_create_group(name,pwd,boot_pwd,minversion)
             self.set_lobbybutton(1); #enable the Lobby quickbutton
-        logger.debug("Exit game_server_panel->do_create_group(self)", False)
 
 
 #---------------------------------------------------------
@@ -671,39 +624,31 @@
 
 
     def colorize_group_list(self, groups):
-        logger.debug("Enter game_server_panel->colorize_group_list(self, groups)", False)
-
         try:
             hex = orpg.tools.rgbhex.RGBHex()
-#            activ = settings.get_setting("RoomColor_Active")
-#            lockt = settings.get_setting("RoomColor_Locked")
-#            empty = settings.get_setting("RoomColor_Empty")
-#            lobby = settings.get_setting("RoomColor_Lobby")
-#renamed colors - TaS sirebral
 
             for gr in groups:
                 item_list_location = self.room_list.FindItemData(-1,int(gr[0]))
                 if item_list_location != -1:
                     item = self.room_list.GetItem(item_list_location)
                     if gr[0] == "0":
-#                        active_state = lobby
+
 			r,g,b = hex.rgb_tuple(settings.get_setting("RoomColor_Lobby"))
                     elif gr[3] <> "0":
-#                        active_state = activ
+
                         if gr[2] == "True" or gr[2] == "1":
-#                           active_state = lockt
+
 			   r,g,b = hex.rgb_tuple(settings.get_setting("RoomColor_Locked"))
 			else:
-#			   active_state = activ
+
 			   r,g,b = hex.rgb_tuple(settings.get_setting("RoomColor_Active"))
                     else:
-#                        active_state = empty
+
 			r,g,b = hex.rgb_tuple(settings.get_setting("RoomColor_Empty"))
                         
-#                    r,g,b = hex.rgb_tuple(active_state)
+
 		    color = wx.Colour(red=r,green=g,blue=b)
                     item.SetTextColour(color)
                     self.room_list.SetItem(item)
         except:
             traceback.print_exc()
-        logger.debug("Exit game_server_panel->colorize_group_list(self, groups)", False)