ソースを参照

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 7年前
コミット
786a3b19c9
1個のファイルの変更41行の追加47行の削除
  1. +41
    -47
      game/gbe/nodes.py

+ 41
- 47
game/gbe/nodes.py ファイルの表示

"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)

読み込み中…
キャンセル
保存