Mercurial > fife-parpg
diff demos/shooter/scripts/common/helpers.py @ 446:2046a1f2f5f2
Adding the shooter demo. This is still a work in progress.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Wed, 31 Mar 2010 15:40:00 +0000 |
parents | |
children | 3164715a0621 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/demos/shooter/scripts/common/helpers.py Wed Mar 31 15:40:00 2010 +0000 @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- + +# #################################################################### +# Copyright (C) 2005-2009 by the FIFE team +# http://www.fifengine.de +# This file is part of FIFE. +# +# FIFE is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# #################################################################### + +from fife import fife + + +def normalize(vector): + """ + Helper function to normalize a vector + """ + norm = fife.DoublePoint(0,0) + + invLength = 1.0/vector.length() + if invLength > 1e-06: + norm.x = vector.x * invLength; + norm.y = vector.y * invLength; + else: + norm.x = 0 + norm.y = 0 + + return norm + +class Rect(object): + def __init__(self, x = 0, y = 0, w = 0, h = 0): + self._x = x + self._y = y + self._w = w + self._h = h + + def intersects(self, rect): + _x = self._x - rect.x; + _y = self._y - rect.y; + _w = self._w; + _h = self._h; + + if _x < 0: + _w += _x + _x = 0 + + if _y < 0: + _h += _y + _y = 0 + + if _x + _w > rect.w: + _w = rect.w - _x + + if _y + _h > rect.h: + _h = rect.h - _y + + if _w <= 0 or _h <= 0: + return False + + return True + + def _setX(self, x): + self._x = x + + def _getX(self): + return self._x + + def _setY(self, y): + self._y = y + + def _getY(self): + return self._y + + def _setW(self, w): + self._w = w + + def _getW(self): + return self._w + + def _setH(self, h): + self._h = h + + def _getH(self): + return self._h + + x = property(_getX, _setX) + y = property(_getY, _setY) + w = property(_getW, _setW) + h = property(_getH, _setH) \ No newline at end of file