diff orpg/mapper/map_msg.py @ 0:4385a7d0efd1 grumpy-goblin

Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
author sirebral
date Tue, 14 Jul 2009 16:41:58 -0500
parents
children 211ac836b6a0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/orpg/mapper/map_msg.py	Tue Jul 14 16:41:58 2009 -0500
@@ -0,0 +1,133 @@
+# Copyright (C) 2000-2001 The OpenRPG Project
+#
+#    openrpg-dev@lists.sourceforge.net
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# --
+#
+# File: mapper/map_msg.py
+# Author: OpenRPG
+# Maintainer:
+# Version:
+#   $Id: map_msg.py,v 1.16 2007/03/09 14:11:55 digitalxero Exp $
+#
+# Description:
+#
+__version__ = "$Id: map_msg.py,v 1.16 2007/03/09 14:11:55 digitalxero Exp $"
+
+#from base import *
+from base_msg import *
+from background_msg import *
+from grid_msg import *
+from miniatures_msg import *
+from whiteboard_msg import *
+from fog_msg import *
+
+"""
+<map name=? id=? >
+    <bg type=? file=? color=? />
+    <grid size=? snap=? />
+    <miniatures serial=? >
+        <miniature  path=?  posx=?  posy=?  heading=? face=? owner=? label=? locked=? width=? height=? />
+    </miniatures>
+</map>
+
+"""
+
+class map_msg(map_element_msg_base):
+
+    def __init__(self,reentrant_lock_object = None):
+        self.tagname = "map"
+        map_element_msg_base.__init__(self,reentrant_lock_object)
+
+    def init_from_dom(self,xml_dom):
+        self.p_lock.acquire()
+        if xml_dom.tagName == self.tagname:
+            # If this is a map message, look for the "action=new"
+            # Notice we only do this when the root is a map tag
+            if self.tagname == "map" and xml_dom.hasAttribute("action") and xml_dom.getAttribute("action") == "new":
+                self.clear()
+            # Process all of the properties in each tag
+            if xml_dom.getAttributeKeys():
+                for k in xml_dom.getAttributeKeys():
+                    self.init_prop(k,xml_dom.getAttribute(k))
+            for c in xml_dom._get_childNodes():
+                name = c._get_nodeName()
+                if not self.children.has_key(name):
+                    if name == "miniatures":
+                        self.children[name] = minis_msg(self.p_lock)
+                    elif name == "grid":
+                        self.children[name] = grid_msg(self.p_lock)
+                    elif name == "bg":
+                        self.children[name] = bg_msg(self.p_lock)
+                    elif name == "whiteboard":
+                        self.children[name] = whiteboard_msg(self.p_lock)
+                    elif name == "fog":
+                        self.children[name] = fog_msg(self.p_lock)
+                    else:
+                        print "Unrecognized tag " + name + " found in map_msg.init_from_dom - skipping"
+                        continue
+                try:
+                    self.children[name].init_from_dom(c)
+                except Exception, e:
+                    print "map_msg.init_from_dom() exception: "+str(e)
+                    continue
+        else:
+            self.p_lock.release()
+            raise Exception, "Error attempting to initialize a " + self.tagname + " from a non-<" + self.tagname + "/> element"
+        self.p_lock.release()
+
+    def set_from_dom(self,xml_dom):
+        self.p_lock.acquire()
+        if xml_dom.tagName == self.tagname:
+            # If this is a map message, look for the "action=new"
+            # Notice we only do this when the root is a map tag
+            if self.tagname == "map" and xml_dom.hasAttribute("action") and xml_dom.getAttribute("action") == "new":
+                self.clear()
+            # Process all of the properties in each tag
+            if xml_dom.getAttributeKeys():
+                for k in xml_dom.getAttributeKeys():
+                    self.set_prop(k,xml_dom.getAttribute(k))
+            for c in xml_dom._get_childNodes():
+                name = c._get_nodeName()
+                if not self.children.has_key(name):
+                    if name == "miniatures":
+                        self.children[name] = minis_msg(self.p_lock)
+                    elif name == "grid":
+                        self.children[name] = grid_msg(self.p_lock)
+                    elif name == "bg":
+                        self.children[name] = bg_msg(self.p_lock)
+                    elif name == "whiteboard":
+                        self.children[name] = whiteboard_msg(self.p_lock)
+                    elif name == "fog":
+                        self.children[name] = fog_msg(self.p_lock)
+                    else:
+                        print "Unrecognized tag " + name + " found in map_msg.init_from_dom - skipping"
+                        continue
+                try:
+                    self.children[name].set_from_dom(c)
+                except Exception, e:
+                    print "map_msg.set_from_dom() exception: "+str(e)
+                    continue
+        else:
+            self.p_lock.release()
+            raise Exception, "Error attempting to set a " + self.tagname + " from a non-<" + self.tagname + "/> element in map"
+        self.p_lock.release()
+
+    def get_all_xml(self, action="new", output_action=1):
+        return map_element_msg_base.get_all_xml(self, action, output_action)
+
+    def get_changed_xml(self, action="update", output_action=1):
+        return map_element_msg_base.get_changed_xml(self, action, output_action)