Mercurial > parpg-source
view common/utils.py @ 119:2399a8c3da0c
Modified EquipmentSlot to display an image instead of a text.
Added EquipmentGui class, which handles the equipment slots of the player screen.
An EquipmentGui instance will be created in the InventoryGUI constructor.
The initializeInventory method of the Hud class supplies the players inventory and equipment to the InventoryGUI constructor.
author | KarstenBock@gmx.net |
---|---|
date | Wed, 05 Oct 2011 11:04:39 +0200 |
parents | 06145a6ee387 |
children |
line wrap: on
line source
# 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 3 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, see <http://www.gnu.org/licenses/>. # Miscellaneous game functions import sys import os import fnmatch from textwrap import dedent from contextlib import contextmanager from parpg import vfs def addPaths (*paths): """Adds a list of paths to sys.path. Paths are expected to use forward slashes, for example '../../engine/extensions'. Slashes are converted to the OS-specific equivalent. @type paths: ??? @param paths: Paths to files? @return: None""" for p in paths: if not p in sys.path: sys.path.append(os.path.sep.join(p.split('/'))) def parseBool(value): """Parses a string to get a boolean value""" if (value.isdigit()): return bool(int(value)) elif (value.isalpha): return value.lower()[0] == "t" return False def locateFiles(pattern, root=os.curdir): """Locate all files matching supplied filename pattern in and below supplied root directory.""" filepaths = [] filenames = vfs.VFS.listFiles(root) for filename in fnmatch.filter(filenames, pattern): vfs_file_path = '/'.join([root, filename]) filepaths.append(vfs_file_path) dirnames = vfs.VFS.listDirectories(root) for dirname in dirnames: subdir_filepaths = locateFiles(pattern, '/'.join([root, dirname])) filepaths.extend(subdir_filepaths) return filepaths def dedent_chomp(string): """Remove common leading whitespace and chomp each non-blank line.""" dedented_string = dedent(string).strip() lines = dedented_string.splitlines() formatted_lines = [] for index in range(len(lines)): line = lines[index] if index == len(lines) - 1: # Don't do anything to the last line. pass elif not line or line.isspace(): line = '\n\n' else: line = ''.join([line, ' ']) formatted_lines.append(line) result = ''.join(formatted_lines) return result @contextmanager def cwd(dirname): cwd = os.getcwd() try: os.chdir(dirname) yield finally: os.chdir(cwd)