Package schlachtfeld :: Package amov :: Module charakterverwaltung
[hide private]
[frames] | no frames]

Source Code for Module schlachtfeld.amov.charakterverwaltung

  1  #!/bin/env python 
  2  # encoding: utf-8 
  3   
  4  # Charakterverwaltung - Verwalte Charaktere im lesbaren YAML Format 
  5  # Copyright © 2007 - 2007 Arne Babenhauserheide 
  6   
  7  # This program is free software; you can redistribute it and/or modify 
  8  # it under the terms of the GNU General Public License as published by 
  9  # the Free Software Foundation; either version 2 of the License, or 
 10  # (at your option) any later version. 
 11   
 12  # This program is distributed in the hope that it will be useful, 
 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 15  # GNU General Public License for more details. 
 16   
 17  # You should have received a copy of the GNU General Public License 
 18  # along with this program; if not, write to the Free Software 
 19  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, 
 20  # MA 02110-1301 USA 
 21   
 22  ### Imports ### 
 23   
 24  # Wir brauchen die Klasse Charakter 
 25   
 26  import Charakter 
 27   
 28  # Für das Dateiformat brauchen wir yaml 
 29  import yaml 
 30   
 31  # Für die Übersetzung von IDs in Dateinamen brauchen wir noch tag_zu_datei 
 32  from Skripte.Kernskripte.ein_und_ausgabe import tag_zu_datei 
 33   
 34  # Um Charaktere per Kommandozeile übergeben zu können brauchen wir sys 
 35  import sys 
 36   
 37  # Außerdem Wollen wir einfach die neuste Version anfragen können.  
 38  import Versionsverwaltung 
 39   
 40   
 41  ### Imports ### 
 42   
 43   
 44  ### Klassen ### 
 45   
46 -class Verwaltung:
47 """Manage Data-Objects. Input are the tag and the Kategorie."""
48 - def __init__(self, tag=u"tag:draketo.de,2007:Sskreszta", kategorie=u"Charaktere"):
49 self.tag = tag 50 self.kategorie = kategorie 51 #: the ID of the most recent Version. 52 self.neuste_version = self.neuste_version()
53 - def neuste_version(self):
54 """return the ID of the most recent Version.""" 55 versionsverwaltung = Versionsverwaltung 56 versionen = versionsverwaltung.Versionen(tag=tag, kategorie=u"Charaktere") 57 ID = versionen.neuste #: The ID to retrieve the file. 58 return ID 59 60 ### Klassen ### 61 62 63 ### User Input ### 64 65 # Das Skript muss wie folgt aufgerufen werden: 66 # python charakterverwaltung.py <Kategorie> <Name> <Version> <URL> <Jahr> 67 68 try: 69 Kategorie = sys.argv[1] 70 Name = sys.argv[2] 71 Jahr = sys.argv[5] 72 URL = sys.argv[4] 73 Version = sys.argv[3] 74 75 yaml_id = "ID: tag:" + URL + "," + Jahr + ":" + Name + "\n" + "Version: " + Version + "\n" + "Kategorie: " + Kategorie 76 print yaml_id 77 tag = "tag:" + URL + "," + Jahr + ":" + Name 78 print tag 79 except: 80 print "Keine Kommandozeilenargumente. Verwende Standard: Sskreszta" 81 yaml_id = """ID: tag:draketo.de,2007:Sskreszta 82 Version: 0.15 83 Kategorie: Charaktere 84 """ 85 tag = "tag:draketo.de,2007:Sskreszta" 86 87 ### User Input ### 88 89 90 ### Testen ### 91 92 93 verwaltung = Verwaltung(tag, u"Charaktere") 94 95 ID = verwaltung.neuste_version 96 97 98 charakter = Charakter.Charakter(ID) 99 100 print u'Wir haben den/die', charakter.kategorie, u'"' + charakter.name + u'" gelesen.' 101 102 char_kampfwerte = charakter.kampfwerte 103 104 print "Für das Schlachtfeld: ", char_kampfwerte 105 106 try: 107 for wert in char_kampfwerte: 108 print wert + ":", char_kampfwerte[wert] 109 110 char_hauptwaffe = char_kampfwerte[u"Hauptwaffe"] 111 print "\nHauptwaffe:" 112 for wert in char_hauptwaffe[u"Waffe"]: 113 print wert + ":", char_hauptwaffe[u"Waffe"][wert] 114 115 char_kampffertigkeit = char_hauptwaffe[u"Kampffertigkeit"] 116 117 print u"Kampffertigkeit:", char_kampffertigkeit[u"Zahlenwert"] 118 except: 119 print "Keine Kampfwerte" 120 121 ### Testen ### 122 123 ## Jetzt definieren wie den Namen des Charakters 124 ## wie er im Programm verwendet wird. 125 ## TODO: Beliebig viele Charakternamen 126 ## akzeptieren. Aktuell geht nur einer. 127 128 129 #print "Öffne den Charakter " + argv[1] 130 #char_name = argv[1] 131 132 ## Daraus erstellen wir den Dateinamen für diesen 133 ## Charakter. 134 135 #char_datei = char_name + "/" + char_name + ".yml" 136 137 ## Danach definieren wir ein Objekt zum 138 ## Auslesen der Datei. 139 ## Achtung! Diese Objekte müssen neu instanziiert 140 ## werden, wenn ich die Datei erneut lesen will. 141 142 #char_auslesen = file(char_datei, 'r') 143 144 ## Nun lesen wir den Charakter in einen String 145 ## und schließen die Datei. 146 147 #charakter_datei = char_auslesen.read() 148 #char_auslesen.close() 149 150 151 ## Und übersetzen ihn mit YAML 152 ## in ein Python Objekt 153 ## Das wird unser Grundlegendes Objekt werden. 154 155 #charakter = yaml.load(charakter_datei) 156 157 ## Jetzt öffnen wir eine temporäre Datei zum 158 ## schreiben. 159 160 #char_ausgeben = file(char_datei + '.tmp', 'w') 161 162 ## schreiben den Charakter 163 164 #char_ausgeben.write(yaml.dump(charakter, default_flow_style=False, allow_unicode=True, indent=2)) 165 166 ## und schließen sie gleich wieder. 167 168 #char_ausgeben.close() 169 170 ## Da der Test hoffentlich geklappt hat, 171 ## speichern wir zum Abschluss des Programmes in 172 ## der Originaldatei. 173 174 #char_speichern = file(char_datei, 'w') 175 176 #char_speichern.write(yaml.dump(charakter, default_flow_style=False, allow_unicode=True, indent=2)) 177 178 #char_speichern.close() 179 180 ## Abschlussbemerkung 181 182 #print "Die Bearbeitung von " + charakter[0]["Name"] + " aus der Kampagne " + charakter[2]["Grunddaten"]["Chronik"] + " ist abgeschlossen." 183 184 ## print "Die gespeicherten Daten sind: " 185 ## print yaml.dump(charakter, default_flow_style=False) 186