Bladeren bron

Fully moved the 'position' property to the Node class. Decided even for Nodes that may not render anything may want positional information.

master
Bryan Miller 6 jaren geleden
bovenliggende
commit
786a3b19c9
1 gewijzigde bestanden met toevoegingen van 41 en 47 verwijderingen
  1. +41
    -47
      game/gbe/nodes.py

+ 41
- 47
game/gbe/nodes.py Bestand weergeven

"parent":None, "parent":None,
"name":name, "name":name,
"children":[], "children":[],
"resource":None
"resource":None,
"position":(0,0)
} }
if parent is not None: if parent is not None:
try: try:
def child_count(self): def child_count(self):
return len(this._NODE_DATA["children"]) return len(this._NODE_DATA["children"])


@property
def position(self):
p = self._NODE_DATA["position"]
return (p[0], p[1])
@position.setter
def position(self, pos):
if not isinstance(pos, (list, tuple)):
raise TypeError("Expected a list or tuple.")
if len(pos) != 2:
raise ValueError("Wrong number of values given.")
try:
self.position_x = pos[0]
self.position_y = pos[1]
except Exception as e:
raise e

@property
def position_x(self):
return self._NODE_DATA["position"][0]
@position_x.setter
def position_x(self, v):
if not isinstance(v, (int, float)):
raise TypeError("Excepted an number value.")
self._NODE_DATA["position"][0] = float(v)

@property
def position_y(self):
return self._NODE_DATA["position"][1]
@position_y.setter
def position_y(self, v):
if not isinstance(v, (int, float)):
raise TypeError("Excepted an number value.")
self._NODE_DATA["position"][1] = float(v)


def get_world_position(self): def get_world_position(self):
if self.parent is None: if self.parent is None:
return (0,0) return (0,0)
return self.parent.get_world_position()
pos = self.position
ppos = self.parent.get_world_position()
return (pos[0] + ppos[0], pos[1] + ppos[1])


def parent_to_node(self, parent, allow_reparenting=False): def parent_to_node(self, parent, allow_reparenting=False):
if not isinstance(value, Node): if not isinstance(value, Node):
try: try:
Node.__init__(self, name, parent) Node.__init__(self, name, parent)
except NodeError as e: except NodeError as e:
raise e
self._NODE2D_DATA={
"position":[0.0, 0.0]
}

@property
def position(self):
p = self._NODE2D_DATA["position"]
return (p[0], p[1])
@position.setter
def position(self, pos):
if not isinstance(pos, (list, tuple)):
raise TypeError("Expected a list or tuple.")
if len(pos) != 2:
raise ValueError("Wrong number of values given.")
try:
self.position_x = pos[0]
self.position_y = pos[1]
except Exception as e:
raise e

@property
def position_x(self):
return self._NODE2D_DATA["position"][0]
@position_x.setter
def position_x(self, v):
if not isinstance(v, (int, float)):
raise TypeError("Excepted an number value.")
self._NODE2D_DATA["position"][0] = float(v)

@property
def position_y(self):
return self._NODE2D_DATA["position"][1]
@position_y.setter
def position_y(self, v):
if not isinstance(v, (int, float)):
raise TypeError("Excepted an number value.")
self._NODE2D_DATA["position"][1] = float(v)
raise e


def _callOnRender(self, surface): def _callOnRender(self, surface):
if hasattr(self, "on_render"): if hasattr(self, "on_render"):
self.on_render() self.on_render()
del self._ACTIVE_SURF del self._ACTIVE_SURF


def get_world_position(self):
pos = self.position
if self.parent is None:
return pos
ppos = self.parent.get_world_position()
return (pos[0] + ppos[0], pos[1] + ppos[1])

def _render(self, surface): def _render(self, surface):
self._callOnRender(surface) self._callOnRender(surface)
Node._render(self, surface) Node._render(self, surface)

Laden…
Annuleren
Opslaan