You can subscribe to this list here.
2004 |
Jan
(32) |
Feb
|
Mar
|
Apr
(151) |
May
(7) |
Jun
(3) |
Jul
(8) |
Aug
|
Sep
(2) |
Oct
(15) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Denny V. <vra...@us...> - 2004-04-11 01:47:53
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31568 Modified Files: Zauber.cpp Log Message: Ausnahmeregelungen fuer die Verwandschaft der Repraesentationen Index: Zauber.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Zauber.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Zauber.cpp 10 Apr 2004 22:37:33 -0000 1.11 --- Zauber.cpp 11 Apr 2004 01:34:20 -0000 1.12 *************** *** 413,420 **** //@+node:<< Lernschwierigkeit >> SKTSpalte Zauberfertigkeit::Lernschwierigkeit() const { ! // TODO ! return Definition()->Komplexitaet(); } - //@nonl //@-node:<< Lernschwierigkeit >> //@nl --- 413,453 ---- //@+node:<< Lernschwierigkeit >> SKTSpalte Zauberfertigkeit::Lernschwierigkeit() const { ! SKTSpalte komp = Definition()->Komplexitaet(); ! if (person_ == 0) return komp; ! ! int mod = 0; ! bool sch = (Repraesentation() == _t("Schelme")); ! bool srl = (Repraesentation() == _t("Scharlatane")); ! bool mag = (Repraesentation() == _t("Gildenmagier")); ! bool kannsch = false; ! bool kannsrl = false; ! bool kannmag = false; ! bool fremd = true; // gehen wir davon aus, dass dies nicht die eigene rep ist ! int anzahlrep = 0; ! ! for (Sonderfertigkeiten::const_iterator sf = person_->sonderfertigkeiten_.begin(); sf != person_->sonderfertigkeiten_.end(); ++sf) ! if (sf->second.Definition()->Repraesentation()) { ! if (strings::InKlammern(sf->first) == Repraesentation()) ! fremd = false; // eigene rep! ! kannsch = (strings::InKlammern(sf->first) == _t("Schelme")); ! kannsrl = (strings::InKlammern(sf->first) == _t("Scharlatane")); ! kannmag = (strings::InKlammern(sf->first) == _t("Gildenmagier")); ! ++anzahlrep; ! } ! ! if (fremd) ! if (mag && kannsrl) mod += 1; ! else if (sch && kannsrl) mod += 2; ! else if (srl && kannsch) mod += 2; ! else if (sch && !kannsrl) mod += 3; ! else { mod += 2; // Immer noch fremd, als um 2 Spalten erschwert ! if (kannsch&&(anzahlrep==1)) ++mod; // bei (exklusiven) Schelmen um 3 ! } ! ! while (mod < 0) { komp = SpalteLeichter(komp); ++mod; } ! while (mod > 0) { komp = SpalteSchwerer(komp); --mod; } ! ! return komp; } //@-node:<< Lernschwierigkeit >> //@nl *************** *** 538,541 **** --- 571,577 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.12 2004/04/11 01:34:20 vrandezo + // Ausnahmeregelungen fuer die Verwandschaft der Repraesentationen + // // Revision 1.11 2004/04/10 22:37:33 vrandezo // Repraesentation erhoeht ZfW-Maximalwert |
From: Denny V. <vra...@us...> - 2004-04-11 01:47:05
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31464 Modified Files: PersonHandlerGenerator.cpp Log Message: selbsthinzugefuegte RK richtig steiger- und senkbar Index: PersonHandlerGenerator.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonHandlerGenerator.cpp,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** PersonHandlerGenerator.cpp 10 Apr 2004 20:22:41 -0000 1.45 --- PersonHandlerGenerator.cpp 11 Apr 2004 01:33:31 -0000 1.46 *************** *** 1544,1547 **** --- 1544,1548 ---- //@+node:<< Steiger SF >> void PersonHandlerGenerator::SteigerSF(const std::string& sf) { + if (!SteigerbarSF(sf)) return; Sonderfertigkeit* s = sffinal_.Zeige(sf); if (s==0) return; *************** *** 1572,1581 **** //@+node:<< Senke SF >> void PersonHandlerGenerator::SenkeSF(const std::string& sf) { Sonderfertigkeit* se = sfeigen_.Zeige(sf); ! if (se==0) return; ! if (se->Stufe()==1) EntferneSF(sf); else se->Stufe(se->Stufe()-1); BerechneSFFinal(); --- 1573,1586 ---- //@+node:<< Senke SF >> void PersonHandlerGenerator::SenkeSF(const std::string& sf) { + if (!SenkbarSF(sf)) return; Sonderfertigkeit* se = sfeigen_.Zeige(sf); ! Sonderfertigkeit* sg = sffinal_.Zeige(sf); ! if ((se==0)||(sg==0)) return; ! ! if ((se->Stufe()==1)||((se->Stufe()==sg->Stufe())&&(se->Stufe()==3))) EntferneSF(sf); else se->Stufe(se->Stufe()-1); + BerechneSFFinal(); *************** *** 2173,2235 **** Sonderfertigkeiten sftemp; ! int i = 0; ! for (i = 0; i != P()->Rasse_().sonderfertigkeiten_.size(); ++i) { ! sftemp.FuegeEin(P()->Rasse_().sonderfertigkeiten_.Hole(i)); ! } ! sfverbilligt_ = P()->Rasse_().verbilligteSonderfertigkeiten_; ! ! for (int a = 0; a != 2; ++a) { ! Sonderfertigkeiten sfs = ! (a==0?P()->Kultur_().sonderfertigkeiten_:P()->Profession_().sonderfertigkeiten_); ! StringListe sfl = ! (a==0?P()->Kultur_().verbilligteSonderfertigkeiten_:P()->Profession_().verbilligteSonderfertigkeiten_); ! for (i = 0; i != sfs.size(); ++i) { ! Sonderfertigkeit sf = sfs.Hole(i); ! const SonderfertigkeitDefinition* sfd = sf.Definition(); ! if (sfd->HatStufen()) { ! // Stufen addieren ! int stufensumme = sfd->Stufe(); ! for (int stufe = 1; stufe <= sfd->MaximalStufe(); ++stufe) { ! if (sftemp.Existiert(sfd->Stufe(stufe))) { ! stufensumme += stufe; ! sftemp.Loesche(sfd->Stufe(stufe)); ! } ! } ! if (stufensumme > sfd->MaximalStufe()) ! stufensumme = sfd->MaximalStufe(); ! sftemp.FuegeEin(Sonderfertigkeit(sfd->Stufe(stufensumme))); ! } else { // nicht (HatStufen()) ! if (sftemp.Existiert(sf.ID())) // gibts schon ! gp += Hinzu(_t("Doppelte Sonderfertigkeit") + ": " + sfd->ID(), -(sfd->GP()+1)/2); ! else { // gibts noch nicht ! sftemp.FuegeEin(sf); ! } ! } // end if (HatStufen()) ! } ! ! // Verbilligte SF ! for (i = 0; i != sfl.size(); ++i) ! sfverbilligt_.push_back(sfl[i]); ! sfl.clear(); ! for (i = 0; i != sfverbilligt_.size(); ++i) ! if (sftemp.Existiert(sfverbilligt_[i])) ! gp += Hinzu(_t("Doppelte verbilligte Sonderfertigkeit") + ": " + sfverbilligt_[i], -1); // Setze 1 GP frei ! else ! sfl.push_back(sfverbilligt_[i]); ! sfverbilligt_ = sfl; ! } // für Profession und Kultur P()->sonderfertigkeiten_ = sftemp; - P()->verbilligteSonderfertigkeiten_ = sfverbilligt_; ! ! // Füge für alle SF mit Stufe > 1 die kleineren SF ein ! for (i = 0; i != P()->sonderfertigkeiten_.size(); ++i) { ! if (P()->sonderfertigkeiten_.Hole(i).Definition()->Stufe()>1) ! sftemp.FuegeEin(Sonderfertigkeit(P()->sonderfertigkeiten_.Hole(i).Definition()->Stufe(1))); ! if (P()->sonderfertigkeiten_.Hole(i).Definition()->Stufe()>2) ! sftemp.FuegeEin(Sonderfertigkeit(P()->sonderfertigkeiten_.Hole(i).Definition()->Stufe(2))); ! } ! P()->sonderfertigkeiten_ = sfbasis_ = sftemp; // fertig mit automatischen, nun die eigenen --- 2178,2250 ---- Sonderfertigkeiten sftemp; ! //@ << Setze SF aus RKP >> ! //@+node:<< Setze SF aus RKP >> ! int i = 0; ! for (i = 0; i != P()->Rasse_().sonderfertigkeiten_.size(); ++i) { ! sftemp.FuegeEin(P()->Rasse_().sonderfertigkeiten_.Hole(i)); ! } ! sfverbilligt_ = P()->Rasse_().verbilligteSonderfertigkeiten_; ! ! for (int a = 0; a != 2; ++a) { ! Sonderfertigkeiten sfs = ! (a==0?P()->Kultur_().sonderfertigkeiten_:P()->Profession_().sonderfertigkeiten_); ! StringListe sfl = ! (a==0?P()->Kultur_().verbilligteSonderfertigkeiten_:P()->Profession_().verbilligteSonderfertigkeiten_); ! for (i = 0; i != sfs.size(); ++i) { ! Sonderfertigkeit sf = sfs.Hole(i); ! const SonderfertigkeitDefinition* sfd = sf.Definition(); ! if (sfd->HatStufen()) { ! // Stufen addieren ! int stufensumme = sfd->Stufe(); ! for (int stufe = 1; stufe <= sfd->MaximalStufe(); ++stufe) { ! if (sftemp.Existiert(sfd->Stufe(stufe))) { ! stufensumme += stufe; ! sftemp.Loesche(sfd->Stufe(stufe)); ! } ! } ! if (stufensumme > sfd->MaximalStufe()) ! stufensumme = sfd->MaximalStufe(); ! sftemp.FuegeEin(Sonderfertigkeit(sfd->Stufe(stufensumme))); ! } else { // nicht (HatStufen()) ! if (sftemp.Existiert(sf.ID())) // gibts schon ! gp += Hinzu(_t("Doppelte Sonderfertigkeit") + ": " + sfd->ID(), -(sfd->GP()+1)/2); ! else { // gibts noch nicht ! sftemp.FuegeEin(sf); ! } ! } // end if (HatStufen()) ! } ! ! // Verbilligte SF ! for (i = 0; i != sfl.size(); ++i) ! sfverbilligt_.push_back(sfl[i]); ! sfl.clear(); ! for (i = 0; i != sfverbilligt_.size(); ++i) ! if (sftemp.Existiert(sfverbilligt_[i])) ! gp += Hinzu(_t("Doppelte verbilligte Sonderfertigkeit") + ": " + sfverbilligt_[i], -1); // Setze 1 GP frei ! else ! sfl.push_back(sfverbilligt_[i]); ! sfverbilligt_ = sfl; ! } // für Profession und Kultur ! //@nonl ! //@-node:<< Setze SF aus RKP >> ! //@nl ! P()->sonderfertigkeiten_ = sftemp; P()->verbilligteSonderfertigkeiten_ = sfverbilligt_; ! ! //@ << Füge für alle SF mit Stufe > 1 die kleineren SF ein >> ! //@+node:<< Füge für alle SF mit Stufe > 1 die kleineren SF ein >> ! for (i = 0; i != P()->sonderfertigkeiten_.size(); ++i) { ! if (P()->sonderfertigkeiten_.Hole(i).Definition()->Stufe()>1) ! sftemp.FuegeEin(Sonderfertigkeit(P()->sonderfertigkeiten_.Hole(i).Definition()->Stufe(1))); ! if (P()->sonderfertigkeiten_.Hole(i).Definition()->Stufe()>2) ! sftemp.FuegeEin(Sonderfertigkeit(P()->sonderfertigkeiten_.Hole(i).Definition()->Stufe(2))); ! } ! //@nonl ! //@-node:<< Füge für alle SF mit Stufe > 1 die kleineren SF ein >> ! //@nl ! P()->sonderfertigkeiten_ = sfbasis_ = sftemp; + // fertig mit automatischen, nun die eigenen *************** *** 2241,2246 **** sfrest = sftemp2; for (i = 0; i != sfeigen_.size(); ++i) { ! ! // Ausnahme für Ritualkenntnis std::string sfid = sfeigen_.Zeige(i)->ID(); if (strings::BeginntMit(sfid, _t("Ritualkenntnis"))) --- 2256,2261 ---- sfrest = sftemp2; for (i = 0; i != sfeigen_.size(); ++i) { ! ! // Ausnahme für RK std::string sfid = sfeigen_.Zeige(i)->ID(); if (strings::BeginntMit(sfid, _t("Ritualkenntnis"))) *************** *** 2284,2287 **** --- 2299,2303 ---- return gp; } // BerechneSFFinal + //@nonl //@-node:<< BerechneSFFinal >> //@nl *************** *** 2451,2457 **** if (strings::BeginntMit(sf->first, _t("Ritualkenntnis"))) { int basiswert = 3; // TODO Magische Konstante, Startwert Ritualkenntnis ! if (sfbasis_.Existiert(sf->first)) basiswert = sfbasis_.Zeige(sf->first)->Stufe(); ! int zielwert = sf->second.Stufe()+basiswert; while (zielwert > basiswert) tgp += regeln()->SKT(sf->second.SKTSpalte_(*P()), ++basiswert); --- 2467,2478 ---- if (strings::BeginntMit(sf->first, _t("Ritualkenntnis"))) { int basiswert = 3; // TODO Magische Konstante, Startwert Ritualkenntnis ! int zielwert = 0; ! if (sfbasis_.Existiert(sf->first)) { basiswert = sfbasis_.Zeige(sf->first)->Stufe(); ! zielwert = sf->second.Stufe()+basiswert; ! } else { ! basiswert = 3; ! zielwert = sf->second.Stufe(); ! } while (zielwert > basiswert) tgp += regeln()->SKT(sf->second.SKTSpalte_(*P()), ++basiswert); *************** *** 2571,2574 **** --- 2592,2598 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.46 2004/04/11 01:33:31 vrandezo + // selbsthinzugefuegte RK richtig steiger- und senkbar + // // Revision 1.45 2004/04/10 20:22:41 vrandezo // Schlechte Eigenschaften bei Re-Gen korrigiert |
From: Denny V. <vra...@us...> - 2004-04-11 01:46:24
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31332 Modified Files: Sonderfertigkeit.cpp Sonderfertigkeit.h Log Message: generiere Ritualkenntnisse Test auf "schlafend" verbessert Index: Sonderfertigkeit.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Sonderfertigkeit.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** Sonderfertigkeit.cpp 10 Apr 2004 22:38:02 -0000 1.20 --- Sonderfertigkeit.cpp 11 Apr 2004 01:32:50 -0000 1.21 *************** *** 126,130 **** //@<< Hinzufuegbar >> //@+node:<< Hinzufuegbar >> ! bool SonderfertigkeitDefinition::Hinzufuegbar(const Person& p) const { // Voraussetzung von Binden ist u.a. Meisterparade oder Parierwaffen I --- 126,130 ---- //@<< Hinzufuegbar >> //@+node:<< Hinzufuegbar >> ! bool SonderfertigkeitDefinition::Hinzufuegbar(const Person& p, bool schlaftest) const { // Voraussetzung von Binden ist u.a. Meisterparade oder Parierwaffen I *************** *** 142,145 **** --- 142,147 ---- ++anzahl; + if (schlaftest) --anzahl; // wenn wir hier testen, ob eine rep schlafen ist, dann ist sie ja schon dabei, und wie muessen um eine weniger testen + if (anzahl == 1) { // Die Standardvoraussetzungen prüfen schon auf Voll- und Halbzauberer *************** *** 402,405 **** --- 404,425 ---- generierteSonderfertigkeiten()->FuegeEin(sfdef); } + + // Ritualkenntnis + for (StringListe::const_iterator si = Repraesentationen()->begin(); si != Repraesentationen()->end(); ++si) { + SonderfertigkeitDefinition sfdef; + sfdef.Stufe(0); + sfdef.AP(250); // TODO Konstante + sfdef.GP(5); // TODO Konstante + std::string s = _t("Ritualkenntnis") + " (" + *si + ")"; + sfdef.ID(s); + Voraussetzung vor; + vor.ID(_t("Magiebegabt")); + sfdef.voraussetzungen_.FuegeEin(vor); + vor.ID(_t("Viertelzauberer")); + vor.Kein(true); + sfdef.voraussetzungen_.FuegeEin(vor); + generierteSonderfertigkeiten()->FuegeEin(sfdef); + } + } //@nonl *************** *** 430,434 **** if (!(Spezifizierung()=="")) s = s + " (" + Spezifizierung() + ")"; ! if (!Definition()->Hinzufuegbar(*p)) s += " (" + _t("schlafend") + ")"; return s; --- 450,454 ---- if (!(Spezifizierung()=="")) s = s + " (" + Spezifizierung() + ")"; ! if (!Definition()->Hinzufuegbar(*p, true)) s += " (" + _t("schlafend") + ")"; return s; *************** *** 738,741 **** --- 758,765 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.21 2004/04/11 01:32:50 vrandezo + // generiere Ritualkenntnisse + // Test auf "schlafend" verbessert + // // Revision 1.20 2004/04/10 22:38:02 vrandezo // SF Repraesentation Index: Sonderfertigkeit.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Sonderfertigkeit.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** Sonderfertigkeit.h 10 Apr 2004 22:38:02 -0000 1.17 --- Sonderfertigkeit.h 11 Apr 2004 01:32:50 -0000 1.18 *************** *** 92,96 **** std::string Stufe(int stufe) const; ! bool Hinzufuegbar(const Person&) const; //@ << operator== >> --- 92,96 ---- std::string Stufe(int stufe) const; ! bool Hinzufuegbar(const Person&, bool schlaftest = false) const; //@ << operator== >> *************** *** 238,241 **** --- 238,245 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.18 2004/04/11 01:32:50 vrandezo + // generiere Ritualkenntnisse + // Test auf "schlafend" verbessert + // // Revision 1.17 2004/04/10 22:38:02 vrandezo // SF Repraesentation |
From: Denny V. <vra...@us...> - 2004-04-10 23:15:56
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7742 Modified Files: KampftechnikGUIwx.cpp SpracheSchriftGUIwx.cpp ZauberGUIwx.cpp Log Message: Anpassungen wegen SKT A* Index: KampftechnikGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/KampftechnikGUIwx.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** KampftechnikGUIwx.cpp 28 Nov 2003 23:26:55 -0000 1.6 --- KampftechnikGUIwx.cpp 10 Apr 2004 23:02:23 -0000 1.7 *************** *** 86,92 **** zeilenSizer->Add(new wxStaticText(this, -1, _t("SKT").c_str()), 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 10); skt_ = new wxComboBox(this, COMBOART, "", wxDefaultPosition, wxDefaultSize, 0, 0, ! wxCB_READONLY | wxCB_DROPDOWN | wxCB_SORT); skt_->Clear(); ! for (i = 0; i != DSA::AnzahlSKTSpalten; ++i) skt_->Append(DSA::SKTSpalteString((DSA::SKTSpalte)i).c_str()); zeilenSizer->Add(skt_, 1, wxEXPAND | wxLEFT, 5); --- 86,92 ---- zeilenSizer->Add(new wxStaticText(this, -1, _t("SKT").c_str()), 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 10); skt_ = new wxComboBox(this, COMBOART, "", wxDefaultPosition, wxDefaultSize, 0, 0, ! wxCB_READONLY | wxCB_DROPDOWN); skt_->Clear(); ! for (i = 1; i < DSA::AnzahlSKTSpalten+1; ++i) skt_->Append(DSA::SKTSpalteString((DSA::SKTSpalte)i).c_str()); zeilenSizer->Add(skt_, 1, wxEXPAND | wxLEFT, 5); *************** *** 224,227 **** --- 224,230 ---- // $Log$ + // Revision 1.7 2004/04/10 23:02:23 vrandezo + // Anpassungen wegen SKT A* + // // Revision 1.6 2003/11/28 23:26:55 vrandezo // Kopierenknopf Index: ZauberGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/ZauberGUIwx.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ZauberGUIwx.cpp 28 Nov 2003 23:26:55 -0000 1.9 --- ZauberGUIwx.cpp 10 Apr 2004 23:02:23 -0000 1.10 *************** *** 103,109 **** zeilenSizer2->Add(new wxStaticText(this, -1, (_t("Komplexität")).c_str())); komplexitaet_ = new wxComboBox(this, COMBOKOMPLEXITAET, "", wxDefaultPosition, wxDefaultSize, 0, 0, ! wxCB_READONLY | wxCB_DROPDOWN | wxCB_SORT); komplexitaet_->Clear(); ! for (int i = 0; i != DSA::AnzahlSKTSpalten; ++i) komplexitaet_->Append(DSA::SKTSpalteString((DSA::SKTSpalte)i).c_str()); zeilenSizer2->Add(komplexitaet_, 1, wxEXPAND | wxLEFT, 4); --- 103,109 ---- zeilenSizer2->Add(new wxStaticText(this, -1, (_t("Komplexität")).c_str())); komplexitaet_ = new wxComboBox(this, COMBOKOMPLEXITAET, "", wxDefaultPosition, wxDefaultSize, 0, 0, ! wxCB_READONLY | wxCB_DROPDOWN); komplexitaet_->Clear(); ! for (int i = 1; i < DSA::AnzahlSKTSpalten+1; ++i) komplexitaet_->Append(DSA::SKTSpalteString((DSA::SKTSpalte)i).c_str()); zeilenSizer2->Add(komplexitaet_, 1, wxEXPAND | wxLEFT, 4); *************** *** 399,402 **** --- 399,405 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.10 2004/04/10 23:02:23 vrandezo + // Anpassungen wegen SKT A* + // // Revision 1.9 2003/11/28 23:26:55 vrandezo // Kopierenknopf Index: SpracheSchriftGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/SpracheSchriftGUIwx.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SpracheSchriftGUIwx.cpp 28 Nov 2003 23:26:55 -0000 1.5 --- SpracheSchriftGUIwx.cpp 10 Apr 2004 23:02:23 -0000 1.6 *************** *** 80,86 **** zeilenSizer->Add(new wxStaticText(this, -1, _t("SKT").c_str()), 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5); skt_ = new wxComboBox(this, COMBOSKT, "", wxDefaultPosition, wxDefaultSize, 0, 0, ! wxCB_READONLY | wxCB_DROPDOWN | wxCB_SORT); skt_->Clear(); ! for (int i = 0; i != DSA::AnzahlSKTSpalten; ++i) skt_->Append(DSA::SKTSpalteString((DSA::SKTSpalte)i).c_str()); zeilenSizer->Add(skt_, 1, wxEXPAND | wxLEFT, 5); --- 80,86 ---- zeilenSizer->Add(new wxStaticText(this, -1, _t("SKT").c_str()), 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5); skt_ = new wxComboBox(this, COMBOSKT, "", wxDefaultPosition, wxDefaultSize, 0, 0, ! wxCB_READONLY | wxCB_DROPDOWN); skt_->Clear(); ! for (int i = 1; i < DSA::AnzahlSKTSpalten+1; ++i) skt_->Append(DSA::SKTSpalteString((DSA::SKTSpalte)i).c_str()); zeilenSizer->Add(skt_, 1, wxEXPAND | wxLEFT, 5); *************** *** 270,276 **** zeilenSizer->Add(new wxStaticText(this, -1, _t("SKT").c_str()), 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5); skt_ = new wxComboBox(this, COMBOSKT, "", wxDefaultPosition, wxDefaultSize, 0, 0, ! wxCB_READONLY | wxCB_DROPDOWN | wxCB_SORT); skt_->Clear(); ! for (int i = 0; i != DSA::AnzahlSKTSpalten; ++i) skt_->Append(DSA::SKTSpalteString((DSA::SKTSpalte)i).c_str()); zeilenSizer->Add(skt_, 1, wxEXPAND | wxLEFT, 5); --- 270,276 ---- zeilenSizer->Add(new wxStaticText(this, -1, _t("SKT").c_str()), 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5); skt_ = new wxComboBox(this, COMBOSKT, "", wxDefaultPosition, wxDefaultSize, 0, 0, ! wxCB_READONLY | wxCB_DROPDOWN); skt_->Clear(); ! for (int i = 1; i < DSA::AnzahlSKTSpalten+1; ++i) skt_->Append(DSA::SKTSpalteString((DSA::SKTSpalte)i).c_str()); zeilenSizer->Add(skt_, 1, wxEXPAND | wxLEFT, 5); *************** *** 428,431 **** --- 428,434 ---- // $Log$ + // Revision 1.6 2004/04/10 23:02:23 vrandezo + // Anpassungen wegen SKT A* + // // Revision 1.5 2003/11/28 23:26:55 vrandezo // Kopierenknopf |
From: Denny V. <vra...@us...> - 2004-04-10 23:15:01
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7592 Modified Files: NDSABasis.cpp NDSABasis.h Regeln.cpp Log Message: SKT Spalte A* eingefuehrt Index: NDSABasis.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/NDSABasis.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** NDSABasis.cpp 28 Nov 2003 16:46:16 -0000 1.5 --- NDSABasis.cpp 10 Apr 2004 23:01:28 -0000 1.6 *************** *** 241,244 **** --- 241,245 ---- std::string SKTSpalteString(SKTSpalte s) { switch (s) { + case TransA : return "A*"; case A : return "A"; case B : return "B"; *************** *** 253,256 **** --- 254,258 ---- SKTSpalte SKTSpalteString(std::string s) { + if (s=="A*")return TransA; if (s=="A") return A; if (s=="B") return B; *************** *** 265,269 **** SKTSpalte SpalteLeichter(SKTSpalte s) { switch (s) { ! case A : Log::Error("NDSABasis::Spalteleichter: Trans-A"); return A; case B : return A; case C : return B; --- 267,271 ---- SKTSpalte SpalteLeichter(SKTSpalte s) { switch (s) { ! case A : return TransA; case B : return A; case C : return B; *************** *** 279,282 **** --- 281,285 ---- SKTSpalte SpalteSchwerer(SKTSpalte s) { switch (s) { + case TransA : return A; case A : return B; case B : return C; *************** *** 286,290 **** case F : return G; case G : return H; ! case H : Log::Error("NDSABasis::Spalteleichter: Trans-H"); return H; default : Log::Error("NDSABasis::SpalteLeichter: unbekannte Spalte"); return A; } --- 289,293 ---- case F : return G; case G : return H; ! case H : return H; default : Log::Error("NDSABasis::SpalteLeichter: unbekannte Spalte"); return A; } *************** *** 299,302 **** --- 302,308 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.6 2004/04/10 23:01:28 vrandezo + // SKT Spalte A* eingefuehrt + // // Revision 1.5 2003/11/28 16:46:16 vrandezo // Zeilenvorlauf am Dateiende (Warnung bei gcc) Index: Regeln.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Regeln.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Regeln.cpp 6 Apr 2004 10:42:25 -0000 1.7 --- Regeln.cpp 10 Apr 2004 23:01:28 -0000 1.8 *************** *** 143,146 **** --- 143,147 ---- int Regeln::SKT(SKTSpalte s, int i) const { + if (s==TransA) return max(SKT(A, i)-2, 1); if (i<1) return (int) Aktivierungsfaktor(s); if (i>AnzahlSKTZeilen) return skt_[31][static_cast<int>(s)-1]; *************** *** 149,152 **** --- 150,154 ---- double Regeln::Aktivierungsfaktor(SKTSpalte s) const { + if (s==TransA) return aktivierungsfaktor_[0]; return aktivierungsfaktor_[static_cast<int>(s)-1]; } // Aktivierungsfaktor *************** *** 155,166 **** switch (g) { case Kampf : return SKTKampf; ! case Koerperlich : return SKTKoerperlich; case Gabe : return SKTGaben; case Gesellschaftlich : return SKTGesellschaftlich; ! case Handwerk : return SKTHandwerk; case Natur : return SKTNatur; case SprachenUndSchriften : return SKTSprachenUndSchriften; ! case Wissen : return SKTWissen; ! default : return D; } } // TalentgruppenSKT --- 157,168 ---- switch (g) { case Kampf : return SKTKampf; ! case Koerperlich : return SKTKoerperlich; case Gabe : return SKTGaben; case Gesellschaftlich : return SKTGesellschaftlich; ! case Handwerk : return SKTHandwerk; case Natur : return SKTNatur; case SprachenUndSchriften : return SKTSprachenUndSchriften; ! case Wissen : return SKTWissen; ! default : return D; } } // TalentgruppenSKT *************** *** 209,212 **** --- 211,217 ---- // $Log$ + // Revision 1.8 2004/04/10 23:01:28 vrandezo + // SKT Spalte A* eingefuehrt + // // Revision 1.7 2004/04/06 10:42:25 vrandezo // Regeloptionen eingeführt Index: NDSABasis.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/NDSABasis.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** NDSABasis.h 7 Jan 2004 22:50:57 -0000 1.6 --- NDSABasis.h 10 Apr 2004 23:01:28 -0000 1.7 *************** *** 105,109 **** }; ! enum SKTSpalte { A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8 }; SKTSpalte SpalteLeichter(SKTSpalte s); --- 105,109 ---- }; ! enum SKTSpalte { TransA = 0, A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8 }; SKTSpalte SpalteLeichter(SKTSpalte s); *************** *** 114,118 **** AnzahlAbgeleiteterWerte = 9, EigenschaftenProTalentprobe = 3, ! AnzahlSKTSpalten = 8, AnzahlSKTZeilen = 31, AnzahlTalentgruppen = 8, // TODO senken um 3? --- 114,118 ---- AnzahlAbgeleiteterWerte = 9, EigenschaftenProTalentprobe = 3, ! AnzahlSKTSpalten = 8, // TransA zählt nicht! AnzahlSKTZeilen = 31, AnzahlTalentgruppen = 8, // TODO senken um 3? *************** *** 163,166 **** --- 163,169 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.7 2004/04/10 23:01:28 vrandezo + // SKT Spalte A* eingefuehrt + // // Revision 1.6 2004/01/07 22:50:57 dertron // Kommentaranfang /* innerhalb von Kommentaren entfernt |
From: Denny V. <vra...@us...> - 2004-04-10 22:51:35
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4016 Modified Files: Sonderfertigkeit.cpp Sonderfertigkeit.h Log Message: SF Repraesentation Index: Sonderfertigkeit.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Sonderfertigkeit.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** Sonderfertigkeit.cpp 7 Jan 2004 23:07:06 -0000 1.19 --- Sonderfertigkeit.cpp 10 Apr 2004 22:38:02 -0000 1.20 *************** *** 134,137 **** --- 134,171 ---- return false; + // Repräsentationen + if (Repraesentation()) { + // Wieviele hat der Held schon? + int anzahl = 0; + for (Sonderfertigkeiten::const_iterator sf = p.sonderfertigkeiten_.begin(); sf != p.sonderfertigkeiten_.end(); ++sf) + if (sf->second.Definition()->Repraesentation()) + ++anzahl; + + if (anzahl == 1) { + // Die Standardvoraussetzungen prüfen schon auf Voll- und Halbzauberer + if (p.Wert(Klugheit) < 15) + return false; + if (p.Wert(Intuition) < 15) + return false; + } + if (anzahl == 2) { + if (!p.charakteristika_.Existiert(_t("Vollzauberer"))) + return false; + if (p.Wert(Klugheit) < 18) + return false; + } + + int zfsumme = 0; + std::string rep = strings::InKlammern(ID()); + for (Zauberfertigkeiten::const_iterator zfw = p.zauberfertigkeiten_.begin(); zfw != p.zauberfertigkeiten_.end(); ++zfw) + if (zfw->second.Repraesentation() == rep) + zfsumme += zfw->second.Wert(); + if (zfsumme < 50) // TODO Konstante + return false; + + + } + + return voraussetzungen_.Erfuellt(p); } // Hinzufuegbar *************** *** 151,154 **** --- 185,204 ---- //@-node:<< Gelaendekunde >> //@nl + //@<< Repraesentation >> + //@+node:<< Repraesentation >> + bool SonderfertigkeitDefinition::Repraesentation() const { + return strings::BeginntMit(ID(), _t("Repräsentation")); + } + //@nonl + //@-node:<< Repraesentation >> + //@nl + //@<< Ritualkenntnis >> + //@+node:<< Ritualkenntnis >> + bool SonderfertigkeitDefinition::Ritualkenntnis() const { + return strings::BeginntMit(ID(), _t("Ritualkenntnis")); + } + //@nonl + //@-node:<< Ritualkenntnis >> + //@nl //@<< Extra >> *************** *** 305,321 **** generierteSonderfertigkeiten()->clear(); ! SonderfertigkeitDefinition sfdef; ! // Scharf- und Meisterschütze ! sfdef.Stufe(0); ! sfdef.AP(300); // TODO Konstante ! sfdef.GP(6); // TODO Konstante ! for (DSA::KampftechnikDefinitionen::iterator kt = DSA::kampftechniken()->begin(); kt != DSA::kampftechniken()->end(); ++kt) if (kt->second.KampfArt()==Fernkampf) { std::string s = _t("Scharfschütze") + " (" + kt->first + ")"; ! DSA::Voraussetzung vor; vor.ID(kt->first); vor.MinimalWert(7); // TODO Konstante vor.Minimal(true); sfdef.ID(s); sfdef.voraussetzungen_.clear(); --- 355,373 ---- generierteSonderfertigkeiten()->clear(); ! // Scharf- und Meisterschütze ! for (KampftechnikDefinitionen::iterator kt = kampftechniken()->begin(); kt != kampftechniken()->end(); ++kt) if (kt->second.KampfArt()==Fernkampf) { + SonderfertigkeitDefinition sfdef; + sfdef.Stufe(0); + sfdef.AP(300); // TODO Konstante + sfdef.GP(6); // TODO Konstante std::string s = _t("Scharfschütze") + " (" + kt->first + ")"; ! ! Voraussetzung vor; vor.ID(kt->first); vor.MinimalWert(7); // TODO Konstante vor.Minimal(true); + sfdef.ID(s); sfdef.voraussetzungen_.clear(); *************** *** 323,327 **** generierteSonderfertigkeiten()->FuegeEin(sfdef); ! DSA::Voraussetzung vor2; vor2.ID(s); s = _t("Meisterschütze") + " (" + kt->first + ")"; --- 375,379 ---- generierteSonderfertigkeiten()->FuegeEin(sfdef); ! Voraussetzung vor2; vor2.ID(s); s = _t("Meisterschütze") + " (" + kt->first + ")"; *************** *** 334,337 **** --- 386,405 ---- } + // Repraesentationen + for (StringListe::const_iterator si = Repraesentationen()->begin(); si != Repraesentationen()->end(); ++si) { + SonderfertigkeitDefinition sfdef; + sfdef.Stufe(0); + sfdef.AP(0); // TODO Konstante + sfdef.GP(0); // TODO Konstante + std::string s = _t("Repräsentation") + " (" + *si + ")"; + sfdef.ID(s); + Voraussetzung vor; + vor.ID(_t("Magiebegabt")); + sfdef.voraussetzungen_.FuegeEin(vor); + vor.ID(_t("Viertelzauberer")); + vor.Kein(true); + sfdef.voraussetzungen_.FuegeEin(vor); + generierteSonderfertigkeiten()->FuegeEin(sfdef); + } } //@nonl *************** *** 426,490 **** int punkte = kosten; ! //@ @+others ! //@+node:Manöver ohne Stil teurer ! if (Definition()->WaffenloseSonderfertigkeit()) { ! bool hatStil = false; ! StringListe stile = Definition()->Extras(); ! for (StringListe::iterator sli = stile.begin(); sli != stile.end(); ++sli) ! if (p.sonderfertigkeiten_.Existiert(*sli)) ! hatStil = true; ! if (!hatStil) punkte *= 5; ! } ! //@-node:Manöver ohne Stil teurer ! //@+node:die zweite Geländekunde gibt es für 2/3 des Preises! ! bool zweiteGelaendekunde = false; ! if (Definition()->Gelaendekunde()) ! for (Sonderfertigkeiten::const_iterator i = p.sonderfertigkeiten_.begin(); i != p.sonderfertigkeiten_.end(); ++i) ! if (i->second.Definition()->Gelaendekunde()) ! if (i->first != ID()) ! zweiteGelaendekunde = true; ! if (zweiteGelaendekunde) ! punkte = ((2*punkte)+1)/3; ! //@nonl ! //@-node:die zweite Geländekunde gibt es für 2/3 des Preises! ! //@+node:verbilligte SF ! for (int j = 0; j != p.verbilligteSonderfertigkeiten_.size(); ++j) ! if (p.verbilligteSonderfertigkeiten_[j]==ID()) ! punkte = (punkte+1)/2; ! //@nonl ! //@-node:verbilligte SF ! //@+node:Schlangenmensch-Bonus: Ausweichen SF kosten nur die Hälfte ! if (Definition()->NurID()==_t("Ausweichen")) ! if (p.charakteristika_.Existiert(_t("Schlangenmensch"))) ! punkte = (punkte+1)/2; ! //@nonl ! //@-node:Schlangenmensch-Bonus: Ausweichen SF kosten nur die Hälfte ! //@+node:Beidhändig-Boni ! if (p.charakteristika_.Existiert(_t("Beidhändig"))) { ! if ((Definition()->NurID()==_t("Beidhändiger Kampf")) ! ||(Definition()->NurID()==_t("Linkhand"))) ! punkte = (punkte+1)/2; ! if ((Definition()->NurID()==_t("Schildkampf")) ! ||(Definition()->NurID()==_t("Parierwaffen")) ! ||(Definition()->NurID()==_t("Tod von Links")) ! ||(Definition()->NurID()==_t("Doppelangriff"))) ! punkte = ((3*punkte)+2)/4; ! } ! //@nonl ! //@-node:Beidhändig-Boni ! //@+node:Linkshänder-Boni ! if (p.charakteristika_.Existiert(_t("Linkshänder"))) ! if ((Definition()->NurID()==_t("Beidhändiger Kampf")) ! ||(Definition()->NurID()==_t("Linkhand"))) ! punkte = ((3*punkte)+2)/4; ! //@nonl ! //@-node:Linkshänder-Boni ! //@+node:Zaubertänze anderer Repräsentationen kosten das Anderthalbfache ! if (Definition()->Zaubertanz()) ! if (!p.charakteristika_.Existiert(Definition()->Extra())) ! punkte = ((3*punkte)+1)/2; ! //@nonl ! //@-node:Zaubertänze anderer Repräsentationen kosten das Anderthalbfache ! //@-others return punkte; --- 494,558 ---- int punkte = kosten; ! //@ @+others ! //@+node:Manöver ohne Stil teurer ! if (Definition()->WaffenloseSonderfertigkeit()) { ! bool hatStil = false; ! StringListe stile = Definition()->Extras(); ! for (StringListe::iterator sli = stile.begin(); sli != stile.end(); ++sli) ! if (p.sonderfertigkeiten_.Existiert(*sli)) ! hatStil = true; ! if (!hatStil) punkte *= 5; ! } ! //@-node:Manöver ohne Stil teurer ! //@+node:die zweite Geländekunde gibt es für 2/3 des Preises! ! bool zweiteGelaendekunde = false; ! if (Definition()->Gelaendekunde()) ! for (Sonderfertigkeiten::const_iterator i = p.sonderfertigkeiten_.begin(); i != p.sonderfertigkeiten_.end(); ++i) ! if (i->second.Definition()->Gelaendekunde()) ! if (i->first != ID()) ! zweiteGelaendekunde = true; ! if (zweiteGelaendekunde) ! punkte = ((2*punkte)+1)/3; ! //@nonl ! //@-node:die zweite Geländekunde gibt es für 2/3 des Preises! ! //@+node:Schlangenmensch-Bonus: Ausweichen SF kosten nur die Hälfte ! if (Definition()->NurID()==_t("Ausweichen")) ! if (p.charakteristika_.Existiert(_t("Schlangenmensch"))) ! punkte = (punkte+1)/2; ! //@nonl ! //@-node:Schlangenmensch-Bonus: Ausweichen SF kosten nur die Hälfte ! //@+node:Beidhändig-Boni ! if (p.charakteristika_.Existiert(_t("Beidhändig"))) { ! if ((Definition()->NurID()==_t("Beidhändiger Kampf")) ! ||(Definition()->NurID()==_t("Linkhand"))) ! punkte = (punkte+1)/2; ! if ((Definition()->NurID()==_t("Schildkampf")) ! ||(Definition()->NurID()==_t("Parierwaffen")) ! ||(Definition()->NurID()==_t("Tod von Links")) ! ||(Definition()->NurID()==_t("Doppelangriff"))) ! punkte = ((3*punkte)+2)/4; ! } ! //@nonl ! //@-node:Beidhändig-Boni ! //@+node:Linkshänder-Boni ! if (p.charakteristika_.Existiert(_t("Linkshänder"))) ! if ((Definition()->NurID()==_t("Beidhändiger Kampf")) ! ||(Definition()->NurID()==_t("Linkhand"))) ! punkte = ((3*punkte)+2)/4; ! //@nonl ! //@-node:Linkshänder-Boni ! //@+node:Zaubertänze anderer Repräsentationen kosten das Anderthalbfache ! if (Definition()->Zaubertanz()) ! if (!p.charakteristika_.Existiert(Definition()->Extra())) ! punkte = ((3*punkte)+1)/2; ! //@nonl ! //@-node:Zaubertänze anderer Repräsentationen kosten das Anderthalbfache ! //@+node:verbilligte SF ! for (int j = 0; j != p.verbilligteSonderfertigkeiten_.size(); ++j) ! if (p.verbilligteSonderfertigkeiten_[j]==ID()) ! punkte = (punkte+1)/2; ! //@nonl ! //@-node:verbilligte SF ! //@-others return punkte; *************** *** 496,499 **** --- 564,571 ---- //@+node:<< GPKosten >> int Sonderfertigkeit::GPKosten(const Person& p) const { + + if (Definition()->Repraesentation()) + return Kosten(DynamischeKosten(p), p); + return Kosten(Definition()->GP(), p); } // GPKosten *************** *** 504,507 **** --- 576,583 ---- //@+node:<< APKosten >> int Sonderfertigkeit::APKosten(const Person& p) const { + + if (Definition()->Repraesentation()) + return Kosten(DynamischeKosten(p)*50, p); + return Kosten(Definition()->AP(), p); } // APKosten *************** *** 509,512 **** --- 585,618 ---- //@-node:<< APKosten >> //@nl + //@<< Dynamische Kosten >> + //@+node:<< DynamischeKosten >> + int Sonderfertigkeit::DynamischeKosten(const Person& p) const { + + if (Definition()->Repraesentation()) { + int repnummer = 0; + for (Sonderfertigkeiten::const_iterator i = p.sonderfertigkeiten_.begin(); i != p.sonderfertigkeiten_.end(); ++i) + if (i->second.Definition()->Repraesentation()) { + ++repnummer; + if (i->first == ID()) break; + } + + if (repnummer == 1) + return 0; // TODO Konstante, hier wie auch im weiteren + // Erste Rep gibts umsonst + if (repnummer == 2) + if (p.charakteristika_.Existiert(_t("Vollzauberer"))) + return 40; // Zweite Rep, entspricht 2000 AP + else + return 60; // Zweite Rep für Halbzauberer, entspricht 3000 AP + if (repnummer == 3) + return 80; // Dritte Rep, entspricht 4000 AP + } + + return 0; + } + //@nonl + //@-node:<< DynamischeKosten >> + //@afterref + // private //@<< Definition >> *************** *** 632,635 **** --- 738,744 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.20 2004/04/10 22:38:02 vrandezo + // SF Repraesentation + // // Revision 1.19 2004/01/07 23:07:06 vrandezo // RKP können jetzt [eine Geländekunde] haben Index: Sonderfertigkeit.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Sonderfertigkeit.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Sonderfertigkeit.h 7 Jan 2004 23:07:06 -0000 1.16 --- Sonderfertigkeit.h 10 Apr 2004 22:38:02 -0000 1.17 *************** *** 69,72 **** --- 69,75 ---- bool Gelaendekunde() const; + bool Repraesentation() const; + bool Ritualkenntnis() const; + void WaffenloserKampfstil(bool w) { waffenloserkampfstil_ = w; } bool WaffenloserKampfstil() const { return waffenloserkampfstil_; } *************** *** 205,208 **** --- 208,212 ---- private: int Kosten(const int kosten, const Person& p) const; + int DynamischeKosten(const Person& p) const; bool eigeneRK(const Person& p) const; std::string id_; *************** *** 234,237 **** --- 238,244 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.17 2004/04/10 22:38:02 vrandezo + // SF Repraesentation + // // Revision 1.16 2004/01/07 23:07:06 vrandezo // RKP können jetzt [eine Geländekunde] haben |
From: Denny V. <vra...@us...> - 2004-04-10 22:51:06
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3914 Modified Files: Zauber.cpp Log Message: Repraesentation erhoeht ZfW-Maximalwert Index: Zauber.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Zauber.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Zauber.cpp 10 Apr 2004 20:16:54 -0000 1.10 --- Zauber.cpp 10 Apr 2004 22:37:33 -0000 1.11 *************** *** 395,399 **** int Zauberfertigkeit::Maximalwert() const { if (person_ == 0) return 0; ! return min(person_->Wert(Definition()->Eigenschaft(0)), person_->Wert(Definition()->Eigenschaft(1)), --- 395,406 ---- int Zauberfertigkeit::Maximalwert() const { if (person_ == 0) return 0; ! ! for (Sonderfertigkeiten::const_iterator sf = person_->sonderfertigkeiten_.begin(); sf != person_->sonderfertigkeiten_.end(); ++sf) ! if (sf->second.Definition()->Repraesentation()) ! if (strings::InKlammern(sf->first) == Repraesentation()) ! return max(person_->Wert(Definition()->Eigenschaft(0)), ! person_->Wert(Definition()->Eigenschaft(1)), ! person_->Wert(Definition()->Eigenschaft(2))) + 3; // TODO Konstante ! return min(person_->Wert(Definition()->Eigenschaft(0)), person_->Wert(Definition()->Eigenschaft(1)), *************** *** 531,534 **** --- 538,544 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.11 2004/04/10 22:37:33 vrandezo + // Repraesentation erhoeht ZfW-Maximalwert + // // Revision 1.10 2004/04/10 20:16:54 vrandezo // Maximaler ZfW |
From: Denny V. <vra...@us...> - 2004-04-10 22:50:36
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3828 Modified Files: NDSAUtil.cpp NDSAUtil.h Log Message: InKlammern-Hilfsfunktion Index: NDSAUtil.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/NDSAUtil.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** NDSAUtil.cpp 6 Apr 2004 13:57:58 -0000 1.10 --- NDSAUtil.cpp 10 Apr 2004 22:37:04 -0000 1.11 *************** *** 77,84 **** } int runden(float kommazahl) { return (int) (kommazahl+.500001f); } ! //@-node:OhneAnfang //@+node:Max und Min int max(int a, int b) { --- 77,96 ---- } + //@-node:OhneAnfang + //@+node:InKlammern + std::string strings::InKlammern(const std::string& ausdruck) { + if ((ausdruck.find("(")<ausdruck.size())&&(ausdruck.find(")")<ausdruck.size())) + return ausdruck.substr(ausdruck.find_last_of("(")+1, ausdruck.find_last_of(")")-(ausdruck.find_last_of("(")+1)); + Log::Error("Kein geklammerter Ausruck: " + ausdruck); + return ""; + } + //@nonl + //@-node:InKlammern + //@+node:Runden int runden(float kommazahl) { return (int) (kommazahl+.500001f); } ! //@nonl ! //@-node:Runden //@+node:Max und Min int max(int a, int b) { *************** *** 110,113 **** --- 122,128 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.11 2004/04/10 22:37:04 vrandezo + // InKlammern-Hilfsfunktion + // // Revision 1.10 2004/04/06 13:57:58 vrandezo // Begabung und Unfaehigkeit von Talenten und Talentgruppen jetzt Index: NDSAUtil.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/NDSAUtil.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** NDSAUtil.h 11 Jan 2004 20:22:52 -0000 1.8 --- NDSAUtil.h 10 Apr 2004 22:37:04 -0000 1.9 *************** *** 42,45 **** --- 42,46 ---- bool BeginntMit(const std::string& was, const std::string& womit); std::string OhneAnfang(const std::string& was, const std::string& anfang); + std::string InKlammern(const std::string& ausdruck); }; *************** *** 55,58 **** --- 56,62 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.9 2004/04/10 22:37:04 vrandezo + // InKlammern-Hilfsfunktion + // // Revision 1.8 2004/01/11 20:22:52 twel // mathematische Hilfsfunktionen (diesmal hoffentlich richtig) |
From: Denny V. <vra...@us...> - 2004-04-10 20:53:52
|
Update of /cvsroot/darkeyetool/det/project/msvc7 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16078 Modified Files: det.vcproj Log Message: Neue Datei PersonGUIZauberwx Index: det.vcproj =================================================================== RCS file: /cvsroot/darkeyetool/det/project/msvc7/det.vcproj,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** det.vcproj 9 Apr 2004 22:24:40 -0000 1.4 --- det.vcproj 10 Apr 2004 20:40:19 -0000 1.5 *************** *** 17,31 **** ConfigurationType="1" UseOfMFC="0" ! ATLMinimizesCRunTimeLibraryUsage="FALSE"> <Tool Name="VCCLCompilerTool" AdditionalOptions="/Zm200 " Optimization="2" InlineFunctionExpansion="2" AdditionalIncludeDirectories="D:\Programme\wx\wxWindows-2.4.2\include,D:\Programme\wx\wxWindows-2.4.2\contrib\include,D:\Programme\wx\wxWindows-2.4.2\lib\msw,D:\Programme\xerces\xerces-c-src_2_5_0\src\,..\..\src" PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;__WINDOWS__;__WXMSW__;__WIN95__;__WIN32__;WINVER=0x0400;STRICT;MSVC" StringPooling="TRUE" RuntimeLibrary="2" ! EnableFunctionLevelLinking="TRUE" ForceConformanceInForLoopScope="TRUE" PrecompiledHeaderFile=".\Release/det.pch" --- 17,39 ---- ConfigurationType="1" UseOfMFC="0" ! ATLMinimizesCRunTimeLibraryUsage="FALSE" ! WholeProgramOptimization="TRUE"> <Tool Name="VCCLCompilerTool" AdditionalOptions="/Zm200 " Optimization="2" + GlobalOptimizations="TRUE" InlineFunctionExpansion="2" + EnableIntrinsicFunctions="TRUE" + FavorSizeOrSpeed="1" + OptimizeForProcessor="2" + OptimizeForWindowsApplication="TRUE" AdditionalIncludeDirectories="D:\Programme\wx\wxWindows-2.4.2\include,D:\Programme\wx\wxWindows-2.4.2\contrib\include,D:\Programme\wx\wxWindows-2.4.2\lib\msw,D:\Programme\xerces\xerces-c-src_2_5_0\src\,..\..\src" PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;__WINDOWS__;__WXMSW__;__WIN95__;__WIN32__;WINVER=0x0400;STRICT;MSVC" StringPooling="TRUE" RuntimeLibrary="2" ! BufferSecurityCheck="FALSE" ! EnableFunctionLevelLinking="FALSE" ! DisableLanguageExtensions="FALSE" ForceConformanceInForLoopScope="TRUE" PrecompiledHeaderFile=".\Release/det.pch" *************** *** 33,37 **** ObjectFile=".\Release/" ProgramDataBaseFileName=".\Release/" ! WarningLevel="3" SuppressStartupBanner="TRUE" CompileAs="0" --- 41,45 ---- ObjectFile=".\Release/" ProgramDataBaseFileName=".\Release/" ! WarningLevel="0" SuppressStartupBanner="TRUE" CompileAs="0" *************** *** 47,51 **** OutputFile="..\..\det.exe" Version="1.31" ! LinkIncremental="2" SuppressStartupBanner="TRUE" AdditionalLibraryDirectories="D:\Programme\wx\wxWindows-2.4.2\lib,D:\Programme\wx\wxWindows-2.4.2\contrib\lib,D:\Programme\xerces\xerces-c-src_2_5_0\Build\Win32\VC7\Release" --- 55,59 ---- OutputFile="..\..\det.exe" Version="1.31" ! LinkIncremental="1" SuppressStartupBanner="TRUE" AdditionalLibraryDirectories="D:\Programme\wx\wxWindows-2.4.2\lib,D:\Programme\wx\wxWindows-2.4.2\contrib\lib,D:\Programme\xerces\xerces-c-src_2_5_0\Build\Win32\VC7\Release" *************** *** 53,56 **** --- 61,66 ---- ProgramDatabaseFile=".\Release/det.pdb" SubSystem="2" + OptimizeReferences="2" + EnableCOMDATFolding="2" TargetMachine="1"/> <Tool *************** *** 97,102 **** --- 107,117 ---- AdditionalIncludeDirectories="D:\Programme\wx\wxWindows-2.4.2\include,D:\Programme\wx\wxWindows-2.4.2\contrib\include,D:\Programme\wx\wxWindows-2.4.2\lib\msw,D:\Programme\xerces\xerces-c-src_2_5_0\src,..\..\src" PreprocessorDefinitions="MSVC;WIN32;_DEBUG;_WINDOWS;__WINDOWS__;__WXMSW__;DEBUG=1;__WXDEBUG__;__WIN95__;__WIN32__;WINVER=0x0400;STRICT" + BasicRuntimeChecks="3" + SmallerTypeCheck="FALSE" RuntimeLibrary="3" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" ForceConformanceInForLoopScope="TRUE" + UsePrecompiledHeader="2" PrecompiledHeaderFile=".\Debug/det.pch" AssemblerListingLocation=".\Debug/" *************** *** 106,112 **** WarningLevel="3" SuppressStartupBanner="TRUE" DebugInformationFormat="4" CompileAs="0" ! DisableSpecificWarnings="4018;4786;4503;4244"/> <Tool Name="VCCustomBuildTool" --- 121,128 ---- WarningLevel="3" SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="TRUE" DebugInformationFormat="4" CompileAs="0" ! DisableSpecificWarnings="4018;4786;4503;4244;4267"/> <Tool Name="VCCustomBuildTool" *************** *** 945,948 **** --- 961,967 ---- </File> <File + RelativePath="..\..\src\gui\PersonGUIZauberwx.cpp"> + </File> + <File RelativePath="..\..\src\dsa\PersonHandler.cpp"> <FileConfiguration *************** *** 1500,1503 **** --- 1519,1525 ---- </File> <File + RelativePath="..\..\src\gui\PersonGUIZauberwx.h"> + </File> + <File RelativePath="..\..\src\dsa\PersonHandler.h"> </File> |
From: Denny V. <vra...@us...> - 2004-04-10 20:36:13
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13213 Modified Files: PersonHandlerGenerator.cpp PersonHandlerGenerator.h Log Message: Schlechte Eigenschaften bei Re-Gen korrigiert Stufige VNT von RKP werden korrekt eingebunden Index: PersonHandlerGenerator.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonHandlerGenerator.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** PersonHandlerGenerator.h 9 Apr 2004 22:25:50 -0000 1.17 --- PersonHandlerGenerator.h 10 Apr 2004 20:22:41 -0000 1.18 *************** *** 198,204 **** // gibt zurück, wieviel GP die Charakteristika beitragen ! int BerechneCharFinal(const bool nurNachteileGP = false); // dito, für die SF ! int BerechneSFFinal(const bool regen = false); int AktivierungsKosten(const std::string& talent); --- 198,204 ---- // gibt zurück, wieviel GP die Charakteristika beitragen ! int BerechneCharFinal(const bool nurNachteileGP = false, const bool reGen = false); // dito, für die SF ! int BerechneSFFinal(const bool reGen = false); int AktivierungsKosten(const std::string& talent); *************** *** 222,225 **** --- 222,229 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.18 2004/04/10 20:22:41 vrandezo + // Schlechte Eigenschaften bei Re-Gen korrigiert + // Stufige VNT von RKP werden korrekt eingebunden + // // Revision 1.17 2004/04/09 22:25:50 vrandezo // Zauberfertigkeiten fuer Personen eintragbar Index: PersonHandlerGenerator.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonHandlerGenerator.cpp,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** PersonHandlerGenerator.cpp 10 Apr 2004 01:26:08 -0000 1.44 --- PersonHandlerGenerator.cpp 10 Apr 2004 20:22:41 -0000 1.45 *************** *** 85,103 **** void PersonHandlerGenerator::P(std::auto_ptr<Person> person) { person_ = person; ! // Berechne chareigen_ und sfeigen_ ! chareigen_ = person_->charakteristika_; sfeigen_ = person_->sonderfertigkeiten_; Rasse_(person_->Rasse_(), true); Kultur_(person_->Kultur_(), true); Profession_(person_->Profession_(), true); ID(AutoID(P()->Name())); autoID = true; ! for (Charakteristika::iterator ch = chareigen_.begin(); ch != chareigen_.end(); ++ch) ! if (ch->second.SchlechteEigenschaft()) ! if (charbasis_.Existiert(ch->first)) ! ch->second.Stufe(ch->second.Stufe()-charbasis_.Zeige(ch->first)->Stufe()); BerechneSFFinal(true); --- 85,109 ---- void PersonHandlerGenerator::P(std::auto_ptr<Person> person) { person_ = person; ! ! // Was ist mit sfeigen_? sfeigen_ = person_->sonderfertigkeiten_; + // Hier werden char nicht angefasst! Rasse_(person_->Rasse_(), true); Kultur_(person_->Kultur_(), true); Profession_(person_->Profession_(), true); + // Berechne chareigen_ + chareigen_.clear(); + charfinal_ = P()->charakteristika_; + BerechneCharFinal(false, true); + ID(AutoID(P()->Name())); autoID = true; ! // for (Charakteristika::iterator ch = chareigen_.begin(); ch != chareigen_.end(); ++ch) ! // if (ch->second.SchlechteEigenschaft()) ! // if (charbasis_.Existiert(ch->first)) ! // ch->second.Stufe(ch->second.Stufe()-charbasis_.Zeige(ch->first)->Stufe()); BerechneSFFinal(true); *************** *** 109,112 **** --- 115,119 ---- } + //@-node:<< P() >> //@nl *************** *** 419,423 **** (Alter() > (rasse.alterBasis_+rasse.alterW6_*6+rasse.alterW3_*3))) PersonHandler::Alter(rasse.Alter()); ! BerechneCharFinal(); // BerechneSFFinal(); } // Rasse_ --- 426,430 ---- (Alter() > (rasse.alterBasis_+rasse.alterW6_*6+rasse.alterW3_*3))) PersonHandler::Alter(rasse.Alter()); ! if (!reGen) BerechneCharFinal(); // BerechneSFFinal(); } // Rasse_ *************** *** 514,518 **** Setze(P()->Kultur_().voraussetzungen_, _t("Kultur")); ! BerechneCharFinal(); // BerechneSFFinal(); } // Kultur_ --- 521,525 ---- Setze(P()->Kultur_().voraussetzungen_, _t("Kultur")); ! if (!reGen) BerechneCharFinal(); // BerechneSFFinal(); } // Kultur_ *************** *** 540,544 **** Setze(P()->Profession_().modifikatoren_, _t("Profession")); Setze(P()->Profession_().voraussetzungen_, _t("Profession")); ! BerechneCharFinal(); // BerechneSFFinal(); } // Profession_ --- 547,551 ---- Setze(P()->Profession_().modifikatoren_, _t("Profession")); Setze(P()->Profession_().voraussetzungen_, _t("Profession")); ! if (!reGen) BerechneCharFinal(); // BerechneSFFinal(); } // Profession_ *************** *** 1754,1758 **** //@<< BerechneCharFinal >> //@+node:<< BerechneCharFinal >> ! int PersonHandlerGenerator::BerechneCharFinal(const bool nurNachteile) { int gp = 0; --- 1761,1765 ---- //@<< BerechneCharFinal >> //@+node:<< BerechneCharFinal >> ! int PersonHandlerGenerator::BerechneCharFinal(const bool nurNachteile, const bool reGen) { int gp = 0; *************** *** 1764,1768 **** int c = 0; ! for (c = 0; c != P()->Rasse_().charakteristika_.size(); ++c) { chartemp.FuegeEin(P()->Rasse_().charakteristika_.Hole(c)); } --- 1771,1775 ---- int c = 0; ! for (c = 0; c < P()->Rasse_().charakteristika_.size(); ++c) { chartemp.FuegeEin(P()->Rasse_().charakteristika_.Hole(c)); } *************** *** 1788,1793 **** } else if (chd->SchlechteEigenschaft()) { chartemp.Zeige(ch.ID())->Stufe(chartemp.Zeige(ch.ID())->Stufe()+ch.Stufe()); } else ! gp -= Hinzu(_t("Doppelter Vor-/Nachteil") + ": " + chd->ID(), (chd->GP()+1)/3); } else { if (chd->IstBasis()) { --- 1795,1818 ---- } else if (chd->SchlechteEigenschaft()) { chartemp.Zeige(ch.ID())->Stufe(chartemp.Zeige(ch.ID())->Stufe()+ch.Stufe()); + } else if (chd->HatStufen()) { + int neueStufe = chartemp.Zeige(ch.ID())->Stufe() + ch.Stufe(); + //@+at + // if (neueStufe>chd->MaximalStufe()) { + // int diff = neueStufe - + // chd->MaximalStufe(); + // neueStufe = chd->MaximalStufe(); + // gp += Hinzu(_t("Doppelter Vor-/Nachteil") + // + ": " + chd->ID(), -((chd->GP()*diff)+1)/3); + // } + // + // Dieser Codeschnipsel wäre erforderlich, wenn die + // Stufenaddition eines VNT nicht den Maximalwert + // überschreiten dürfte. Laut AZ 11 ist das jedoch + // ausdrücklich erlaubt. + //@-at + //@@c + chartemp.Zeige(ch.ID())->Stufe(neueStufe); } else ! gp += Hinzu(_t("Doppelter Vor-/Nachteil") + ": " + chd->ID(), -(chd->GP()+1)/3); } else { if (chd->IstBasis()) { *************** *** 1819,1831 **** //@nl ! // Behandle jetzt jedes einzelne, hinzugefügt Char (aus chareigen_) ! Charakteristika chartemp2; ! Charakteristika charrest = chareigen_; ! while (charrest != chartemp2) { ! charrest = chartemp2; ! for (c = 0; c != chareigen_.size(); ++c) { ! Charakteristikum* chp = chareigen_.Zeige(c); ! ! //@ << if Niedrige Magieresistenz >> //@+node:<< if Niedrige Magieresistenz >> if (chp->ID() == _t("Niedrige Magieresistenz")) // MR darf nicht durch Niedrige MR unter 0 fallen, AH 114 --- 1844,1886 ---- //@nl ! if (reGen) { ! //@ << Berechne chareigen_ >> ! //@+node:<< Berechne chareigen_ >> ! // gesucht: chareigen = charfinal - charbasis ! chareigen_ = charfinal_; ! ! for (Charakteristika::const_iterator abzieh = charbasis_.begin(); abzieh != charbasis_.end(); ++abzieh) { ! ! if (charfinal_.Existiert(abzieh->first)) ! if ((abzieh->second.HatStufen()) || (abzieh->second.SchlechteEigenschaft())) { ! int eigenwert = charfinal_.Zeige(abzieh->first)->Stufe(); ! int basiswert = abzieh->second.Stufe(); ! if (eigenwert > basiswert) ! chareigen_.Zeige(abzieh->first)->Stufe(eigenwert - basiswert); ! else ! chareigen_.Loesche(abzieh->first); ! } else ! chareigen_.Loesche(abzieh->first); ! ! } ! ! ! ! //@nonl ! //@-node:<< Berechne chareigen_ >> ! //@nl ! } ! ! //@ << Ueberpruefe chareigen_ >> ! //@+node:<< Ueberpruefe chareigen_ >> ! // Behandle jetzt jedes einzelne, hinzugefügt Char (aus chareigen_) ! Charakteristika chartemp2; ! Charakteristika charrest = chareigen_; ! while (charrest != chartemp2) { ! charrest = chartemp2; ! for (c = 0; c != chareigen_.size(); ++c) { ! Charakteristikum* chp = chareigen_.Zeige(c); ! ! //@ << if Niedrige Magieresistenz >> //@+node:<< if Niedrige Magieresistenz >> if (chp->ID() == _t("Niedrige Magieresistenz")) // MR darf nicht durch Niedrige MR unter 0 fallen, AH 114 *************** *** 1838,1842 **** //@-node:<< if Niedrige Magieresistenz >> //@nl ! //@ << if Schlechte Eigenschaft >> //@+node:<< if Schlechte Eigenschaft >> if (chp->SchlechteEigenschaft()) { --- 1893,1897 ---- //@-node:<< if Niedrige Magieresistenz >> //@nl ! //@ << if Schlechte Eigenschaft >> //@+node:<< if Schlechte Eigenschaft >> if (chp->SchlechteEigenschaft()) { *************** *** 1861,1876 **** //@-node:<< if Schlechte Eigenschaft >> //@nl ! ! if (chp->Definition()->Hinzufuegbar(*P())) { ! chartemp2.FuegeEin(chareigen_.Hole(c)); ! P()->charakteristika_.FuegeEin(chareigen_.Hole(c)); // ? nicht sicher ! } ! } ! } ! chareigen_ = chartemp2; for (c = 0; c != chareigen_.size(); ++c) { Charakteristikum ch = chareigen_.Hole(c); const CharakteristikumDefinition* chd = ch.Definition(); if ((chd->HatBasis())&&(chartemp.Existiert(chd->BasiertAuf()))) { if (!((ch.Vorteil())&&(nurNachteile))) --- 1916,1954 ---- //@-node:<< if Schlechte Eigenschaft >> //@nl ! //@ << if Stufig >> ! //@+node:<< if Stufig >> ! if (chp->HatStufen()) { ! if (charbasis_.Existiert(chp->ID())) { ! int basis = charbasis_.Hole(chp->ID()).Stufe(); ! int max = chp->Definition()->MaximalStufe(); ! int diff = (basis + chp->Stufe()) - max; ! if (diff>0) ! if (basis>max) ! continue; ! else ! chp->Stufe(max-basis); ! if (chp->Stufe()!=0) ! chartemp2.FuegeEin(chareigen_.Hole(c)); ! } ! } ! //@nonl ! //@-node:<< if Stufig >> ! //@nl ! ! if (chp->Definition()->Hinzufuegbar(*P())) { ! chartemp2.FuegeEin(chareigen_.Hole(c)); ! P()->charakteristika_.FuegeEin(chareigen_.Hole(c)); // ? nicht sicher ! } ! } ! } ! chareigen_ = chartemp2; ! //@nonl ! //@-node:<< Ueberpruefe chareigen_ >> ! //@nl for (c = 0; c != chareigen_.size(); ++c) { Charakteristikum ch = chareigen_.Hole(c); const CharakteristikumDefinition* chd = ch.Definition(); + if ((chd->HatBasis())&&(chartemp.Existiert(chd->BasiertAuf()))) { if (!((ch.Vorteil())&&(nurNachteile))) *************** *** 1879,1882 **** --- 1957,1961 ---- chartemp.Loesche(chd->BasiertAuf()); } + if ((ch.SchlechteEigenschaft())&&(charbasis_.Existiert(ch.ID()))) { chartemp.Zeige(ch.ID())-> *************** *** 1886,1889 **** --- 1965,1976 ---- continue; } + + if ((ch.HatStufen())&&(charbasis_.Existiert(ch.ID()))) { + chartemp.Zeige(ch.ID())-> + Stufe(chartemp.Zeige(ch.ID())->Stufe()+ch.Stufe()); + if (!((ch.Vorteil())&&(nurNachteile))) + gp += Hinzu(ch.Text(), ch.GPKosten(*P())); + continue; + } if (!((ch.Vorteil())&&(nurNachteile))) *************** *** 2078,2082 **** return gp; } // BerechneCharFinal - //@nonl //@-node:<< BerechneCharFinal >> //@nl --- 2165,2168 ---- *************** *** 2485,2488 **** --- 2571,2578 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.45 2004/04/10 20:22:41 vrandezo + // Schlechte Eigenschaften bei Re-Gen korrigiert + // Stufige VNT von RKP werden korrekt eingebunden + // // Revision 1.44 2004/04/10 01:26:08 vrandezo // Helden erhalten ZF von RKP |
From: Denny V. <vra...@us...> - 2004-04-10 20:34:57
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13077 Modified Files: Charakteristikum.cpp Log Message: Astrale Regeneration fuer Viertelzauberer Index: Charakteristikum.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Charakteristikum.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** Charakteristikum.cpp 6 Apr 2004 13:57:58 -0000 1.20 --- Charakteristikum.cpp 10 Apr 2004 20:21:25 -0000 1.21 *************** *** 592,601 **** if ((p.Rasse_().ID()==_t("Thorwaler")) ||(rassen()->Hole(p.Rasse_().ID()).VarianteVon()==_t("Thorwaler"))) ! kosten -= 3; // Herausragende Eigenschaft std::string temp = _t("Herausragende Eigenschaft"); if (ID().substr(0, temp.size())==temp) { ! int s = 2; // TODO Konstante, Steigerung der Kosten pro Stufe return kosten*Stufe() + (Stufe()-1)*Stufe()*s/2; } --- 592,601 ---- if ((p.Rasse_().ID()==_t("Thorwaler")) ||(rassen()->Hole(p.Rasse_().ID()).VarianteVon()==_t("Thorwaler"))) ! kosten -= 3; // TODO Konstante // Herausragende Eigenschaft std::string temp = _t("Herausragende Eigenschaft"); if (ID().substr(0, temp.size())==temp) { ! int s = 2; // TODO Konstante return kosten*Stufe() + (Stufe()-1)*Stufe()*s/2; } *************** *** 604,608 **** if (ID()==_t("Astralmacht")) if (p.charakteristika_.Existiert(_t("Viertelzauberer"))) ! kosten = 3; if (Stufe()==0) --- 604,613 ---- if (ID()==_t("Astralmacht")) if (p.charakteristika_.Existiert(_t("Viertelzauberer"))) ! kosten = 3; // TODO Konstante ! ! // Astrale Regeneration für Viertelzauberer ! if (ID()==_t("Astrale Regeneration")) ! if (p.charakteristika_.Existiert(_t("Viertelzauberer"))) ! kosten = 7; // TODO Konstante if (Stufe()==0) *************** *** 737,740 **** --- 742,748 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.21 2004/04/10 20:21:25 vrandezo + // Astrale Regeneration fuer Viertelzauberer + // // Revision 1.20 2004/04/06 13:57:58 vrandezo // Begabung und Unfaehigkeit von Talenten und Talentgruppen jetzt |
From: Denny V. <vra...@us...> - 2004-04-10 20:34:17
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12966 Modified Files: Voraussetzung.cpp Log Message: maxwert wurde in MSVC nicht vorinitialisiert Index: Voraussetzung.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Voraussetzung.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Voraussetzung.cpp 29 Jan 2004 09:06:20 -0000 1.16 --- Voraussetzung.cpp 10 Apr 2004 20:20:46 -0000 1.17 *************** *** 142,146 **** std::string geleseneID = id; int rv = pm->OeffneZumLesen(_t("Voraussetzung"), geleseneID); ! int maxwert, minwert = 0; bool max = pm->Existiert(_t("Wert"), _t("maximal")); bool min = pm->Existiert(_t("Wert"), _t("minimal")); --- 142,147 ---- std::string geleseneID = id; int rv = pm->OeffneZumLesen(_t("Voraussetzung"), geleseneID); ! int maxwert = 0; ! int minwert = 0; bool max = pm->Existiert(_t("Wert"), _t("maximal")); bool min = pm->Existiert(_t("Wert"), _t("minimal")); *************** *** 269,272 **** --- 270,276 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.17 2004/04/10 20:20:46 vrandezo + // maxwert wurde in MSVC nicht vorinitialisiert + // // Revision 1.16 2004/01/29 09:06:20 dertron // doppelte CVS Log-Tags entfernt |
From: Denny V. <vra...@us...> - 2004-04-10 20:30:25
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12422 Modified Files: Zauber.cpp Log Message: Maximaler ZfW Index: Zauber.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Zauber.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Zauber.cpp 10 Apr 2004 01:26:08 -0000 1.9 --- Zauber.cpp 10 Apr 2004 20:16:54 -0000 1.10 *************** *** 25,33 **** //@<< includes >> //@+node:<< includes >> - #include "Zauber.h" - #include "Texte.h" #include "Log.h" #include "NDSAUtil.h" //@-node:<< includes >> //@nl --- 25,35 ---- //@<< includes >> //@+node:<< includes >> #include "Texte.h" #include "Log.h" #include "NDSAUtil.h" + + #include "Person.h" + + #include "Zauber.h" //@-node:<< includes >> //@nl *************** *** 392,397 **** //@+node:<< Maximalwert >> int Zauberfertigkeit::Maximalwert() const { ! // TODO ! return 5; } //@nonl --- 394,402 ---- //@+node:<< Maximalwert >> int Zauberfertigkeit::Maximalwert() const { ! if (person_ == 0) return 0; ! ! return min(person_->Wert(Definition()->Eigenschaft(0)), ! person_->Wert(Definition()->Eigenschaft(1)), ! person_->Wert(Definition()->Eigenschaft(2))); } //@nonl *************** *** 526,529 **** --- 531,537 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.10 2004/04/10 20:16:54 vrandezo + // Maximaler ZfW + // // Revision 1.9 2004/04/10 01:26:08 vrandezo // Helden erhalten ZF von RKP |
From: Denny V. <vra...@us...> - 2004-04-10 20:29:32
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12213 Modified Files: PersonenKomponenteGUIwx.h Log Message: stufige VNT fuer RKP verfuegbar Index: PersonenKomponenteGUIwx.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonenKomponenteGUIwx.h,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** PersonenKomponenteGUIwx.h 10 Apr 2004 00:51:49 -0000 1.35 --- PersonenKomponenteGUIwx.h 10 Apr 2004 20:16:00 -0000 1.36 *************** *** 168,173 **** for (DSA::CharakteristikumDefinitionen::iterator c = DSA::charakteristika()->begin(); c != DSA::charakteristika()->end(); ++c) if (!objekt_->charakteristika_.Existiert(c->second.ID())) ! if (!c->second.HatStufen()) // TODO Stufige Charakteristika sind nicht dabei (der Einfachheit halber) ! // wenn man sie doch dazu nimmt, vergiss nicht berechnecharfinal im PersonHandlerGenerator zu aktualisieren moeglicheCharakteristika_->Append(c->second.ID().c_str()); // TODO generierte Charakteristika --- 168,172 ---- for (DSA::CharakteristikumDefinitionen::iterator c = DSA::charakteristika()->begin(); c != DSA::charakteristika()->end(); ++c) if (!objekt_->charakteristika_.Existiert(c->second.ID())) ! //if (!c->second.HatStufen()) // Stufige Charakteristika an/ausschalten moeglicheCharakteristika_->Append(c->second.ID().c_str()); // TODO generierte Charakteristika *************** *** 181,185 **** auswahl = i->ID(0); ! showplusminus = DSA::charakteristika()->Hole(auswahl).SchlechteEigenschaft(); } --- 180,184 ---- auswahl = i->ID(0); ! showplusminus = (DSA::charakteristika()->Hole(auswahl).SchlechteEigenschaft()||DSA::charakteristika()->Hole(auswahl).HatStufen()); } *************** *** 1912,1915 **** --- 1911,1915 ---- a.Kommentar(DSA::hole()->Text(s)); + if (chdef.HatStufen()) a.WertHinzu(1); if (chdef.SchlechteEigenschaft()) a.WertHinzu(5); // TODO Konstante *************** *** 1965,1970 **** auswahl = i->ID(0); ! bool showplusminus = DSA::charakteristika()->Hole(auswahl).SchlechteEigenschaft(); ! Log::Add(auswahl); FindWindow(CHARPLUS)->Show(showplusminus); FindWindow(CHARMINUS)->Show(showplusminus); --- 1965,1969 ---- auswahl = i->ID(0); ! bool showplusminus = (DSA::charakteristika()->Hole(auswahl).SchlechteEigenschaft()||DSA::charakteristika()->Hole(auswahl).HatStufen()); FindWindow(CHARPLUS)->Show(showplusminus); FindWindow(CHARMINUS)->Show(showplusminus); *************** *** 2301,2304 **** --- 2300,2306 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.36 2004/04/10 20:16:00 vrandezo + // stufige VNT fuer RKP verfuegbar + // // Revision 1.35 2004/04/10 00:51:49 vrandezo // RKP kriegen ZF |
From: Denny V. <vra...@us...> - 2004-04-10 16:22:17
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32176 Modified Files: PersonGUIwx.cpp Added Files: PersonGUIZauberwx.cpp PersonGUIZauberwx.h Log Message: schoenere GUI bei Zauberauswahl --- NEW FILE: PersonGUIZauberwx.h --- (This appears to be a binary file; contents omitted.) --- NEW FILE: PersonGUIZauberwx.cpp --- //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file PersonGUIZauberwx.cpp //@+at // PersonGUIZauberwx.cpp: Implementierung eines // Hilfsfensters zur Auswahl von Zaubern // // $Revision: 1.1 $ // $Date: 2004/04/10 16:08:46 $ //@-at //@@c //@<< header >> //@+node:<< header >> //@+at // The content of this file is subject to the license // given in license.txt // //@-at //@@c #ifdef MSVC #pragma warning(disable:4786 4503) #endif //@-node:<< header >> //@nl //@<< includes >> //@+node:<< includes >> #if defined(__WXGTK__) || defined(__WXMOTIF__) #include "dsa.xpm.h" #endif #include "wx/sizer.h" #include "wx/button.h" #include "wx/stattext.h" #include "wx/statbmp.h" #include "wx/combobox.h" #include "wx/listbox.h" #include "PersonGUIZauberwx.h" //@-node:<< includes >> //@nl //@<< filename >> //@+node:<< filename >> #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; //#define new DEBUG_NEW #endif //@-node:<< filename >> //@nl //@+others //@+node:Event Table BEGIN_EVENT_TABLE(PersonGUIZauberwx, wxDialog) EVT_BUTTON (BTOK, PersonGUIZauberwx::OnOK) EVT_BUTTON (BTABBRECHEN, PersonGUIZauberwx::OnAbbrechen) EVT_LISTBOX (LISTE, PersonGUIZauberwx::OnListe) EVT_LISTBOX_DCLICK(LISTE, PersonGUIZauberwx::OnOK) EVT_COMBOBOX (FILTER, PersonGUIZauberwx::OnUpdate) END_EVENT_TABLE() //@nonl //@-node:Event Table //@+node:ctor PersonGUIZauberwx::PersonGUIZauberwx(wxWindow* parent, const DSA::Zauberfertigkeiten& zauber, const std::string& bevorzugteRepraesentation) : wxDialog(parent, -1, _t("Wähle Zauber").c_str(), wxDefaultPosition, wxDefaultSize), zauber_(zauber) { this->SetBackgroundColour(parent->GetBackgroundColour()); // set the window icon SetIcon(wxICON(DSA)); wxBoxSizer* allSizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer* zeilenSizer = new wxBoxSizer(wxHORIZONTAL); zeilenSizer->Add(new wxStaticText(this, -1, _t("Repräsentation").c_str()), 4, wxEXPAND | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, 1); rep_ = new wxComboBox(this, FILTER, "", wxDefaultPosition, wxDefaultSize, 0, 0, wxCB_DROPDOWN | wxCB_READONLY); rep_->Append(_t("alle").c_str()); for (StringListe::const_iterator csli = DSA::Repraesentationen()->begin(); csli != DSA::Repraesentationen()->end(); ++csli) rep_->Append(DSA::RepraesentationKurz(*csli).c_str()); rep_->SetSelection(0); zeilenSizer->Add(rep_, 4, wxEXPAND | wxRIGHT, 3); zeilenSizer->Add(new wxStaticText(this, -1, _t("Verbreitung").c_str()), 4, wxEXPAND | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, 1); verbreitung_ = new wxComboBox(this, FILTER, "", wxDefaultPosition, wxDefaultSize, 0, 0, wxCB_DROPDOWN | wxCB_READONLY); verbreitung_->Append(_t("alle").c_str()); for (StringListe::const_iterator csli = DSA::Repraesentationen()->begin(); csli != DSA::Repraesentationen()->end(); ++csli) verbreitung_->Append(DSA::RepraesentationKurz(*csli).c_str()); verbreitung_->SetSelection(0); zeilenSizer->Add(verbreitung_, 4, wxEXPAND | wxRIGHT, 1); verbreitungwert_ = new wxComboBox(this, FILTER, "", wxDefaultPosition, wxDefaultSize, 0, 0, wxCB_DROPDOWN | wxCB_READONLY); for (int i = 1; i<8; ++i) verbreitungwert_->Append(strings::int2sStr(i).c_str()); verbreitungwert_->SetSelection(0); zeilenSizer->Add(verbreitungwert_, 3, wxEXPAND); allSizer->Add(zeilenSizer, 1, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, 4); liste_ = new wxListBox(this, LISTE); allSizer->Add(liste_, 6, wxEXPAND | wxLEFT | wxRIGHT, 10); // nachricht_ = new wxStaticText(this, -1, "", wxPoint(), // wxDefaultSize, wxTE_READONLY | wxNO_BORDER); // nachricht_->SetBackgroundColour(GetBackgroundColour()); // allSizer->Add(nachricht_, 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 10); zeilenSizer = new wxBoxSizer(wxHORIZONTAL); zeilenSizer->Add(new wxButton(this, BTOK, _t("OK").c_str()), 1, wxEXPAND | wxRIGHT, 5); zeilenSizer->Add(new wxButton(this, BTABBRECHEN, _t("Abbrechen").c_str()), 1, wxEXPAND | wxLEFT, 5); allSizer->Add(zeilenSizer, 1, wxEXPAND | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM, 10); SetAutoLayout(true); SetSizer(allSizer); allSizer->Fit(this); SetSize(300, 330); Update(); } // ctor //@-node:ctor //@+node:Update void PersonGUIZauberwx::Update() { std::string alt = liste_->GetStringSelection().c_str(); liste_->Clear(); bool filterrep = (rep_->GetSelection()!=0); bool filterver = (verbreitung_->GetSelection()!=0); bool filterwert = (verbreitungwert_->GetSelection()!=0); std::string rep = DSA::RepraesentationLang(rep_->GetStringSelection().c_str()); std::string ver = DSA::RepraesentationLang(verbreitung_->GetStringSelection().c_str()); int wert = verbreitungwert_->GetSelection() + 1; for (DSA::Zauberfertigkeiten::const_iterator z = zauber_.begin(); z != zauber_.end(); ++z) { if (filterrep) if (z->second.Repraesentation() != rep) continue; if (filterver) if (!z->second.Definition()->verbreitung_.Existiert(ver)) continue; if (filterver) if (z->second.Definition()->verbreitung_.Zeige(ver)->Repraesentation() != z->second.Repraesentation()) continue; if (filterwert) if (filterver) if (z->second.Definition()->verbreitung_.Zeige(ver)->Wert() < wert) continue; liste_->Append(z->first.c_str()); } if (liste_->FindString(alt.c_str())!=-1) liste_->SetSelection(liste_->FindString(alt.c_str())); FindWindow(BTOK)->Enable(liste_->GetSelection()!=-1); verbreitungwert_->Enable(filterver); } //@nonl //@-node:Update //@+node:OnUpdate void PersonGUIZauberwx::OnUpdate(wxCommandEvent& WXUNUSED(event)) { Update(); } //@nonl //@-node:OnUpdate //@+node:OnOK void PersonGUIZauberwx::OnOK(wxCommandEvent& WXUNUSED(event)) { std::string auswahl = liste_->GetStringSelection().c_str(); int i = 0; for (DSA::Zauberfertigkeiten::const_iterator z = zauber_.begin(); z != zauber_.end(); ++z) { if (z->first == auswahl) break; ++i; } EndModal(i); } //@nonl //@-node:OnOK //@+node:OnAbbrechen void PersonGUIZauberwx::OnAbbrechen(wxCommandEvent& WXUNUSED(event)) { EndModal(BTABBRECHEN); } //@nonl //@-node:OnAbbrechen //@+node:OnListe void PersonGUIZauberwx::OnListe(wxCommandEvent& WXUNUSED(event)) { FindWindow(BTOK)->Enable(liste_->GetSelection()!=-1); } //@nonl //@-node:OnListe //@-others //@<< Version History >> //@+node:<< Version History >> // $Log: PersonGUIZauberwx.cpp,v $ // Revision 1.1 2004/04/10 16:08:46 vrandezo // schoenere GUI bei Zauberauswahl // // //@nonl //@-node:<< Version History >> //@nl //@nonl //@-node:@file PersonGUIZauberwx.cpp //@-leo Index: PersonGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIwx.cpp,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** PersonGUIwx.cpp 10 Apr 2004 11:27:53 -0000 1.52 --- PersonGUIwx.cpp 10 Apr 2004 16:08:46 -0000 1.53 *************** *** 43,46 **** --- 43,47 ---- #include "PersonGUIProfessionwx.h" #include "PersonGUIVerarbeitenwx.h" + #include "PersonGUIZauberwx.h" #include "PersonGUIwx.h" *************** *** 3517,3541 **** //@+node:OnZauberNeu void PersonGUIwx::OnZauberNeu(wxCommandEvent& WXUNUSED(event)) { ! // DSA::Talentgruppe gruppe = static_cast<DSA::Talentgruppe>(talentnotebook_->GetSelection()); ! int seite = notebook_->GetSelection(); ! //if (seite != 4) gruppe = DSA::sonstige; ! StringListe sl; DSA::Zauberfertigkeiten zauber = person_->AktivierbareZauber(); - for (DSA::Zauberfertigkeiten::const_iterator z = zauber.begin(); z != zauber.end(); ++z) - sl.push_back(z->first); ! if (sl.size()==0) { Log::Debug(_t("Keine Zauber aktivierbar.")); return; } ! ! wxString* wxs = new wxString[sl.size()]; ! int index = -1; ! for (StringListe::iterator s = sl.begin(); s != sl.end(); ++s) ! wxs[++index] = s->c_str(); ! wxSingleChoiceDialog d(this, _t("Welcher Zauber soll aktiviert werden?").c_str(), ! _t("Wähle Zauber").c_str(), sl.size(), wxs, 0); ! delete [] wxs; int rv = d.ShowModal(); ! if (rv==wxID_CANCEL) return; ! gewaehltesTalent_ = d.GetStringSelection().c_str(); person_->Aktiviere(gewaehltesTalent_); --- 3518,3532 ---- //@+node:OnZauberNeu void PersonGUIwx::OnZauberNeu(wxCommandEvent& WXUNUSED(event)) { ! DSA::Zauberfertigkeiten zauber = person_->AktivierbareZauber(); ! if (zauber.size()==0) { Log::Debug(_t("Keine Zauber aktivierbar.")); return; } + PersonGUIZauberwx d(this, zauber); // TODO bevorzugte Rep einfuegen + int rv = d.ShowModal(); ! if (rv==PersonGUIZauberwx::BTABBRECHEN) return; ! gewaehltesTalent_ = zauber.Zeige(rv)->ID(); ! person_->Aktiviere(gewaehltesTalent_); *************** *** 3825,3830 **** //@+node:<< Version History >> // $Log$ ! // Revision 1.52 2004/04/10 11:27:53 vrandezo ! // nicht gcc-konforme Parameteruebergabe gefixt // // Revision 1.51 2004/04/09 23:48:24 vrandezo --- 3816,3821 ---- //@+node:<< Version History >> // $Log$ ! // Revision 1.53 2004/04/10 16:08:46 vrandezo ! // schoenere GUI bei Zauberauswahl // // Revision 1.51 2004/04/09 23:48:24 vrandezo |
From: Denny V. <vra...@us...> - 2004-04-10 11:41:23
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18028 Modified Files: PersonGUIwx.cpp Log Message: nicht gcc-konforme Parameteruebergabe gefixt Index: PersonGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIwx.cpp,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** PersonGUIwx.cpp 9 Apr 2004 23:48:24 -0000 1.51 --- PersonGUIwx.cpp 10 Apr 2004 11:27:53 -0000 1.52 *************** *** 3344,3350 **** if (rv==wxID_CANCEL) return; gewaehltesTalent_ = d.GetStringSelection().c_str(); ! if (gewaehltesTalent_ == ("["+_t("Zauber aktivieren")+"]")) ! OnZauberNeu(wxCommandEvent()); ! else { person_->Aktiviere(gewaehltesTalent_); Update(); --- 3344,3351 ---- if (rv==wxID_CANCEL) return; gewaehltesTalent_ = d.GetStringSelection().c_str(); ! if (gewaehltesTalent_ == ("["+_t("Zauber aktivieren")+"]")) { ! wxCommandEvent e; ! OnZauberNeu(e); ! } else { person_->Aktiviere(gewaehltesTalent_); Update(); *************** *** 3824,3827 **** --- 3825,3831 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.52 2004/04/10 11:27:53 vrandezo + // nicht gcc-konforme Parameteruebergabe gefixt + // // Revision 1.51 2004/04/09 23:48:24 vrandezo // Zauberfertigkeiten jetzt auch in eigener GUI im MagiePanel |
From: Denny V. <vra...@us...> - 2004-04-10 01:39:32
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28863 Modified Files: PersonHandlerGenerator.cpp Zauber.cpp Zauber.h Log Message: Helden erhalten ZF von RKP Index: PersonHandlerGenerator.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonHandlerGenerator.cpp,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** PersonHandlerGenerator.cpp 9 Apr 2004 22:25:50 -0000 1.43 --- PersonHandlerGenerator.cpp 10 Apr 2004 01:26:08 -0000 1.44 *************** *** 396,399 **** --- 396,400 ---- Entferne(P()->Rasse_().voraussetzungen_, _t("Rasse")); Entferne(P()->Rasse_().modifikatoren_, _t("Rasse")); + Entferne(P()->Rasse_().zauber_); Entferne(P()->Rasse_().kampftechniken_); Entferne(P()->Rasse_().talente_); *************** *** 406,409 **** --- 407,411 ---- Setze(P()->Rasse_().talente_, reGen); Setze(P()->Rasse_().kampftechniken_, reGen); + Setze(P()->Rasse_().zauber_, reGen); Setze(P()->Rasse_().modifikatoren_, _t("Rasse")); Setze(P()->Rasse_().voraussetzungen_, _t("Rasse")); *************** *** 430,433 **** --- 432,436 ---- Entferne(P()->Kultur_().voraussetzungen_, _t("Kultur")); Entferne(P()->Kultur_().modifikatoren_, _t("Kultur")); + Entferne(P()->Kultur_().zauber_); Entferne(P()->Kultur_().kampftechniken_); Entferne(P()->Kultur_().talente_); *************** *** 507,510 **** --- 510,514 ---- Setze(P()->Kultur_().talente_, reGen); Setze(P()->Kultur_().kampftechniken_, reGen); + Setze(P()->Kultur_().zauber_, reGen); Setze(P()->Kultur_().modifikatoren_, _t("Kultur")); Setze(P()->Kultur_().voraussetzungen_, _t("Kultur")); *************** *** 522,525 **** --- 526,530 ---- Entferne(P()->Profession_().voraussetzungen_, _t("Profession")); Entferne(P()->Profession_().modifikatoren_, _t("Profession")); + Entferne(P()->Profession_().zauber_); Entferne(P()->Profession_().kampftechniken_); Entferne(P()->Profession_().talente_); *************** *** 532,535 **** --- 537,541 ---- Setze(P()->Profession_().talente_, reGen); Setze(P()->Profession_().kampftechniken_, reGen); + Setze(P()->Profession_().zauber_, reGen); Setze(P()->Profession_().modifikatoren_, _t("Profession")); Setze(P()->Profession_().voraussetzungen_, _t("Profession")); *************** *** 2479,2482 **** --- 2485,2491 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.44 2004/04/10 01:26:08 vrandezo + // Helden erhalten ZF von RKP + // // Revision 1.43 2004/04/09 22:25:50 vrandezo // Zauberfertigkeiten fuer Personen eintragbar Index: Zauber.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Zauber.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Zauber.cpp 9 Apr 2004 22:25:50 -0000 1.8 --- Zauber.cpp 10 Apr 2004 01:26:08 -0000 1.9 *************** *** 377,380 **** --- 377,392 ---- //@ << Zauberfertigkeit >> //@+node:<< Zauberfertigkeit >> + //@<< ID >> + //@+node:<< ID >> + void Zauberfertigkeit::ID(const std::string& id) { + if ((id.find("(")<id.size())&&(id.find(")")<id.size())) { + Repraesentation(id.substr(id.find_last_of("(")+1, id.find_last_of(")")-(id.find_last_of("(")+1))); + Zauberspruch(id.substr(0, id.find_last_of("(")-1)); + } + } + //@nonl + //@-node:<< ID >> + //@nl + //@<< Maximalwert >> //@+node:<< Maximalwert >> *************** *** 471,475 **** int rv = pm->OeffneZumSchreiben(Klasse(), ID()); rv += pm->Schreibe(_t("Zauberspruch"), Zauberspruch()); ! rv += pm->Schreibe(_t("Repraesentation"), Repraesentation()); rv += pm->Schreibe(_t("Wert"), Wert()); rv += pm->SchliesseNachSchreiben(); --- 483,487 ---- int rv = pm->OeffneZumSchreiben(Klasse(), ID()); rv += pm->Schreibe(_t("Zauberspruch"), Zauberspruch()); ! rv += pm->Schreibe(_t("Repräsentation"), Repraesentation()); rv += pm->Schreibe(_t("Wert"), Wert()); rv += pm->SchliesseNachSchreiben(); *************** *** 514,517 **** --- 526,532 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.9 2004/04/10 01:26:08 vrandezo + // Helden erhalten ZF von RKP + // // Revision 1.8 2004/04/09 22:25:50 vrandezo // Zauberfertigkeiten fuer Personen eintragbar Index: Zauber.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Zauber.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Zauber.h 9 Apr 2004 23:49:55 -0000 1.9 --- Zauber.h 10 Apr 2004 01:26:08 -0000 1.10 *************** *** 174,177 **** --- 174,178 ---- static std::string Klassen() { return _t("Zauberfertigkeiten"); } + void ID(const std::string& id); std::string ID() const { return zauberspruch_ + " (" + repraesentation_ + ")"; } void Zauberspruch(const std::string& zauberspruch) { zauberspruch_ = zauberspruch; } *************** *** 231,234 **** --- 232,238 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.10 2004/04/10 01:26:08 vrandezo + // Helden erhalten ZF von RKP + // // Revision 1.9 2004/04/09 23:49:55 vrandezo // Zauberfertigkeiten bei RKP |
From: Denny V. <vra...@us...> - 2004-04-10 01:39:14
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28794 Modified Files: PersonGUIPersonenKomponentewx.cpp Log Message: Helden erhalten ZF von RKP Index: PersonGUIPersonenKomponentewx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIPersonenKomponentewx.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** PersonGUIPersonenKomponentewx.cpp 7 Jan 2004 23:06:52 -0000 1.16 --- PersonGUIPersonenKomponentewx.cpp 10 Apr 2004 01:25:50 -0000 1.17 *************** *** 352,355 **** --- 352,356 ---- Normalisiere(personenKomponenteDef_->sprachen_, p->sprachen_, this); Normalisiere(personenKomponenteDef_->schriften_, p->schriften_, this); + Normalisiere(personenKomponenteDef_->zauber_, p->zauber_, this); NormalisiereChar(personenKomponenteDef_->charakteristika_, p->charakteristika_, this); for (DSA::Charakteristika::iterator c = p->charakteristika_.begin(); c != p->charakteristika_.end(); ++c) *************** *** 380,383 **** --- 381,387 ---- // $Log$ + // Revision 1.17 2004/04/10 01:25:50 vrandezo + // Helden erhalten ZF von RKP + // // Revision 1.16 2004/01/07 23:06:52 vrandezo // RKP können jetzt [eine Geländekunde] haben |
From: Denny V. <vra...@us...> - 2004-04-10 01:05:17
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23467 Modified Files: PersonenKomponenteGUIwx.h Log Message: RKP kriegen ZF Index: PersonenKomponenteGUIwx.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonenKomponenteGUIwx.h,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** PersonenKomponenteGUIwx.h 6 Apr 2004 17:38:08 -0000 1.34 --- PersonenKomponenteGUIwx.h 10 Apr 2004 00:51:49 -0000 1.35 *************** *** 146,149 **** --- 146,155 ---- talente_->SetClientData(count++, &(*k)); } + if (TalModus()==Zauber) + for (DSA::ZauberAuswahl::iterator k = objekt_->zauber_.begin(); k != objekt_->zauber_.end(); ++k) { + talente_->Append(k->Text().c_str()); + talente_->SetClientData(count++, &(*k)); + } + talWertText_->SetValue(strings::int2sStr(talWert_, true).c_str()); talEinzelText_->SetValue(KonstruiereAuswahlText().c_str()); *************** *** 282,286 **** wxNotebookSizer* nbSizer_; ! enum TalModi { Talente, Kampftechniken, Sprachen, Schriften }; enum TalOptionsarten { einfach, Liste }; --- 288,292 ---- wxNotebookSizer* nbSizer_; ! enum TalModi { Talente, Kampftechniken, Sprachen, Schriften, Zauber }; enum TalOptionsarten { einfach, Liste }; *************** *** 623,626 **** --- 629,633 ---- talModus_->Append(_t("Sprachen").c_str()); talModus_->Append(_t("Schriften").c_str()); + talModus_->Append(_t("Zauber").c_str()); talModus_->SetSelection(0); FuelleTalGesamt(); *************** *** 797,800 **** --- 804,809 ---- if (talModus_->GetStringSelection()==wxString(_t("Kampftechniken").c_str())) return Kampftechniken; + if (talModus_->GetStringSelection()==wxString(_t("Zauber").c_str())) + return Zauber; return Talente; } // TalModus *************** *** 866,869 **** --- 875,886 ---- talGesamt_->Append(_t("[eine Schrift]").c_str()); } + if (TalModus()==Zauber) { + for (DSA::ZauberDefinitionen::iterator k = DSA::zaubersprueche()->begin(); k != DSA::zaubersprueche()->end(); ++k) { + StringListe reps = k->second.VerfuegbareRepraesentationen(); + for (StringListe::iterator s = reps.begin(); s != reps.end(); ++s) + talGesamt_->Append((k->second.ID() + " ("+*s+")").c_str()); + } + // talGesamt_->Append(_t("[eine Kampftechnik]").c_str()); + } } // FuelleTalGesamt //@nonl *************** *** 952,955 **** --- 969,976 ---- if (ok) s=auswahl.Text(); } + if (TalModus()==Zauber) { + DSA::Auswahl<DSA::Zauberfertigkeit> auswahl = KonstruiereAuswahl(ok, DSA::Zauberfertigkeit()); + if (ok) s=auswahl.Text(); + } return s; } // KonstruiereAuswahlText *************** *** 1074,1093 **** } ! for (DSA::CharakteristikaAuswahl::iterator c = objekt_->charakteristika_.begin(); c != objekt_->charakteristika_.end(); ++c) ! if (DSA::charakteristika()->Hole(c->ID(0)).SchlechteEigenschaft()) { ! if (DSA::charakteristika()->Hole(c->ID(0)).GPPro2Punkte()) ! Hinzu(text, punkte, c->Text(), (DSA::charakteristika()->Zeige(c->ID(0))->GP() * 3 * DSA::regeln("Minimaler Startwert einer Schlechten Eigenschaft") + 1)/2); // TODO Konstante ! else ! Hinzu(text, punkte, c->Text(), DSA::charakteristika()->Zeige(c->ID(0))->GP() * 3 * DSA::regeln("Minimaler Startwert einer Schlechten Eigenschaft")); // TODO Konstante ! } else ! Hinzu(text, punkte, c->Text(), DSA::charakteristika()->Zeige(c->ID(0))->GP() * 3); // TODO Konstante // TODO? Mehrere Auswahlmöglichkeiten für Charakteristika oder SF ggf. Durchschnitts-VP berechnen ! for (DSA::SonderfertigkeitenAuswahl::iterator sf = objekt_->sonderfertigkeiten_.begin(); sf != objekt_->sonderfertigkeiten_.end(); ++sf) ! Hinzu(text, punkte, sf->Text(), (DSA::sonderfertigkeiten()->Zeige(sf->ID(0))->AP()+5) / 10); // TODO Konstante ! for (StringListe::iterator vsf = objekt_->verbilligteSonderfertigkeiten_.begin(); vsf != objekt_->verbilligteSonderfertigkeiten_.end(); ++vsf) ! Hinzu(text, punkte, _t("verbilligt") + ": " + *vsf, (DSA::sonderfertigkeiten()->Zeige(*vsf)->AP()+25) / 50); // TODO Konstante typedef typename TDefs::typ TDefstyp; --- 1095,1127 ---- } ! for (DSA::CharakteristikaAuswahl::iterator c = objekt_->charakteristika_.begin(); c != objekt_->charakteristika_.end(); ++c) { ! DSA::CharakteristikumDefinition* chdef = DSA::charakteristika()->Zeige(c->ID(0)); ! if (chdef==0) chdef = DSA::generierteCharakteristika()->Zeige(c->ID(0)); ! if (chdef!=0) { ! if (DSA::charakteristika()->Zeige(c->ID(0))->SchlechteEigenschaft()) { ! if (DSA::charakteristika()->Zeige(c->ID(0))->GPPro2Punkte()) ! Hinzu(text, punkte, c->Text(), (DSA::charakteristika()->Zeige(c->ID(0))->GP() * 3 * DSA::regeln("Minimaler Startwert einer Schlechten Eigenschaft") + 1)/2); // TODO Konstante ! else ! Hinzu(text, punkte, c->Text(), DSA::charakteristika()->Zeige(c->ID(0))->GP() * 3 * DSA::regeln("Minimaler Startwert einer Schlechten Eigenschaft")); // TODO Konstante ! } else ! Hinzu(text, punkte, c->Text(), DSA::charakteristika()->Zeige(c->ID(0))->GP() * 3); // TODO Konstante ! } ! } // TODO? Mehrere Auswahlmöglichkeiten für Charakteristika oder SF ggf. Durchschnitts-VP berechnen ! for (DSA::SonderfertigkeitenAuswahl::iterator sf = objekt_->sonderfertigkeiten_.begin(); sf != objekt_->sonderfertigkeiten_.end(); ++sf) { ! DSA::SonderfertigkeitDefinition* sfdef = DSA::sonderfertigkeiten()->Zeige(sf->ID(0)); ! if (sfdef==0) sfdef = DSA::generierteSonderfertigkeiten()->Zeige(sf->ID(0)); ! if (sfdef!=0) ! Hinzu(text, punkte, sf->Text(), (sfdef->AP()+5) / 10); // TODO Konstante ! } ! for (StringListe::iterator vsf = objekt_->verbilligteSonderfertigkeiten_.begin(); vsf != objekt_->verbilligteSonderfertigkeiten_.end(); ++vsf) { ! DSA::SonderfertigkeitDefinition* sfdef = DSA::sonderfertigkeiten()->Zeige(*vsf); ! if (sfdef==0) sfdef = DSA::generierteSonderfertigkeiten()->Zeige(*vsf); ! if (sfdef!=0) ! Hinzu(text, punkte, _t("verbilligt") + ": " + *vsf, (sfdef->AP()+25) / 50); // TODO Konstante ! } typedef typename TDefs::typ TDefstyp; *************** *** 1430,1433 **** --- 1464,1476 ---- s = auswahl->Text().c_str(); } + if (TalModus()==Zauber) { + DSA::Auswahl<DSA::Zauberfertigkeit>* auswahl + = static_cast<DSA::Auswahl<DSA::Zauberfertigkeit>*> + (talente_->GetClientData(talente_->GetSelection())); + int w = auswahl->HoleWert(0); + auswahl->EntferneLetztenWert(); + auswahl->WertHinzu(++w); + s = auswahl->Text().c_str(); + } ++talWert_; *************** *** 1467,1471 **** int w = auswahl->HoleWert(0); auswahl->EntferneLetztenWert(); ! auswahl->WertHinzu(++w); if (w==0) objekt_->kampftechniken_.Loesche(*auswahl); --- 1510,1514 ---- int w = auswahl->HoleWert(0); auswahl->EntferneLetztenWert(); ! auswahl->WertHinzu(--w); if (w==0) objekt_->kampftechniken_.Loesche(*auswahl); *************** *** 1480,1484 **** int w = auswahl->HoleWert(0); auswahl->EntferneLetztenWert(); ! auswahl->WertHinzu(++w); if (w==0) objekt_->sprachen_.Loesche(*auswahl); --- 1523,1527 ---- int w = auswahl->HoleWert(0); auswahl->EntferneLetztenWert(); ! auswahl->WertHinzu(--w); if (w==0) objekt_->sprachen_.Loesche(*auswahl); *************** *** 1492,1496 **** int w = auswahl->HoleWert(0); auswahl->EntferneLetztenWert(); ! auswahl->WertHinzu(++w); if (w==0) objekt_->schriften_.Loesche(*auswahl); --- 1535,1539 ---- int w = auswahl->HoleWert(0); auswahl->EntferneLetztenWert(); ! auswahl->WertHinzu(--w); if (w==0) objekt_->schriften_.Loesche(*auswahl); *************** *** 1498,1501 **** --- 1541,1556 ---- s = auswahl->Text().c_str(); } + if (TalModus()==Zauber) { + DSA::Auswahl<DSA::Zauberfertigkeit>* auswahl + = static_cast<DSA::Auswahl<DSA::Zauberfertigkeit>*> + (talente_->GetClientData(talente_->GetSelection())); + int w = auswahl->HoleWert(0); + auswahl->EntferneLetztenWert(); + auswahl->WertHinzu(--w); + if (w==0) + objekt_->zauber_.Loesche(*auswahl); + else + s = auswahl->Text().c_str(); + } --talWert_; *************** *** 1553,1556 **** --- 1608,1620 ---- s = auswahl.Text().c_str(); } + if (TalModus()==Zauber) { + bool ok; + DSA::Auswahl<DSA::Zauberfertigkeit> auswahl = KonstruiereAuswahl(ok, DSA::Zauberfertigkeit()); + if (!auswahl.IstOK()) return; + //if (objekt_->schriften_.Existiert(auswahl.ID())) + //objekt_->schriften_.Loesche(auswahl.ID()); // TODO Schriften mehrfach? + if (ok) objekt_->zauber_.FuegeEin(auswahl); + s = auswahl.Text().c_str(); + } if (gpBerechnet_) objekt_->GP(GPKosten()); *************** *** 1593,1596 **** --- 1657,1666 ---- objekt_->schriften_.Loesche(*auswahl); } + if (TalModus()==Zauber) { + DSA::Auswahl<DSA::Zauberfertigkeit>* auswahl + = static_cast<DSA::Auswahl<DSA::Zauberfertigkeit>*> + (talente_->GetClientData(talente_->GetSelection())); + objekt_->zauber_.Loesche(*auswahl); + } if (gpBerechnet_) objekt_->GP(GPKosten()); *************** *** 1701,1704 **** --- 1771,1775 ---- if (TalModus()==Sprachen) TalModAufloesen(DSA::Sprache()); if (TalModus()==Schriften) TalModAufloesen(DSA::Schrift()); + if (TalModus()==Zauber) TalModAufloesen(DSA::Zauberfertigkeit()); int sel = talente_->GetSelection(); Update(); *************** *** 1736,1739 **** --- 1807,1816 ---- objekt_->schriften_.Loesche(*auswahl); } + if (TalModus()==Zauber) { + DSA::Auswahl<DSA::Zauberfertigkeit>* auswahl + = static_cast<DSA::Auswahl<DSA::Zauberfertigkeit>*> + (talente_->GetClientData(talente_->GetSelection())); + objekt_->zauber_.Loesche(*auswahl); + } if (gpBerechnet_) objekt_->GP(GPKosten()); *************** *** 2224,2227 **** --- 2301,2307 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.35 2004/04/10 00:51:49 vrandezo + // RKP kriegen ZF + // // Revision 1.34 2004/04/06 17:38:08 vrandezo // Verrechnungspunkte bei R/K/P werden aufgeschluesselt |
From: Denny V. <vra...@us...> - 2004-04-10 00:03:19
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13499 Modified Files: Person.cpp PersonenKomponente.cpp PersonenKomponente.h Zauber.h Log Message: Zauberfertigkeiten bei RKP Personen verwalten ZF besser Index: Person.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Person.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** Person.cpp 9 Apr 2004 22:25:50 -0000 1.21 --- Person.cpp 9 Apr 2004 23:49:55 -0000 1.22 *************** *** 82,85 **** --- 82,86 ---- sprachen_(other.sprachen_), schriften_(other.schriften_), + zauberfertigkeiten_(other.zauberfertigkeiten_), charakteristika_(other.charakteristika_), sonderfertigkeiten_(other.sonderfertigkeiten_), *************** *** 105,108 **** --- 106,111 ---- for (Talente::iterator t = talente_.begin(); t != talente_.end(); ++t) t->second.Bezugsperson(this); + for (Zauberfertigkeiten::iterator z = zauberfertigkeiten_.begin(); z != zauberfertigkeiten_.end(); ++z) + z->second.Bezugsperson(this); sonderfertigkeiten_.ID(_t("tatsächliche")); } // ctor *************** *** 132,135 **** --- 135,139 ---- if (schriften_ != other.schriften_) return false; if (kampftechniken_ != other.kampftechniken_) return false; + if (zauberfertigkeiten_ != other.zauberfertigkeiten_) return false; if (rasse_.operator!=(other.rasse_)) return false; if (kultur_ != other.kultur_) return false; *************** *** 426,429 **** --- 430,434 ---- rv += schriften_.Pruefe(); rv += kampftechniken_.Pruefe(); + rv += zauberfertigkeiten_.Pruefe(); rv += charakteristika_.Pruefe(); if (sonderfertigkeiten_.ID()!=_t("tatsächliche")) { *************** *** 452,455 **** --- 457,464 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.22 2004/04/09 23:49:55 vrandezo + // Zauberfertigkeiten bei RKP + // Personen verwalten ZF besser + // // Revision 1.21 2004/04/09 22:25:50 vrandezo // Zauberfertigkeiten fuer Personen eintragbar Index: PersonenKomponente.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonenKomponente.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** PersonenKomponente.h 6 Apr 2004 13:57:58 -0000 1.13 --- PersonenKomponente.h 9 Apr 2004 23:49:55 -0000 1.14 *************** *** 37,40 **** --- 37,41 ---- #include "Sonderfertigkeit.h" #include "SpracheSchrift.h" + #include "Zauber.h" //@nonl //@-node:<< includes >> *************** *** 75,78 **** --- 76,80 ---- && (schriften_==other.schriften_) && (kampftechniken_==other.kampftechniken_) + && (zauber_==other.zauber_) && (charakteristika_==other.charakteristika_) && (geschlechtsspezifisch_==other.geschlechtsspezifisch_) *************** *** 86,89 **** --- 88,92 ---- Schriften schriften_; Kampftechniken kampftechniken_; + Zauberfertigkeiten zauber_; Charakteristika charakteristika_; Sonderfertigkeiten sonderfertigkeiten_; *************** *** 136,139 **** --- 139,143 ---- && (sprachen_==other.sprachen_) && (schriften_==other.schriften_) + && (zauber_==other.zauber_) && (charakteristika_==other.charakteristika_) && (sonderfertigkeiten_==other.sonderfertigkeiten_) *************** *** 154,157 **** --- 158,162 ---- SprachenAuswahl sprachen_; SchriftenAuswahl schriften_; + ZauberAuswahl zauber_; CharakteristikaAuswahl charakteristika_; SonderfertigkeitenAuswahl sonderfertigkeiten_; *************** *** 176,179 **** --- 181,188 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.14 2004/04/09 23:49:55 vrandezo + // Zauberfertigkeiten bei RKP + // Personen verwalten ZF besser + // // Revision 1.13 2004/04/06 13:57:58 vrandezo // Begabung und Unfaehigkeit von Talenten und Talentgruppen jetzt Index: PersonenKomponente.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonenKomponente.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** PersonenKomponente.cpp 4 Apr 2004 23:37:40 -0000 1.14 --- PersonenKomponente.cpp 9 Apr 2004 23:49:55 -0000 1.15 *************** *** 85,88 **** --- 85,90 ---- Schriften schriften; rv += schriften.Lese(pm); + Zauberfertigkeiten zauber; + rv += zauber.Lese(pm); Charakteristika charakteristika; rv += charakteristika.Lese(pm); *************** *** 113,116 **** --- 115,119 ---- sprachen_ = sprachen; schriften_ = schriften; + zauber_ = zauber; IstGeschlechtsspezifisch(geschlechtsspezifisch); Bezeichnung(bezeichnung); *************** *** 148,151 **** --- 151,155 ---- rv += sprachen_.Schreibe(pm); rv += schriften_.Schreibe(pm); + rv += zauber_.Schreibe(pm); // if (Beschreibung()!="") // rv += pm->Schreibe(_t("Beschreibung"), Beschreibung()); *************** *** 244,247 **** --- 248,252 ---- if (sprachen_.size()!=0) s += trennzeichenDerEinzelne + _t("Sprachen") + zwischenEinzelneTitelUndSachen + sprachen_.Text(trennzeichenImEinzelnen, wennEinzelnesLeer); if (schriften_.size()!=0) s += trennzeichenDerEinzelne + _t("Schriften") + zwischenEinzelneTitelUndSachen + schriften_.Text(trennzeichenImEinzelnen, wennEinzelnesLeer); + if (zauber_.size()!=0) s += trennzeichenDerEinzelne + _t("Zauber") + zwischenEinzelneTitelUndSachen + zauber_.Text(trennzeichenImEinzelnen, wennEinzelnesLeer); return s; } // Text *************** *** 276,279 **** --- 281,286 ---- SchriftenAuswahl schriften; rv += schriften.Lese(pm); + ZauberAuswahl zauber; + rv += zauber.Lese(pm); CharakteristikaAuswahl charakteristika; rv += charakteristika.Lese(pm); *************** *** 301,304 **** --- 308,312 ---- sprachen_ = sprachen; schriften_ = schriften; + zauber_ = zauber; VarianteVon(varianteVon); Beschreibung(beschreibung); *************** *** 328,331 **** --- 336,340 ---- rv += sprachen_.Schreibe(pm); rv += schriften_.Schreibe(pm); + rv += zauber_.Schreibe(pm); if (Beschreibung()!="") rv += pm->Schreibe(_t("Beschreibung"), Beschreibung()); *************** *** 381,384 **** --- 390,394 ---- if (rv!=0) Log::Info(_t("in") + " " + typ_ + " " + ID()); return rv; + // TODO Pruefe Zauber } // Pruefe //@nonl *************** *** 514,517 **** --- 524,531 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.15 2004/04/09 23:49:55 vrandezo + // Zauberfertigkeiten bei RKP + // Personen verwalten ZF besser + // // Revision 1.14 2004/04/04 23:37:40 vrandezo // Bug: beim Re-Generieren war der RK zu hoch Index: Zauber.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Zauber.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Zauber.h 9 Apr 2004 22:25:50 -0000 1.8 --- Zauber.h 9 Apr 2004 23:49:55 -0000 1.9 *************** *** 221,226 **** //}; // Zauberspruche ! //class ZauberAuswahl : public AuswahlMenge<Zauberfertigkeit> { ! //}; // ZauberAuswahl } --- 221,226 ---- //}; // Zauberspruche ! class ZauberAuswahl : public AuswahlMenge<Zauberfertigkeit> { ! }; // ZauberAuswahl } *************** *** 231,234 **** --- 231,238 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.9 2004/04/09 23:49:55 vrandezo + // Zauberfertigkeiten bei RKP + // Personen verwalten ZF besser + // // Revision 1.8 2004/04/09 22:25:50 vrandezo // Zauberfertigkeiten fuer Personen eintragbar |
From: Denny V. <vra...@us...> - 2004-04-10 00:01:48
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13280 Modified Files: PersonGUIwx.cpp PersonGUIwx.h Log Message: Zauberfertigkeiten jetzt auch in eigener GUI im MagiePanel Index: PersonGUIwx.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIwx.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** PersonGUIwx.h 9 Apr 2004 22:26:20 -0000 1.19 --- PersonGUIwx.h 9 Apr 2004 23:48:24 -0000 1.20 *************** *** 149,152 **** --- 149,154 ---- CHARSF, CHARSFNEU, CHARSFPLUS, CHARSFMINUS, CHARSFEXTRA, + MAGIEZAUBERPLUS, MAGIEZAUBERMINUS, + MAGIEZAUBERNEU, WEITERBESCHREIBUNG, BTDRUCKEN, *************** *** 255,279 **** // wxGrid* talentTabelle_[DSA::AnzahlTalentgruppen]; ! wxScrolledWindow* scrollTalentPanel_[DSA::AnzahlTalentgruppen]; ! wxFlexGridSizer* scrollTalent_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleName_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleWert_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleProbe_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleProbenWerte_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleAufAT_; ! std::vector<wxStaticText*> talentTabelleAufPA_; ! std::vector<wxStaticText*> talentTabelleAT_; ! std::vector<wxStaticText*> talentTabellePA_; ! std::vector<wxButton*> talentTabellePlus_[DSA::AnzahlTalentgruppen]; ! std::vector<wxButton*> talentTabelleMinus_[DSA::AnzahlTalentgruppen]; ! std::vector<wxButton*> talentTabelleATPlus_; ! std::vector<wxButton*> talentTabellePAPlus_; ! std::vector<wxStaticText*> talentTabelleKomplexitaet_; ! std::vector<wxStaticText*> talentTabelleZusatz_; wxPanel* MacheTalentPanelPanel(wxNotebook* notebook, int gruppe, int spalten); ! bool schonResized; GuiObjektID IDTalentTalentAktivieren(DSA::Talentgruppe g); --- 257,281 ---- // wxGrid* talentTabelle_[DSA::AnzahlTalentgruppen]; ! wxScrolledWindow* scrollTalentPanel_[DSA::AnzahlTalentgruppen]; ! wxFlexGridSizer* scrollTalent_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleName_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleWert_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleProbe_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleProbenWerte_[DSA::AnzahlTalentgruppen]; ! std::vector<wxStaticText*> talentTabelleAufAT_; ! std::vector<wxStaticText*> talentTabelleAufPA_; ! std::vector<wxStaticText*> talentTabelleAT_; ! std::vector<wxStaticText*> talentTabellePA_; ! std::vector<wxButton*> talentTabellePlus_[DSA::AnzahlTalentgruppen]; ! std::vector<wxButton*> talentTabelleMinus_[DSA::AnzahlTalentgruppen]; ! std::vector<wxButton*> talentTabelleATPlus_; ! std::vector<wxButton*> talentTabellePAPlus_; ! std::vector<wxStaticText*> talentTabelleKomplexitaet_; ! std::vector<wxStaticText*> talentTabelleZusatz_; wxPanel* MacheTalentPanelPanel(wxNotebook* notebook, int gruppe, int spalten); ! bool schonResized; GuiObjektID IDTalentTalentAktivieren(DSA::Talentgruppe g); *************** *** 286,289 **** --- 288,305 ---- //@+node:<< Magie >> // Magie-Teil der Deklaration von PersonGUIwx + wxScrolledWindow* scrollZauberPanel_; + wxFlexGridSizer* scrollZauber_; + std::vector<wxStaticText*> zauberTabelleName_; + std::vector<wxStaticText*> zauberTabelleRep_; + std::vector<wxStaticText*> zauberTabelleWert_; + std::vector<wxStaticText*> zauberTabelleProbe_; + std::vector<wxStaticText*> zauberTabelleProbenWerte_; + std::vector<wxStaticText*> zauberTabelleSKT_; + // std::vector<wxStaticText*> talentTabelleAT_; + // std::vector<wxStaticText*> talentTabellePA_; + std::vector<wxButton*> zauberTabellePlus_; + std::vector<wxButton*> zauberTabelleMinus_; + + bool schonResizedMagie; //@-node:<< Magie >> //@nl *************** *** 415,418 **** --- 431,436 ---- void OnZauberNeu (wxCommandEvent& event); + void OnMagieZauberPlus (wxCommandEvent& event); + void OnMagieZauberMinus (wxCommandEvent& event); void OnWeiterBeschreibung (wxCommandEvent& event); *************** *** 455,458 **** --- 473,479 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.20 2004/04/09 23:48:24 vrandezo + // Zauberfertigkeiten jetzt auch in eigener GUI im MagiePanel + // // Revision 1.19 2004/04/09 22:26:20 vrandezo // Zauberfertigkeiten fuer Personen eintragbar Index: PersonGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIwx.cpp,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** PersonGUIwx.cpp 9 Apr 2004 22:26:20 -0000 1.50 --- PersonGUIwx.cpp 9 Apr 2004 23:48:24 -0000 1.51 *************** *** 956,967 **** //@+node:MacheMagiePanel wxPanel* PersonGUIwx::MacheMagiePanel(wxNotebook* notebook) { wxPanel* panel = new wxPanel(notebook, -1); wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); ! sizer->Add(new wxStaticText(panel, -1, "", wxPoint(), ! wxDefaultSize, wxALIGN_CENTRE), 1, wxEXPAND | wxALIGN_CENTRE | wxALIGN_CENTER_HORIZONTAL); ! sizer->Add(new wxStaticText(panel, -1, _t("noch nicht implementiert").c_str(), wxPoint(), ! wxDefaultSize, wxALIGN_CENTRE), 1, wxEXPAND | wxALIGN_CENTRE | wxALIGN_CENTER_HORIZONTAL); ! // TODO Kampffertigkeiten, Waffen, Rüstungen ... panel->SetAutoLayout(true); --- 956,990 ---- //@+node:MacheMagiePanel wxPanel* PersonGUIwx::MacheMagiePanel(wxNotebook* notebook) { + schonResizedMagie = false; wxPanel* panel = new wxPanel(notebook, -1); wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); ! // sizer->Add(new wxStaticText(panel, -1, "", wxPoint(), wxDefaultSize, wxALIGN_CENTRE), 1, wxEXPAND | wxALIGN_CENTRE | wxALIGN_CENTER_HORIZONTAL); ! // sizer->Add(new wxStaticText(panel, -1, _t("noch nicht implementiert").c_str(), wxPoint(), wxDefaultSize, wxALIGN_CENTRE), 1, wxEXPAND | wxALIGN_CENTRE | wxALIGN_CENTER_HORIZONTAL); ! ! scrollZauberPanel_ = new wxScrolledWindow(panel, -1, wxDefaultPosition, wxDefaultSize, wxVSCROLL); ! ! scrollZauber_ = new wxFlexGridSizer(8, 5, 5); ! scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("").c_str())); ! scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("Rep").c_str())); ! scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("ZfW").c_str())); ! scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("").c_str())); ! scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("").c_str())); ! scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("Lern").c_str())); ! scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("Probe").c_str())); ! scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, (_t("Probe") + " (" + _t("Werte") + ")").c_str())); ! // scrollZauber_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("").c_str())); ! ! scrollZauberPanel_->SetScrollRate(0, 10); ! scrollZauberPanel_->SetAutoLayout(true); ! scrollZauberPanel_->SetSizer(scrollZauber_); ! sizer->Add(scrollZauberPanel_, 1, wxEXPAND | wxALL, 10); ! ! wxBoxSizer* zeilenSizer = new wxBoxSizer(wxHORIZONTAL); ! zeilenSizer->Add(new wxBoxSizer(wxHORIZONTAL), 1); ! zeilenSizer->Add(new wxButton(panel, MAGIEZAUBERNEU, ! _t("Aktivieren").c_str()), 1); ! zeilenSizer->Add(new wxBoxSizer(wxHORIZONTAL), 1); ! sizer->Add(zeilenSizer, 0, wxBOTTOM | wxEXPAND, 10); panel->SetAutoLayout(true); *************** *** 1192,1195 **** --- 1215,1221 ---- EVT_BUTTON (TALENTTALAUFAT, PersonGUIwx::OnTalentTalAufAT) EVT_BUTTON (TALENTTALAUFPA, PersonGUIwx::OnTalentTalAufPA) + EVT_BUTTON (MAGIEZAUBERPLUS, PersonGUIwx::OnMagieZauberPlus) + EVT_BUTTON (MAGIEZAUBERMINUS, PersonGUIwx::OnMagieZauberMinus) + EVT_BUTTON (MAGIEZAUBERNEU, PersonGUIwx::OnZauberNeu) EVT_TEXT (WEITERBESCHREIBUNG, PersonGUIwx::OnWeiterBeschreibung) EVT_BUTTON (BTEDITIEREN, PersonGUIwx::OnEditieren) *************** *** 2338,2343 **** //@+node:UpdateMagie void PersonGUIwx::UpdateMagie() { } - //@nonl //@-node:UpdateMagie //@+node:UpdateInventar --- 2364,2478 ---- //@+node:UpdateMagie void PersonGUIwx::UpdateMagie() { + FindWindow(MAGIEZAUBERNEU)->Show(person_->ZauberAktivierbar()); + + int zeile = 0; + int anzahl = person_->P()->zauberfertigkeiten_.size(); + int zeilenAnzahl = zauberTabelleName_.size(); + while (anzahl>zeilenAnzahl) { + //@ << Zeile hinzufügen >> + //@+node:<< Zeile hinzufügen >> + ++zeilenAnzahl; + wxStaticText* w = new wxStaticText(scrollZauberPanel_, -1, " "); // TODO konstante Breite + zauberTabelleName_.push_back(w); + scrollZauber_->Add(w); + w = new wxStaticText(scrollZauberPanel_, -1, " "); // TODO konstante Breite + zauberTabelleRep_.push_back(w); + scrollZauber_->Add(w); + w = new wxStaticText(scrollZauberPanel_, -1, " "); // TODO konstante Breite + zauberTabelleWert_.push_back(w); + scrollZauber_->Add(w); + wxButton* b = new wxButton(scrollZauberPanel_, MAGIEZAUBERPLUS, _t("+").c_str(), wxDefaultPosition, wxSize(15, 15), 0, wxValidator(), strings::int2sStr(zeilenAnzahl).c_str()); + zauberTabellePlus_.push_back(b); + scrollZauber_->Add(b, 0, wxEXPAND | wxRIGHT, 2); + b = new wxButton(scrollZauberPanel_, MAGIEZAUBERMINUS, _t("-").c_str(), wxDefaultPosition, wxSize(15, 15), 0, wxValidator(), strings::int2sStr(zeilenAnzahl).c_str()); + scrollZauber_->Add(b, 0, wxEXPAND | wxRIGHT, 4); + zauberTabelleMinus_.push_back(b); + w = new wxStaticText(scrollZauberPanel_, -1, " "); // TODO konstante Breite + zauberTabelleSKT_.push_back(w); + scrollZauber_->Add(w); + w = new wxStaticText(scrollZauberPanel_, -1, " "); // TODO konstante Breite + zauberTabelleProbe_.push_back(w); + scrollZauber_->Add(w); + w = new wxStaticText(scrollZauberPanel_, -1, " "); // TODO konstante Breite + zauberTabelleProbenWerte_.push_back(w); + scrollZauber_->Add(w); + //scrollTalent_->Add(new wxStaticText(scrollZauberPanel_, -1, _t("").c_str())); + //@-node:<< Zeile hinzufügen >> + //@nl + } + while (anzahl<zeilenAnzahl) { + //@ << Zeilen entfernen >> + //@+node:<< Zeilen entfernen >> + --zeilenAnzahl; + int i = zeilenAnzahl; + zauberTabelleName_[i]->SetLabel(""); + zauberTabelleRep_[i]->SetLabel(""); + zauberTabelleWert_[i]->SetLabel(""); + zauberTabellePlus_[i]->Show(false); + zauberTabelleMinus_[i]->Show(false); + zauberTabelleProbe_[i]->SetLabel(""); + zauberTabelleProbenWerte_[i]->SetLabel(""); + zauberTabelleSKT_[i]->SetLabel(""); + //@-node:<< Zeilen entfernen >> + //@nl + } + + + if (!schonResizedMagie) { + SetSize(GetSize().GetWidth(), GetSize().GetHeight()-1); + SetSize(GetSize().GetWidth(), GetSize().GetHeight()+1); + schonResizedMagie = true; + } + + int i = 0; + for (DSA::Zauberfertigkeiten::const_iterator z = person_->P()->zauberfertigkeiten_.begin(); z != person_->P()->zauberfertigkeiten_.end(); ++z) { + DSA::Zauberfertigkeit zauber = z->second; + const DSA::ZauberDefinition* def = z->second.Definition(); + if (def==0) { + Log::Warning(_t("Unbekannter Zauber") + " " + z->first); + continue; + } + + std::string id = zauber.ID(); + std::string neu = zauber.Zauberspruch(); + std::string alt = zauberTabelleName_[i]->GetLabel().c_str(); + if (alt!=neu) + zauberTabelleName_[i]->SetLabel(neu.c_str()); + + neu = def->ProbeText(); + alt = zauberTabelleProbe_[i]->GetLabel().c_str(); + if (alt!=neu) + zauberTabelleProbe_[i]->SetLabel(neu.c_str()); + + neu = strings::int2sStr(zauber.Wert(), true); + alt = zauberTabelleWert_[i]->GetLabel().c_str(); + if (alt!=neu) + zauberTabelleWert_[i]->SetLabel(neu.c_str()); + + neu = DSA::RepraesentationKurz(zauber.Repraesentation()); + alt = zauberTabelleRep_[i]->GetLabel().c_str(); + if (alt!=neu) + zauberTabelleRep_[i]->SetLabel(neu.c_str()); + + neu = DSA::SKTSpalteString(zauber.Lernschwierigkeit()); + alt = zauberTabelleSKT_[i]->GetLabel().c_str(); + if (alt!=neu) + zauberTabelleSKT_[i]->SetLabel(neu.c_str()); + + zauberTabellePlus_[i]->Show(person_->TalentSteigerbar(id)); + zauberTabelleMinus_[i]->Show(person_->TalentSenkbar(id)); + + neu = strings::int2sStr(person_->P()->Wert(z->second.Eigenschaft(0))) + " / " + strings::int2sStr(person_->P()->Wert(z->second.Eigenschaft(1))) + " / " + strings::int2sStr(person_->P()->Wert(z->second.Eigenschaft(2))); + alt = zauberTabelleProbenWerte_[i]->GetLabel().c_str(); + if (alt!=neu) + zauberTabelleProbenWerte_[i]->SetLabel(neu.c_str()); + + ++i; + } + scrollZauber_->Layout(); + scrollZauber_->FitInside(scrollZauberPanel_); + + } //@-node:UpdateMagie //@+node:UpdateInventar *************** *** 3353,3356 **** --- 3488,3517 ---- //@@c //@-node:OnTalentClick + //@+node:OnMagieZauberPlus + void PersonGUIwx::OnMagieZauberPlus(wxCommandEvent& event) { + int i = strings::sStr2int(((wxButton*)event.GetEventObject())->GetName().c_str())-1; + std::string talent = ""; + + talent = person_->P()->zauberfertigkeiten_.Zeige(i)->ID(); + + person_->TalentSteigern(talent); + + Update(); + } + //@nonl + //@-node:OnMagieZauberPlus + //@+node:OnMagieZauberMinus + void PersonGUIwx::OnMagieZauberMinus(wxCommandEvent& event) { + int i = strings::sStr2int(((wxButton*)event.GetEventObject())->GetName().c_str())-1; + std::string talent = ""; + + talent = person_->P()->zauberfertigkeiten_.Zeige(i)->ID(); + + person_->TalentSenken(talent); + + Update(); + } + //@nonl + //@-node:OnMagieZauberMinus //@+node:OnZauberNeu void PersonGUIwx::OnZauberNeu(wxCommandEvent& WXUNUSED(event)) { *************** *** 3663,3666 **** --- 3824,3830 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.51 2004/04/09 23:48:24 vrandezo + // Zauberfertigkeiten jetzt auch in eigener GUI im MagiePanel + // // Revision 1.50 2004/04/09 22:26:20 vrandezo // Zauberfertigkeiten fuer Personen eintragbar |
From: Denny V. <vra...@us...> - 2004-04-09 22:39:43
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32409 Modified Files: PersonGUIGeneratorHelferwx.cpp PersonGUIGeneratorHelferwx.h PersonGUIwx.cpp PersonGUIwx.h Log Message: Zauberfertigkeiten fuer Personen eintragbar Index: PersonGUIGeneratorHelferwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIGeneratorHelferwx.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PersonGUIGeneratorHelferwx.cpp 6 Apr 2004 18:49:19 -0000 1.7 --- PersonGUIGeneratorHelferwx.cpp 9 Apr 2004 22:26:20 -0000 1.8 *************** *** 1,22 **** //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file PersonGUIGeneratorHelferwx.cpp ! ////////////////////////////////////////////////////////////////////// ! // ! // PersonGUIGeneratorHelferwx.cpp: Implementierung eines Hilfsfensters ! // zur Erschaffung von Personen ! // // $Revision$ // $Date$ ! // ! // Der Inhalt dieser Datei fällt unter die in license.txt gegebene Lizenz. ! // ! ////////////////////////////////////////////////////////////////////// #ifdef MSVC ! #pragma warning(disable:4786) #endif ! ! //@<< PersonGUIGeneratorHelferwx #includes >> ! //@+node:<< PersonGUIGeneratorHelferwx #includes >> #if defined(__WXGTK__) || defined(__WXMOTIF__) #include "dsa.xpm.h" --- 1,29 ---- //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file PersonGUIGeneratorHelferwx.cpp ! //@+at ! // PersonGUIGeneratorHelferwx.cpp: Implementierung eines ! // Hilfsfensters zur Erschaffung von Personen ! // // $Revision$ // $Date$ ! //@-at ! //@@c ! ! //@<< header >> ! //@+node:<< header >> ! //@+at ! // The content of this file is subject to the license ! // given in license.txt ! // ! //@-at ! //@@c #ifdef MSVC ! #pragma warning(disable:4786 4503) #endif ! //@-node:<< header >> ! //@nl ! //@<< includes >> ! //@+node:<< includes >> #if defined(__WXGTK__) || defined(__WXMOTIF__) #include "dsa.xpm.h" *************** *** 35,52 **** #include "PersonGUIGeneratorHelferwx.h" ! //@-node:<< PersonGUIGeneratorHelferwx #includes >> //@nl ! //@<< PersonGUIGeneratorHelferwx declarations >> ! //@+node:<< PersonGUIGeneratorHelferwx declarations >> ! #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; ! //@-node:<< PersonGUIGeneratorHelferwx declarations >> //@nl //@+others //@+node:PersonGUIGeneratorHelferwx - #endif - ////////////////////////////////////////////////////////////////////// // Konstruktion/Destruktion --- 42,60 ---- #include "PersonGUIGeneratorHelferwx.h" ! //@-node:<< includes >> //@nl ! //@<< filename >> ! //@+node:<< filename >> #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; ! //#define new DEBUG_NEW ! #endif ! ! //@-node:<< filename >> //@nl + //@+others //@+node:PersonGUIGeneratorHelferwx ////////////////////////////////////////////////////////////////////// // Konstruktion/Destruktion *************** *** 72,79 **** MacheBezeichnerWertPaar(_t("verbrauchte Talent-GP"), talentgp_, allSizer, this); MacheBezeichnerWertPaar(_t("Anzahl aktivierter Talente"), anzahlAktivierterTalente_, allSizer, this); // TODO ZauberGP, umgewandelte TGP->ZGP, Startkapital ! nachricht_ = new wxTextCtrl(this, -1, "", wxPoint(), wxDefaultSize, wxTE_READONLY | wxNO_BORDER); nachricht_->SetBackgroundColour(GetBackgroundColour()); --- 80,88 ---- MacheBezeichnerWertPaar(_t("verbrauchte Talent-GP"), talentgp_, allSizer, this); MacheBezeichnerWertPaar(_t("Anzahl aktivierter Talente"), anzahlAktivierterTalente_, allSizer, this); + MacheBezeichnerWertPaar(_t("Anzahl aktivierter Zauber"), anzahlAktivierterZauber_, allSizer, this); // TODO ZauberGP, umgewandelte TGP->ZGP, Startkapital ! nachricht_ = new wxStaticText(this, -1, "", wxPoint(), wxDefaultSize, wxTE_READONLY | wxNO_BORDER); nachricht_->SetBackgroundColour(GetBackgroundColour()); *************** *** 88,92 **** SetSizer(allSizer); allSizer->Fit(this); ! SetSize(300, 300); // Aus dem Weg... int xRand = wxSystemSettings::GetMetric(wxSYS_SCREEN_X)-320; // TODOPORT --- 97,101 ---- SetSizer(allSizer); allSizer->Fit(this); ! SetSize(300, 330); // Aus dem Weg... int xRand = wxSystemSettings::GetMetric(wxSYS_SCREEN_X)-320; // TODOPORT *************** *** 132,141 **** //@-node:XvonY //@+node:Update - //@+at - //@nonl - // XvonY - //@-at - //@@c - void PersonGUIGeneratorHelferwx::ZeigeGPInfo() { gpinfo_->Show(true); --- 141,144 ---- *************** *** 147,162 **** void PersonGUIGeneratorHelferwx::Update() { ! gp_->SetValue(XvonY(gen_->GP(), gen_->GPMax()).c_str()); ! gpFuerGuteEigenschaften_->SetValue (XvonY(gen_->GPGuteEigenschaften(), gen_->GPGuteEigenschaftenMax()).c_str()); ! gpDurchNachteile_->SetValue (XvonY(gen_->GPNachteile(), gen_->GPNachteileMax()).c_str()); ! gpDurchSchlechteEigenschaften_->SetValue (XvonY(gen_->GPSchlechteEigenschaften(), gen_->GPSchlechteEigenschaftenMax()).c_str()); ! talentgp_->SetValue (XvonY(gen_->TalentGP(), gen_->TalentGPMax()).c_str()); ! anzahlAktivierterTalente_->SetValue (XvonY(gen_->AktivierteTalente(), gen_->AktivierteTalenteMax()).c_str()); ! nachricht_->SetValue(gen_->GenerierungBeendbarText().c_str()); GPInfo(gen_->gptext_); // falls nicht beendbar --- 150,167 ---- void PersonGUIGeneratorHelferwx::Update() { ! gp_->SetLabel(XvonY(gen_->GP(), gen_->GPMax()).c_str()); ! gpFuerGuteEigenschaften_->SetLabel (XvonY(gen_->GPGuteEigenschaften(), gen_->GPGuteEigenschaftenMax()).c_str()); ! gpDurchNachteile_->SetLabel (XvonY(gen_->GPNachteile(), gen_->GPNachteileMax()).c_str()); ! gpDurchSchlechteEigenschaften_->SetLabel (XvonY(gen_->GPSchlechteEigenschaften(), gen_->GPSchlechteEigenschaftenMax()).c_str()); ! talentgp_->SetLabel (XvonY(gen_->TalentGP(), gen_->TalentGPMax()).c_str()); ! anzahlAktivierterTalente_->SetLabel (XvonY(gen_->AktivierteTalente(), gen_->AktivierteTalenteMax()).c_str()); ! anzahlAktivierterZauber_->SetLabel ! (XvonY(gen_->AktivierteZauber(), gen_->AktivierteZauberMax()).c_str()); ! nachricht_->SetLabel(gen_->GenerierungBeendbarText().c_str()); GPInfo(gen_->gptext_); // falls nicht beendbar *************** *** 189,198 **** void PersonGUIGeneratorHelferwx::MacheBezeichnerWertPaar ! (const std::string& bezeichner, wxTextCtrl*& wert, wxSizer* sizer, wxWindow* w) { wxBoxSizer* hSizer = new wxBoxSizer(wxHORIZONTAL); hSizer->Add(new wxStaticText(w, -1, bezeichner.c_str()), 5, wxALIGN_CENTER_VERTICAL); ! wert = new wxTextCtrl(w, -1, "0", wxPoint(), ! wxDefaultSize, wxTE_READONLY | wxNO_BORDER); wert->SetBackgroundColour(this->GetBackgroundColour()); hSizer->Add(wert, 1, wxALIGN_CENTER_VERTICAL | wxTOP, 7); --- 194,203 ---- void PersonGUIGeneratorHelferwx::MacheBezeichnerWertPaar ! (const std::string& bezeichner, wxStaticText*& wert, wxSizer* sizer, wxWindow* w) { wxBoxSizer* hSizer = new wxBoxSizer(wxHORIZONTAL); hSizer->Add(new wxStaticText(w, -1, bezeichner.c_str()), 5, wxALIGN_CENTER_VERTICAL); ! wert = new wxStaticText(w, -1, "0", wxPoint(), ! wxDefaultSize, wxTE_READONLY | wxNO_BORDER); wert->SetBackgroundColour(this->GetBackgroundColour()); hSizer->Add(wert, 1, wxALIGN_CENTER_VERTICAL | wxTOP, 7); *************** *** 203,209 **** //@-node:MacheBezeichnerWertPaar //@-others ! // MacheBezeichnerWertPaar ! // $Log$ // Revision 1.7 2004/04/06 18:49:19 vrandezo // GUI Vorbereitung für GP-Aufschluesselung --- 208,218 ---- //@-node:MacheBezeichnerWertPaar //@-others ! ! //@<< Version History >> ! //@+node:<< Version History >> // $Log$ + // Revision 1.8 2004/04/09 22:26:20 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.7 2004/04/06 18:49:19 vrandezo // GUI Vorbereitung für GP-Aufschluesselung *************** *** 265,268 **** --- 274,281 ---- // Beginn des Generators mit DSA.lib und in wxWindows // + //@nonl + //@-node:<< Version History >> + //@nl + //@nonl //@-node:@file PersonGUIGeneratorHelferwx.cpp //@-leo Index: PersonGUIGeneratorHelferwx.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIGeneratorHelferwx.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PersonGUIGeneratorHelferwx.h 6 Apr 2004 18:49:19 -0000 1.7 --- PersonGUIGeneratorHelferwx.h 9 Apr 2004 22:26:20 -0000 1.8 *************** *** 1,27 **** //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file PersonGUIGeneratorHelferwx.h ! ////////////////////////////////////////////////////////////////////// ! // ! // PersonGUIGeneratorHelferwx.h: Implementierung eines Hilfsfensters ! // zur Heldenerschaffung ! // // $Revision$ // $Date$ ! // ! // Der Inhalt dieser Datei fällt unter die in license.txt gegebene Lizenz. ! // ! ////////////////////////////////////////////////////////////////////// #if !defined(PERSONGUIGENERATORHELFERWX_H) #define PERSONGUIGENERATORHELFERWX_H #include "wx/frame.h" #include "InfoGUIwx.h" //#include "NDSABasis.h" class wxTextCtrl; namespace DSA { class PersonHandlerGenerator; } //! Hilfsfenster bei der Heldengenerierung class PersonGUIGeneratorHelferwx : public wxFrame { --- 1,47 ---- //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file PersonGUIGeneratorHelferwx.h ! //@+at ! // PersonGUIGeneratorHelferwx.h: Implementierung eines ! // Hilfsfensters zur Heldenerschaffung ! // // $Revision$ // $Date$ ! //@-at ! //@@c ! ! //@<< header >> ! //@+node:<< header >> ! //@+at ! // The content of this file is subject to the license ! // given in license.txt ! // ! //@-at ! //@@c ! ! #ifdef MSVC ! #pragma warning(disable:4786 4503) ! #endif ! //@-node:<< header >> ! //@nl #if !defined(PERSONGUIGENERATORHELFERWX_H) #define PERSONGUIGENERATORHELFERWX_H + //@<< includes >> + //@+node:<< includes >> #include "wx/frame.h" #include "InfoGUIwx.h" + #include "wx/stattext.h" //#include "NDSABasis.h" + //@nonl + //@-node:<< includes >> + //@nl class wxTextCtrl; namespace DSA { class PersonHandlerGenerator; } + //@<< class PersonGUIGeneratorHelferwx >> + //@+node:<< class PersonGUIGeneratorHelferwx >> //! Hilfsfenster bei der Heldengenerierung class PersonGUIGeneratorHelferwx : public wxFrame { *************** *** 46,65 **** InfoGUIwx* gpinfo_; ! wxTextCtrl* gp_; ! wxTextCtrl* gpFuerGuteEigenschaften_; ! wxTextCtrl* gpDurchSchlechteEigenschaften_; ! wxTextCtrl* gpDurchNachteile_; ! wxTextCtrl* talentgp_; ! wxTextCtrl* anzahlAktivierterTalente_; ! wxTextCtrl* nachricht_; void MacheBezeichnerWertPaar ! (const std::string& bezeichner, wxTextCtrl*& wert, wxSizer* sizer, wxWindow* w); std::string XvonY(int X, int Y); }; // PersonGUIGeneratorHelferwx #endif // !defined(PERSONGUIGENERATORHELFERWX_H) // $Log$ // Revision 1.7 2004/04/06 18:49:19 vrandezo // GUI Vorbereitung für GP-Aufschluesselung --- 66,94 ---- InfoGUIwx* gpinfo_; ! wxStaticText* gp_; ! wxStaticText* gpFuerGuteEigenschaften_; ! wxStaticText* gpDurchSchlechteEigenschaften_; ! wxStaticText* gpDurchNachteile_; ! wxStaticText* talentgp_; ! wxStaticText* anzahlAktivierterTalente_; ! wxStaticText* anzahlAktivierterZauber_; ! wxStaticText* nachricht_; void MacheBezeichnerWertPaar ! (const std::string& bezeichner, wxStaticText*& wert, wxSizer* sizer, wxWindow* w); std::string XvonY(int X, int Y); }; // PersonGUIGeneratorHelferwx + //@nonl + //@-node:<< class PersonGUIGeneratorHelferwx >> + //@nl #endif // !defined(PERSONGUIGENERATORHELFERWX_H) + //@<< Version History >> + //@+node:<< Version History >> // $Log$ + // Revision 1.8 2004/04/09 22:26:20 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.7 2004/04/06 18:49:19 vrandezo // GUI Vorbereitung für GP-Aufschluesselung *************** *** 94,97 **** --- 123,130 ---- // Beginn des Generators mit DSA.lib und in wxWindows // + //@nonl + //@-node:<< Version History >> + //@nl + //@nonl //@-node:@file PersonGUIGeneratorHelferwx.h //@-leo Index: PersonGUIwx.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIwx.h,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** PersonGUIwx.h 6 Apr 2004 18:49:19 -0000 1.18 --- PersonGUIwx.h 9 Apr 2004 22:26:20 -0000 1.19 *************** *** 217,220 **** --- 217,221 ---- wxListBox* kompaktCharakteristika_; wxListBox* kompaktSonderfertigkeiten_; + wxStaticText* kompaktTalenteTitel_; wxListBox* kompaktTalente_; wxTextCtrl* kompaktAugenfarbe_; *************** *** 413,416 **** --- 414,419 ---- void OnSFExtra (wxCommandEvent& event); + void OnZauberNeu (wxCommandEvent& event); + void OnWeiterBeschreibung (wxCommandEvent& event); *************** *** 452,455 **** --- 455,461 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.19 2004/04/09 22:26:20 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.18 2004/04/06 18:49:19 vrandezo // GUI Vorbereitung für GP-Aufschluesselung Index: PersonGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIwx.cpp,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** PersonGUIwx.cpp 9 Apr 2004 13:28:49 -0000 1.49 --- PersonGUIwx.cpp 9 Apr 2004 22:26:20 -0000 1.50 *************** *** 267,276 **** hauptSizer->Add(charSizer, 4, wxEXPAND | wxRIGHT, 5); ! kompaktTalente_ = new wxListBox(panel, KOMPAKTTALENTE, wxDefaultPosition, wxDefaultSize, 0, 0, wxLB_HSCROLL); kompaktTalente_->Clear(); wxBoxSizer* talentSizer = new wxBoxSizer(wxVERTICAL); zeilenSizer = new wxBoxSizer(wxHORIZONTAL); ! zeilenSizer->Add(new wxStaticText(panel, -1, _t("Talente").c_str()), 1); zeilenSizer->Add(new wxButton(panel, KOMPAKTTALENTNEU, _t("Aktivieren").c_str(), wxPoint(), wxSize(18, 15)), 1); --- 267,279 ---- hauptSizer->Add(charSizer, 4, wxEXPAND | wxRIGHT, 5); ! ! //@ << Talente >> ! //@+node:<< Talente >> kompaktTalente_ = new wxListBox(panel, KOMPAKTTALENTE, wxDefaultPosition, wxDefaultSize, 0, 0, wxLB_HSCROLL); kompaktTalente_->Clear(); wxBoxSizer* talentSizer = new wxBoxSizer(wxVERTICAL); zeilenSizer = new wxBoxSizer(wxHORIZONTAL); ! kompaktTalenteTitel_ = new wxStaticText(panel, -1, _t("Talente").c_str()); ! zeilenSizer->Add(kompaktTalenteTitel_, 1); zeilenSizer->Add(new wxButton(panel, KOMPAKTTALENTNEU, _t("Aktivieren").c_str(), wxPoint(), wxSize(18, 15)), 1); *************** *** 290,294 **** talentSizer->Add(zeilenSizer, 0, wxEXPAND); hauptSizer->Add(talentSizer, 5, wxEXPAND | wxRIGHT, 5); ! sizer->Add(hauptSizer, 1, wxEXPAND); --- 293,300 ---- talentSizer->Add(zeilenSizer, 0, wxEXPAND); hauptSizer->Add(talentSizer, 5, wxEXPAND | wxRIGHT, 5); ! //@nonl ! //@-node:<< Talente >> ! //@nl ! sizer->Add(hauptSizer, 1, wxEXPAND); *************** *** 302,306 **** return panel; } - //@nonl //@-node:MacheKompaktPanel //@+node:MacheBezeichnerWertPaar --- 308,311 ---- *************** *** 1372,1376 **** //@+node:UpdateKompakt void PersonGUIwx::UpdateKompakt() { ! // Namen und ähnliches kompaktName_->SetValue(person_->Name().c_str()); kompaktRasse_->SetValue(person_->Rasse_().Bezeichnung().c_str()); --- 1377,1382 ---- //@+node:UpdateKompakt void PersonGUIwx::UpdateKompakt() { ! //@ << Name und aehnliches >> ! //@+node:<< Name und aehnliches >> kompaktName_->SetValue(person_->Name().c_str()); kompaktRasse_->SetValue(person_->Rasse_().Bezeichnung().c_str()); *************** *** 1383,1401 **** kompaktAlter_->SetValue(strings::int2sStr(person_->Alter()).c_str()); kompaktGeschlecht_->SetLabel(person_->Maennlich() ? "m" : "w"); ! wxColour highlight = *wxWHITE; // TODO Was, wenn BackGround auch schon weiß? wxColour dark = GetBackgroundColour(); ! kompaktName_->SetEditable(person_->NameSetzbar()); kompaktName_->SetBackgroundColour((person_->NameSetzbar()) ? highlight : dark); FindWindow(KOMPAKTNAMEBTN)->Show(false); // TODO Namenswahl implementieren kompaktRasse_->SetEditable(person_->RasseSetzbar()); ! kompaktRasse_->SetBackgroundColour((person_->RasseSetzbar()||(person_->RasseWaehlbar())) ? highlight : dark); FindWindow(KOMPAKTRASSEBTN)->Show(person_->RasseWaehlbar()); ! kompaktKultur_->SetBackgroundColour((person_->KulturSetzbar()||(person_->KulturWaehlbar())) ? highlight : dark); kompaktKultur_->SetEditable(person_->KulturSetzbar()); FindWindow(KOMPAKTKULTURBTN)->Show(person_->KulturWaehlbar()); kompaktProfession_->SetEditable(person_->ProfessionSetzbar()); ! kompaktProfession_->SetBackgroundColour((person_->ProfessionSetzbar()||(person_->ProfessionWaehlbar())) ? highlight : dark); FindWindow(KOMPAKTPROFESSIONBTN)->Show(person_->ProfessionWaehlbar()); kompaktAlter_->SetEditable(person_->AlterSetzbar()); --- 1389,1407 ---- kompaktAlter_->SetValue(strings::int2sStr(person_->Alter()).c_str()); kompaktGeschlecht_->SetLabel(person_->Maennlich() ? "m" : "w"); ! wxColour highlight = *wxWHITE; // TODO Was, wenn BackGround auch schon weiß? wxColour dark = GetBackgroundColour(); ! kompaktName_->SetEditable(person_->NameSetzbar()); kompaktName_->SetBackgroundColour((person_->NameSetzbar()) ? highlight : dark); FindWindow(KOMPAKTNAMEBTN)->Show(false); // TODO Namenswahl implementieren kompaktRasse_->SetEditable(person_->RasseSetzbar()); ! kompaktRasse_->SetBackgroundColour((person_->RasseSetzbar()||(person_->RasseWaehlbar())) ? highlight : dark); FindWindow(KOMPAKTRASSEBTN)->Show(person_->RasseWaehlbar()); ! kompaktKultur_->SetBackgroundColour((person_->KulturSetzbar()||(person_->KulturWaehlbar())) ? highlight : dark); kompaktKultur_->SetEditable(person_->KulturSetzbar()); FindWindow(KOMPAKTKULTURBTN)->Show(person_->KulturWaehlbar()); kompaktProfession_->SetEditable(person_->ProfessionSetzbar()); ! kompaktProfession_->SetBackgroundColour((person_->ProfessionSetzbar()||(person_->ProfessionWaehlbar())) ? highlight : dark); FindWindow(KOMPAKTPROFESSIONBTN)->Show(person_->ProfessionWaehlbar()); kompaktAlter_->SetEditable(person_->AlterSetzbar()); *************** *** 1414,1418 **** kompaktHauptfarbe_->SetBackgroundColour(person_->HauptfarbeSetzbar() ? highlight : dark); FindWindow(KOMPAKTHAUPTFARBEWURF)->Show(person_->HauptfarbeSetzbar()); ! // die +/- Knöpfe neben den Eigenschaften int i = 0; --- 1420,1427 ---- kompaktHauptfarbe_->SetBackgroundColour(person_->HauptfarbeSetzbar() ? highlight : dark); FindWindow(KOMPAKTHAUPTFARBEWURF)->Show(person_->HauptfarbeSetzbar()); ! //@-node:<< Name und aehnliches >> ! //@nl ! //@ << Eigenschaften >> ! //@+node:<< Eigenschaften >> // die +/- Knöpfe neben den Eigenschaften int i = 0; *************** *** 1433,1481 **** Show(person_->Senkbar((DSA::AbgeleiteterWertArt)i)); } ! ! // Vor- und Nachteile kompaktCharakteristika_->Clear(); // TODO sortieren (womöglich auch Cachen?) ! DSA::Charakteristika chs = person_->P()->charakteristika_.Sichtbar(); for (DSA::Charakteristika::iterator c = chs.begin(); c != chs.end(); ++c) kompaktCharakteristika_->Append(c->second.Text().c_str()); ! if (gewaehltesChar_=="") { ! FindWindow(KOMPAKTCHARPLUS)->Show(false); // TODO ! FindWindow(KOMPAKTCHARMINUS)->Show(false); // TODO ! } else { int pos = kompaktCharakteristika_->FindString(chs.Hole(gewaehltesChar_.c_str()).Text().c_str()); ! if (pos!=-1) kompaktCharakteristika_->SetSelection(pos); ! FindWindow(KOMPAKTCHARPLUS)-> Show(person_->CharakteristikumSteigerbar(gewaehltesChar_)); // TODO ! FindWindow(KOMPAKTCHARMINUS)-> Show(person_->CharakteristikumSenkbar(gewaehltesChar_)); // TODO ! } ! ! FindWindow(KOMPAKTCHARNEU)-> Show(person_->CharakteristikaHinzufuegbar()); ! FindWindow(KOMPAKTCHAREXTRA)-> Show(false); // TODO ! ! // Sonderfertigkeiten kompaktSonderfertigkeiten_->Clear(); // TODO sortieren (womöglich auch Cachen?) ! DSA::Sonderfertigkeiten sfs = person_->P()->sonderfertigkeiten_.Bereinige(); for (DSA::Sonderfertigkeiten::iterator sf = sfs.begin(); sf != sfs.end(); ++sf) kompaktSonderfertigkeiten_->Append(sf->second.Text(person_->P()).c_str()); ! if (gewaehlteSF_=="") { ! FindWindow(KOMPAKTSFPLUS)-> Show(false); // TODO ! FindWindow(KOMPAKTSFMINUS)-> Show(false); // TODO ! } else { int pos = kompaktSonderfertigkeiten_->FindString(person_->P()->sonderfertigkeiten_.Hole(gewaehlteSF_.c_str()).Text(person_->P()).c_str()); ! if (pos!=-1) kompaktSonderfertigkeiten_->SetSelection(pos); ! FindWindow(KOMPAKTSFPLUS)-> Show(person_->SteigerbarSF(gewaehlteSF_)); ! FindWindow(KOMPAKTSFMINUS)-> Show(person_->EntfernbarSF(gewaehlteSF_)||person_->SenkbarSF(gewaehlteSF_)); // TODO ! } ! ! FindWindow(KOMPAKTSFNEU)-> Show(person_->SonderfertigkeitenHinzufuegbar()); ! FindWindow(KOMPAKTSFEXTRA)-> Show(false); // TODO ! ! // Kampftechniken, Talente, Sprachen und Schriften kompaktTalente_->Clear(); // TODO sortieren (womöglich auch Cachen?) ! if (person_->P()->kampftechniken_.size()!=0) { ! kompaktTalente_->Append((" -- " + _t("Kampftechniken") + " -- ").c_str()); ! for (DSA::Kampftechniken::iterator k = person_->P()->kampftechniken_.begin(); k != person_->P()->kampftechniken_.end(); ++k) ! kompaktTalente_->Append(k->second.Text(true).c_str()); ! kompaktTalente_->Append(""); ! } StringListe sl[DSA::AnzahlTalentgruppen]; for (i = 0; i < DSA::AnzahlTalentgruppen; ++i) --- 1442,1512 ---- Show(person_->Senkbar((DSA::AbgeleiteterWertArt)i)); } ! //@nonl ! //@-node:<< Eigenschaften >> ! //@nl ! //@ << Vor- und Nachteile >> ! //@+node:<< Vor- und Nachteile >> kompaktCharakteristika_->Clear(); // TODO sortieren (womöglich auch Cachen?) ! DSA::Charakteristika chs = person_->P()->charakteristika_.Sichtbar(); for (DSA::Charakteristika::iterator c = chs.begin(); c != chs.end(); ++c) kompaktCharakteristika_->Append(c->second.Text().c_str()); ! if (gewaehltesChar_=="") { ! FindWindow(KOMPAKTCHARPLUS)->Show(false); // TODO ! FindWindow(KOMPAKTCHARMINUS)->Show(false); // TODO ! } else { int pos = kompaktCharakteristika_->FindString(chs.Hole(gewaehltesChar_.c_str()).Text().c_str()); ! if (pos!=-1) kompaktCharakteristika_->SetSelection(pos); ! FindWindow(KOMPAKTCHARPLUS)-> Show(person_->CharakteristikumSteigerbar(gewaehltesChar_)); // TODO ! FindWindow(KOMPAKTCHARMINUS)-> Show(person_->CharakteristikumSenkbar(gewaehltesChar_)); // TODO ! } ! ! FindWindow(KOMPAKTCHARNEU)-> Show(person_->CharakteristikaHinzufuegbar()); ! FindWindow(KOMPAKTCHAREXTRA)-> Show(false); // TODO ! //@nonl ! //@-node:<< Vor- und Nachteile >> ! //@nl ! //@ << Sonderfertigkeiten >> ! //@+node:<< Sonderfertigkeiten >> kompaktSonderfertigkeiten_->Clear(); // TODO sortieren (womöglich auch Cachen?) ! DSA::Sonderfertigkeiten sfs = person_->P()->sonderfertigkeiten_.Bereinige(); for (DSA::Sonderfertigkeiten::iterator sf = sfs.begin(); sf != sfs.end(); ++sf) kompaktSonderfertigkeiten_->Append(sf->second.Text(person_->P()).c_str()); ! if (gewaehlteSF_=="") { ! FindWindow(KOMPAKTSFPLUS)-> Show(false); // TODO ! FindWindow(KOMPAKTSFMINUS)-> Show(false); // TODO ! } else { int pos = kompaktSonderfertigkeiten_->FindString(person_->P()->sonderfertigkeiten_.Hole(gewaehlteSF_.c_str()).Text(person_->P()).c_str()); ! if (pos!=-1) kompaktSonderfertigkeiten_->SetSelection(pos); ! FindWindow(KOMPAKTSFPLUS)-> Show(person_->SteigerbarSF(gewaehlteSF_)); ! FindWindow(KOMPAKTSFMINUS)-> Show(person_->EntfernbarSF(gewaehlteSF_)||person_->SenkbarSF(gewaehlteSF_)); // TODO ! } ! ! FindWindow(KOMPAKTSFNEU)-> Show(person_->SonderfertigkeitenHinzufuegbar()); ! FindWindow(KOMPAKTSFEXTRA)-> Show(false); // TODO ! //@nonl ! //@-node:<< Sonderfertigkeiten >> ! //@nl ! //@ << Fertigkeiten >> ! //@+node:<< Fertigkeiten >> ! if (person_->P()->zauberfertigkeiten_.size() > 0) ! kompaktTalenteTitel_->SetLabel((_t("Talente") + " && " + _t("Zauber")).c_str()); ! else ! kompaktTalenteTitel_->SetLabel(_t("Talente").c_str()); ! kompaktTalente_->Clear(); // TODO sortieren (womöglich auch Cachen?) ! ! //@<< Kampftechniken >> ! //@+node:<< Kampftechniken >> ! if (person_->P()->kampftechniken_.size()!=0) { ! kompaktTalente_->Append((" -- " + _t("Kampftechniken") + " -- ").c_str()); ! for (DSA::Kampftechniken::iterator k = person_->P()->kampftechniken_.begin(); k != person_->P()->kampftechniken_.end(); ++k) ! kompaktTalente_->Append(k->second.Text(true).c_str()); ! kompaktTalente_->Append(""); ! } ! //@nonl ! //@-node:<< Kampftechniken >> ! //@nl ! //@<< Talente >> ! //@+node:<< Talente >> StringListe sl[DSA::AnzahlTalentgruppen]; for (i = 0; i < DSA::AnzahlTalentgruppen; ++i) *************** *** 1483,1495 **** for (DSA::Talente::iterator t = person_->P()->talente_.begin(); t != person_->P()->talente_.end(); ++t) sl[(int)t->second.Gruppe()].push_back(t->second.Text()); ! // int laenge = 0; for (i = 0; i < DSA::AnzahlTalentgruppen; ++i) { if (sl[i].size()==1) continue; sl[i].push_back(""); ! // laenge += sl[i].size(); for (StringListe::iterator s = sl[i].begin(); s != sl[i].end(); ++s) kompaktTalente_->Append(s->c_str()); } ! /* wxString* wxs = new wxString[laenge]; int index = 0; for (i = 0; i < DSA::AnzahlTalentgruppen; ++i) { --- 1514,1529 ---- for (DSA::Talente::iterator t = person_->P()->talente_.begin(); t != person_->P()->talente_.end(); ++t) sl[(int)t->second.Gruppe()].push_back(t->second.Text()); ! // int laenge = 0; for (i = 0; i < DSA::AnzahlTalentgruppen; ++i) { if (sl[i].size()==1) continue; sl[i].push_back(""); ! // laenge += sl[i].size(); for (StringListe::iterator s = sl[i].begin(); s != sl[i].end(); ++s) kompaktTalente_->Append(s->c_str()); } ! ! //@<< alternatives Sortieren >> ! //@+node:<< alternatives Sortieren >> ! /* wxString* wxs = new wxString[laenge]; int index = 0; for (i = 0; i < DSA::AnzahlTalentgruppen; ++i) { *************** *** 1500,1539 **** kompaktTalente_->Set(laenge, wxs); delete [] wxs; ! */ // womöglich ist das eine schnellere Variante, als die letzten beiden Zeilen in // der oberen aktiven for-Schleife, womöglich aber ist sie auch langsamer. // Sollte es mal relevant werden, so kann hier umgeschaltet werden ! if ((person_->P()->sprachen_.size()+person_->P()->schriften_.size())!=0) { ! kompaktTalente_->Append((" -- " + _t("Sprachen & Schriften") + " -- ").c_str()); ! for (DSA::Sprachen::iterator sp = person_->P()->sprachen_.begin(); sp != person_->P()->sprachen_.end(); ++sp) ! kompaktTalente_->Append(sp->second.Text(false).c_str()); ! for (DSA::Schriften::iterator sch = person_->P()->schriften_.begin(); sch != person_->P()->schriften_.end(); ++sch) ! kompaktTalente_->Append(sch->second.Text(false).c_str()); ! kompaktTalente_->Append(""); // TODO ! } ! if (gewaehltesTalent_!="") { ! int pos = kompaktTalente_->FindString(person_->P()->talente_.Hole(gewaehltesTalent_).Text().c_str()); ! if (pos == -1) pos = kompaktTalente_->FindString(person_->P()->kampftechniken_.Hole(gewaehltesTalent_).Text(true).c_str()); ! if (pos == -1) { ! std::string temp = gewaehltesTalent_.substr(gewaehltesTalent_.find(":")+2, gewaehltesTalent_.size()-(gewaehltesTalent_.find(":")+2)); ! if (gewaehltesTalent_[0]=='L') ! pos = kompaktTalente_->FindString(person_->P()->schriften_.Hole(temp).Text(false).c_str()); ! else ! pos = kompaktTalente_->FindString(person_->P()->sprachen_.Hole(temp).Text(false).c_str()); ! } ! if (pos != -1) kompaktTalente_->SetSelection(pos); ! FindWindow(KOMPAKTTALENTPLUS)->Show(person_->TalentSteigerbar(gewaehltesTalent_)); FindWindow(KOMPAKTTALENTMINUS)->Show(person_->TalentSenkbar(gewaehltesTalent_)); ! FindWindow(KOMPAKTTALENTATPLUS)->Show(person_->AufATSteigerbar(gewaehltesTalent_)); ! FindWindow(KOMPAKTTALENTPAPLUS)->Show(person_->AufPASteigerbar(gewaehltesTalent_)); } else { ! FindWindow(KOMPAKTTALENTPLUS)->Show(false); FindWindow(KOMPAKTTALENTMINUS)->Show(false); ! FindWindow(KOMPAKTTALENTATPLUS)->Show(false); ! FindWindow(KOMPAKTTALENTPAPLUS)->Show(false); } ! FindWindow(KOMPAKTTALENTSPEZIAL)->Show(false); // TODO ! FindWindow(KOMPAKTTALENTNEU)->Show(person_->TalentAktivierbar()); } //@nonl --- 1534,1605 ---- kompaktTalente_->Set(laenge, wxs); delete [] wxs; ! */ // womöglich ist das eine schnellere Variante, als die letzten beiden Zeilen in // der oberen aktiven for-Schleife, womöglich aber ist sie auch langsamer. // Sollte es mal relevant werden, so kann hier umgeschaltet werden ! //@nonl ! //@-node:<< alternatives Sortieren >> ! //@nl ! //@nonl ! //@-node:<< Talente >> ! //@nl ! //@<< Sprachen und Schriften >> ! //@+node:<< Sprachen und Schriften >> ! if ((person_->P()->sprachen_.size()+person_->P()->schriften_.size())!=0) { ! kompaktTalente_->Append((" -- " + _t("Sprachen & Schriften") + " -- ").c_str()); ! for (DSA::Sprachen::iterator sp = person_->P()->sprachen_.begin(); sp != person_->P()->sprachen_.end(); ++sp) ! kompaktTalente_->Append(sp->second.Text(false).c_str()); ! for (DSA::Schriften::iterator sch = person_->P()->schriften_.begin(); sch != person_->P()->schriften_.end(); ++sch) ! kompaktTalente_->Append(sch->second.Text(false).c_str()); ! kompaktTalente_->Append(""); // TODO ! } ! //@nonl ! //@-node:<< Sprachen und Schriften >> ! //@nl ! //@<< Zauber >> ! //@+node:<< Zauber >> ! if (person_->P()->zauberfertigkeiten_.size()!=0) { ! kompaktTalente_->Append((" -- " + _t("Zauberfertigkeiten") + " -- ").c_str()); ! for (DSA::Zauberfertigkeiten::iterator z = person_->P()->zauberfertigkeiten_.begin(); z != person_->P()->zauberfertigkeiten_.end(); ++z) ! kompaktTalente_->Append(z->second.Text().c_str()); ! kompaktTalente_->Append(""); ! } ! //@nonl ! //@-node:<< Zauber >> ! //@nl ! ! // woher kommt gewaehltes Talent? siehe OnKompaktTalenteSelect if (gewaehltesTalent_!="") { ! int pos = kompaktTalente_->FindString(person_->P()->talente_.Hole(gewaehltesTalent_).Text().c_str()); ! if (pos == -1) ! pos = kompaktTalente_->FindString(person_->P()->kampftechniken_.Hole(gewaehltesTalent_).Text(true).c_str()); ! if (pos == -1) { ! std::string temp = gewaehltesTalent_.substr(gewaehltesTalent_.find(":")+2, gewaehltesTalent_.size()-(gewaehltesTalent_.find(":")+2)); ! if (gewaehltesTalent_[0]=='L') ! pos = kompaktTalente_->FindString(person_->P()->schriften_.Hole(temp).Text(false).c_str()); ! else ! pos = kompaktTalente_->FindString(person_->P()->sprachen_.Hole(temp).Text(false).c_str()); ! } ! if (pos == -1) ! pos = kompaktTalente_->FindString(person_->P()->zauberfertigkeiten_.Hole(gewaehltesTalent_).Text().c_str()); ! ! if (pos != -1) ! kompaktTalente_->SetSelection(pos); ! ! FindWindow(KOMPAKTTALENTPLUS)->Show(person_->TalentSteigerbar(gewaehltesTalent_)); FindWindow(KOMPAKTTALENTMINUS)->Show(person_->TalentSenkbar(gewaehltesTalent_)); ! FindWindow(KOMPAKTTALENTATPLUS)->Show(person_->AufATSteigerbar(gewaehltesTalent_)); ! FindWindow(KOMPAKTTALENTPAPLUS)->Show(person_->AufPASteigerbar(gewaehltesTalent_)); } else { ! FindWindow(KOMPAKTTALENTPLUS)->Show(false); FindWindow(KOMPAKTTALENTMINUS)->Show(false); ! FindWindow(KOMPAKTTALENTATPLUS)->Show(false); ! FindWindow(KOMPAKTTALENTPAPLUS)->Show(false); } ! FindWindow(KOMPAKTTALENTSPEZIAL)->Show(false); // TODO ! FindWindow(KOMPAKTTALENTNEU)->Show(person_->TalentAktivierbar()||person_->ZauberAktivierbar()); ! //@nonl ! //@-node:<< Fertigkeiten >> ! //@nl } //@nonl *************** *** 3070,3075 **** gewaehltesTalent_ = _t("Lesen / Schreiben") + ": " + gewaehltesTalent_; } ! FindWindow(KOMPAKTTALENTPLUS)->Show(person_->TalentSteigerbar(gewaehltesTalent_)); ! FindWindow(KOMPAKTTALENTMINUS)->Show(person_->TalentSenkbar(gewaehltesTalent_)); FindWindow(KOMPAKTTALENTATPLUS)->Show(person_->AufATSteigerbar(gewaehltesTalent_)); FindWindow(KOMPAKTTALENTPAPLUS)->Show(person_->AufPASteigerbar(gewaehltesTalent_)); --- 3136,3153 ---- gewaehltesTalent_ = _t("Lesen / Schreiben") + ": " + gewaehltesTalent_; } ! ! int hierBeginntMagie = kompaktTalente_->FindString((" -- " + _t("Zauberfertigkeiten") + " -- ").c_str()); ! if (kompaktTalente_->GetSelection() > hierBeginntMagie) { ! s = kompaktTalente_->GetStringSelection().c_str(); ! for (DSA::Zauberfertigkeiten::const_iterator z = person_->P()->zauberfertigkeiten_.begin(); z != person_->P()->zauberfertigkeiten_.end(); ++z) { ! if (z->second.Text() == s) { ! gewaehltesTalent_ = z->first; ! break; ! } ! } ! } ! ! FindWindow(KOMPAKTTALENTPLUS)->Show(person_->TalentSteigerbar(gewaehltesTalent_)); ! FindWindow(KOMPAKTTALENTMINUS)->Show(person_->TalentSenkbar(gewaehltesTalent_)); FindWindow(KOMPAKTTALENTATPLUS)->Show(person_->AufATSteigerbar(gewaehltesTalent_)); FindWindow(KOMPAKTTALENTPAPLUS)->Show(person_->AufPASteigerbar(gewaehltesTalent_)); *************** *** 3114,3133 **** StringListe sl; person_->AktivierbareTalente(sl, gruppe); ! if (sl.size()==0) { Log::Debug(_t("Keine Talente aktivierbar.")); return; } ! wxString* wxs = new wxString[sl.size()]; ! int index = -1; ! for (StringListe::iterator s = sl.begin(); s != sl.end(); ++s) ! wxs[++index] = s->c_str(); ! wxSingleChoiceDialog d(this, _t("Welches Talent soll aktiviert werden?").c_str(), _t("Wähle Talent").c_str(), sl.size(), wxs, 0); ! delete [] wxs; ! int rv = d.ShowModal(); ! if (rv==wxID_CANCEL) return; ! gewaehltesTalent_ = d.GetStringSelection().c_str(); ! person_->Aktiviere(gewaehltesTalent_); ! ! Update(); } //@nonl --- 3192,3218 ---- StringListe sl; person_->AktivierbareTalente(sl, gruppe); ! ! if (person_->ZauberAktivierbar()) ! if (seite == 1) sl.push_back("["+_t("Zauber aktivieren")+"]"); ! ! if (sl.size()==0) { Log::Debug(_t("Keine Talente aktivierbar.")); return; } ! wxString* wxs = new wxString[sl.size()]; ! int index = -1; ! for (StringListe::iterator s = sl.begin(); s != sl.end(); ++s) ! wxs[++index] = s->c_str(); ! wxSingleChoiceDialog d(this, _t("Welches Talent soll aktiviert werden?").c_str(), _t("Wähle Talent").c_str(), sl.size(), wxs, 0); ! delete [] wxs; ! int rv = d.ShowModal(); ! if (rv==wxID_CANCEL) return; ! gewaehltesTalent_ = d.GetStringSelection().c_str(); ! if (gewaehltesTalent_ == ("["+_t("Zauber aktivieren")+"]")) ! OnZauberNeu(wxCommandEvent()); ! else { ! person_->Aktiviere(gewaehltesTalent_); ! Update(); ! } } //@nonl *************** *** 3268,3271 **** --- 3353,3385 ---- //@@c //@-node:OnTalentClick + //@+node:OnZauberNeu + void PersonGUIwx::OnZauberNeu(wxCommandEvent& WXUNUSED(event)) { + // DSA::Talentgruppe gruppe = static_cast<DSA::Talentgruppe>(talentnotebook_->GetSelection()); + int seite = notebook_->GetSelection(); + //if (seite != 4) gruppe = DSA::sonstige; + StringListe sl; + DSA::Zauberfertigkeiten zauber = person_->AktivierbareZauber(); + for (DSA::Zauberfertigkeiten::const_iterator z = zauber.begin(); z != zauber.end(); ++z) + sl.push_back(z->first); + + if (sl.size()==0) { Log::Debug(_t("Keine Zauber aktivierbar.")); return; } + + wxString* wxs = new wxString[sl.size()]; + int index = -1; + for (StringListe::iterator s = sl.begin(); s != sl.end(); ++s) + wxs[++index] = s->c_str(); + wxSingleChoiceDialog d(this, _t("Welcher Zauber soll aktiviert werden?").c_str(), + _t("Wähle Zauber").c_str(), sl.size(), wxs, 0); + delete [] wxs; + + int rv = d.ShowModal(); + if (rv==wxID_CANCEL) return; + gewaehltesTalent_ = d.GetStringSelection().c_str(); + person_->Aktiviere(gewaehltesTalent_); + + Update(); + } + //@nonl + //@-node:OnZauberNeu //@+node:OnKompaktCharSelect void PersonGUIwx::OnKompaktCharSelect (wxCommandEvent& WXUNUSED(event)) { *************** *** 3549,3552 **** --- 3663,3669 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.50 2004/04/09 22:26:20 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.49 2004/04/09 13:28:49 twel // ein Segfault weniger |
From: Denny V. <vra...@us...> - 2004-04-09 22:39:15
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32307 Modified Files: Person.cpp Person.h PersonHandler.h PersonHandlerGenerator.cpp PersonHandlerGenerator.h Zauber.cpp Zauber.h Log Message: Zauberfertigkeiten fuer Personen eintragbar Index: PersonHandler.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonHandler.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** PersonHandler.h 31 Dec 2003 03:51:58 -0000 1.8 --- PersonHandler.h 9 Apr 2004 22:25:50 -0000 1.9 *************** *** 88,91 **** --- 88,93 ---- virtual void Steiger(AbgeleiteterWertArt a); + virtual bool ZauberAktivierbar() { return (AktivierbareZauber().size()>0); } + virtual Zauberfertigkeiten AktivierbareZauber() { return Zauberfertigkeiten(); } virtual bool TalentAktivierbar(const Talentgruppe gruppe = sonstige) { StringListe sl; AktivierbareTalente(sl, gruppe); return sl.size()!=0; } virtual void AktivierbareTalente(StringListe&, const Talentgruppe gruppe = sonstige) {} *************** *** 159,162 **** --- 161,167 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.9 2004/04/09 22:25:50 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.8 2003/12/31 03:51:58 vrandezo // Re-Generation erweitert Index: Person.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Person.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Person.h 28 Nov 2003 16:46:16 -0000 1.13 --- Person.h 9 Apr 2004 22:25:50 -0000 1.14 *************** *** 37,40 **** --- 37,41 ---- #include "Charakteristikum.h" #include "Sonderfertigkeit.h" + #include "Zauber.h" //@nonl //@-node:<< includes >> *************** *** 146,149 **** --- 147,151 ---- Sonderfertigkeiten sonderfertigkeiten_; StringListe verbilligteSonderfertigkeiten_; + Zauberfertigkeiten zauberfertigkeiten_; //@nonl //@-node:<< Listen (sollten ob Demeter raus)>> *************** *** 185,188 **** --- 187,193 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.14 2004/04/09 22:25:50 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.13 2003/11/28 16:46:16 vrandezo // Zeilenvorlauf am Dateiende (Warnung bei gcc) Index: PersonHandlerGenerator.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonHandlerGenerator.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** PersonHandlerGenerator.h 6 Apr 2004 21:24:30 -0000 1.16 --- PersonHandlerGenerator.h 9 Apr 2004 22:25:50 -0000 1.17 *************** *** 76,79 **** --- 76,81 ---- virtual void Senke(AbgeleiteterWertArt); + virtual bool ZauberAktivierbar(); + virtual Zauberfertigkeiten AktivierbareZauber(); virtual bool TalentAktivierbar(const Talentgruppe gruppe = sonstige); virtual void AktivierbareTalente(StringListe&, const Talentgruppe gruppe = sonstige); *************** *** 134,137 **** --- 136,141 ---- virtual int AktivierteTalenteMax() { return regeln("Anzahl bei Generierung aktivierbarer Talente"); } + virtual int AktivierteZauber(); + virtual int AktivierteZauberMax(); virtual int TalentGP(); virtual int TalentGPMax(); *************** *** 163,166 **** --- 167,172 ---- Schriften schriftenbasis_; Kampftechniken kampftechnikenbasis_; + Zauberfertigkeiten zauberbasis_; + Voraussetzungen voraussetzungen_; Charakteristika chareigen_; *************** *** 188,191 **** --- 194,199 ---- void Entferne(Schriften schriften); void Setze(Schriften schriften, bool reGen = false); + void Entferne(Zauberfertigkeiten zauber); + void Setze(Zauberfertigkeiten zauber, bool reGen = false); // gibt zurück, wieviel GP die Charakteristika beitragen *************** *** 214,217 **** --- 222,228 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.17 2004/04/09 22:25:50 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.16 2004/04/06 21:24:30 vrandezo // GP werden bei Heldenerschaffung aufgeschlüsselt (Twelwan) Index: PersonHandlerGenerator.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonHandlerGenerator.cpp,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** PersonHandlerGenerator.cpp 6 Apr 2004 21:24:30 -0000 1.42 --- PersonHandlerGenerator.cpp 9 Apr 2004 22:25:50 -0000 1.43 *************** *** 822,843 **** //@-node:<< Setze Schriften >> //@nl ! //@<< Entferne Charachteristika >> ! //@+node:<< Entferne Charachteristika >> ! /* void PersonHandlerGenerator::Entferne(Charakteristika charakteristika) { ! for (Charakteristika::iterator c = charakteristika.begin(); c != charakteristika.end(); ++c) { ! P()->charakteristika_.Loesche(c->first); ! charakteristikabasis_.Loesche(c->first); ! } ! } // Entferne (charakteristika) ! ! void PersonHandlerGenerator::Setze(Charakteristika charakteristika) { ! for (Charakteristika::iterator c = charakteristika.begin(); c != charakteristika.end(); ++c) { ! P()->charakteristika_.FuegeEin(c->second); ! charakteristikabasis_.FuegeEin(c->second); ! } ! } // Setze (charakteristika) ! */ //@nonl ! //@-node:<< Entferne Charachteristika >> //@nl //@<< SpracheOderSchrift >> --- 822,857 ---- //@-node:<< Setze Schriften >> //@nl ! //@<< Entferne Zauber >> ! //@+node:<< Entferne Zauber >> ! void PersonHandlerGenerator::Entferne(Zauberfertigkeiten zauber) { ! for (int i = 0; i < 2; ++i) { ! Zauberfertigkeiten& zref = (i==1) ? zauberbasis_ : P()->zauberfertigkeiten_; ! for (Zauberfertigkeiten::iterator z = zauber.begin(); z != zauber.end(); ++z) { ! if (zref.Zeige(z->first)->Wert()==z->second.Wert()) { ! zref.Loesche(z->first); ! continue; ! } ! zref.Zeige(z->first)->Wert(zref.Zeige(z->first)->Wert()-z->second.Wert()); ! } ! } ! } // Entferne (zauber) //@nonl ! //@-node:<< Entferne Zauber >> ! //@nl ! //@<< Setze Zauber >> ! //@+node:<< Setze Zauber >> ! void PersonHandlerGenerator::Setze(Zauberfertigkeiten zauber, bool reGen) { ! for (int i = 0; i < 2; ++i) { ! if ((i==0)&&(reGen)) continue; ! Zauberfertigkeiten& zref = (i==1) ? zauberbasis_ : P()->zauberfertigkeiten_; ! for (Zauberfertigkeiten::iterator z = zauber.begin(); z != zauber.end(); ++z) ! if (zref.Existiert(z->first)) ! zref.Zeige(z->first)->Wert(zref.Zeige(z->first)->Wert()+z->second.Wert()); ! else ! zref.FuegeEin(z->second); ! } ! } // Setze (zauber) ! //@nonl ! //@-node:<< Setze Zauber >> //@nl //@<< SpracheOderSchrift >> *************** *** 854,857 **** --- 868,899 ---- //@-node:<< SpracheOderSchrift >> //@nl + //@<< ZauberAktivierbar >> + //@+node:<< ZauberAktivierbar >> + bool PersonHandlerGenerator::ZauberAktivierbar() { + if (!(AktivierteZauber() < AktivierteZauberMax())) return false; + return PersonHandler::ZauberAktivierbar(); + } // TalentAktivierbar + //@nonl + //@-node:<< ZauberAktivierbar >> + //@nl + //@<< AktivierbareZauber >> + //@+node:<< AktivierbareZauber >> + Zauberfertigkeiten PersonHandlerGenerator::AktivierbareZauber() { + Zauberfertigkeiten zauber; + for (DSA::ZauberDefinitionen::const_iterator z = DSA::zaubersprueche()->begin(); z != DSA::zaubersprueche()->end(); ++z) { + StringListe reps = z->second.VerfuegbareRepraesentationen(); + for (StringListe::const_iterator r = reps.begin(); r != reps.end(); r++) { + Zauberfertigkeit neu; + neu.Zauberspruch(z->first); + neu.Repraesentation(*r); + if (!P()->zauberfertigkeiten_.Existiert(neu.ID())) + zauber.FuegeEin(neu); + } + } + return zauber; // TODO Aktivierungskosten checken? + } + //@nonl + //@-node:<< AktivierbareZauber >> + //@nl //@<< TalentAktivierbar >> //@+node:<< TalentAktivierbar >> *************** *** 912,924 **** std::string temptal = talent; std::pair<bool, bool> rv = SpracheOderSchrift(temptal); ! if (!rv.first) { Log::Error("PersonHandlerGenerator::AktivierungsKosten - Talent " + talent + " nicht erkannt."); return 0; } ! if (rv.second) { ! if (sprachen()->Existiert(temptal)) ! return regeln()->Aktivierungsfaktor(sprachen()->Zeige(temptal)->SKTSpalte_())+0.5; ! } else { ! if (schriften()->Existiert(temptal)) ! return regeln()->Aktivierungsfaktor(schriften()->Zeige(temptal)->SKTSpalte_())+0.5; } ! Log::Error("PersonHandlerGenerator::AktivierungsKosten - Talent " + talent + " nicht erkannt (2)."); return 0; } // AktivierungsKosten --- 954,980 ---- std::string temptal = talent; std::pair<bool, bool> rv = SpracheOderSchrift(temptal); ! if (rv.first) ! if (rv.second) { ! if (sprachen()->Existiert(temptal)) ! return regeln()->Aktivierungsfaktor(sprachen()->Zeige(temptal)->SKTSpalte_())+0.5; ! } else { ! if (schriften()->Existiert(temptal)) ! return regeln()->Aktivierungsfaktor(schriften()->Zeige(temptal)->SKTSpalte_())+0.5; ! } ! ! if ((talent.find("(")<talent.size())&&(talent.find(")")<talent.size())) { ! std::string rep = talent.substr(talent.find_last_of("(")+1, talent.find_last_of(")")-(talent.find_last_of("(")+1)); ! std::string spruch = talent.substr(0, talent.find_last_of("(")-1); ! ! if (zaubersprueche()->Existiert(spruch)) { ! Zauberfertigkeit neu; ! neu.Zauberspruch(spruch); ! neu.Repraesentation(rep); ! neu.Bezugsperson(P()); ! return regeln()->Aktivierungsfaktor(neu.Lernschwierigkeit()); ! } } ! ! Log::Error("PersonHandlerGenerator::AktivierungsKosten - Talent " + talent + " nicht erkannt."); return 0; } // AktivierungsKosten *************** *** 943,961 **** std::string temptal = talent; std::pair<bool, bool> rv = SpracheOderSchrift(temptal); ! if (!rv.first) { Log::Error("PersonHandlerGenerator::Aktiviere - unbekanntes Objekt " + talent); return; } ! if (rv.second) { ! if (sprachen()->Existiert(temptal)) { ! Sprache neu(sprachen()->Zeige(temptal)); ! P()->sprachen_.FuegeEin(neu); ! return; } ! } else { ! if (schriften()->Existiert(temptal)) { ! Schrift neu(schriften()->Zeige(temptal)); ! P()->schriften_.FuegeEin(neu); ! return; } } ! Log::Error("PersonHandlerGenerator::Aktiviere - unbekanntes Objekt " + talent + "(2)"); } // Aktiviere //@nonl --- 999,1032 ---- std::string temptal = talent; std::pair<bool, bool> rv = SpracheOderSchrift(temptal); ! if (rv.first) ! if (rv.second) { ! if (sprachen()->Existiert(temptal)) { ! Sprache neu(sprachen()->Zeige(temptal)); ! P()->sprachen_.FuegeEin(neu); ! return; ! } ! } else { ! if (schriften()->Existiert(temptal)) { ! Schrift neu(schriften()->Zeige(temptal)); ! P()->schriften_.FuegeEin(neu); ! return; ! } } ! ! if ((talent.find("(")<talent.size())&&(talent.find(")")<talent.size())) { ! std::string rep = talent.substr(talent.find_last_of("(")+1, talent.find_last_of(")")-(talent.find_last_of("(")+1)); ! std::string spruch = talent.substr(0, talent.find_last_of("(")-1); ! ! if (zaubersprueche()->Existiert(spruch)) { ! Zauberfertigkeit neu; ! neu.Zauberspruch(spruch); ! neu.Repraesentation(rep); ! neu.Bezugsperson(P()); ! P()->zauberfertigkeiten_.FuegeEin(neu); ! return; } } ! ! Log::Error("PersonHandlerGenerator::Aktiviere - unbekanntes Objekt " + talent); } // Aktiviere //@nonl *************** *** 1040,1044 **** //@-node:<< Sprachen und Schriften >> //@nl ! // wenn nicht bisher abgehandelt: return false; --- 1111,1134 ---- //@-node:<< Sprachen und Schriften >> //@nl ! //@ << Zauber >> ! //@+node:<< Zauber >> ! if (P()->zauberfertigkeiten_.Existiert(talent)) { ! ! // hindernde Unfaehigkeiten? TODO ! //if ((P()->charakteristika_.Existiert(_t("Unfähigkeit für") + " " + talent)) ! // ||(P()->charakteristika_.Existiert(_t("Unfähigkeit für") + " " + TalentgruppeString(P()->talente_.Zeige(talent)->Gruppe(), false)))) ! // return false; ! ! Zauberfertigkeit* z = P()->zauberfertigkeiten_.Zeige(talent); ! ! // genug TGP? ! if (regeln()->SKT(z->Lernschwierigkeit(), z->Wert()+1) ! > (TalentGPMax()-TalentGP())) return false; ! ! return (z->Wert() < z->Maximalwert()); ! } ! //@nonl ! //@-node:<< Zauber >> ! //@nl // wenn nicht bisher abgehandelt: return false; *************** *** 1072,1075 **** --- 1162,1169 ---- } } + if (P()->zauberfertigkeiten_.Existiert(talent)) { + if (!zauberbasis_.Existiert(talent)) return true; + return (P()->zauberfertigkeiten_.Zeige(talent)->Wert() > zauberbasis_.Zeige(talent)->Wert()); + } return false; *************** *** 1104,1107 **** --- 1198,1206 ---- } } + if (P()->zauberfertigkeiten_.Existiert(talent)) { + Zauberfertigkeit* z = P()->zauberfertigkeiten_.Zeige(talent); + z->Wert(z->Wert()+1); + return; + } } // TalentSteigern //@nonl *************** *** 1154,1157 **** --- 1253,1266 ---- } } + if (P()->zauberfertigkeiten_.Existiert(talent)) { + if (!zauberbasis_.Existiert(talent)) + if (P()->zauberfertigkeiten_.Zeige(talent)->Wert() == 0) { + P()->zauberfertigkeiten_.Loesche(talent); + return; + } + P()->zauberfertigkeiten_.Zeige(talent)->Wert(P()->zauberfertigkeiten_.Zeige(talent)->Wert()-1); + return; + } + } // TalentSenken //@nonl *************** *** 1249,1252 **** --- 1358,1380 ---- //@-node:<< FuegeHinzu Charakteristika >> //@nl + //@<< Entferne Charakteristika >> + //@+node:<< Entferne Charakteristika >> + /* void PersonHandlerGenerator::Entferne(Charakteristika charakteristika) { + for (Charakteristika::iterator c = charakteristika.begin(); c != charakteristika.end(); ++c) { + P()->charakteristika_.Loesche(c->first); + charakteristikabasis_.Loesche(c->first); + } + } // Entferne (charakteristika) + + void PersonHandlerGenerator::Setze(Charakteristika charakteristika) { + for (Charakteristika::iterator c = charakteristika.begin(); c != charakteristika.end(); ++c) { + P()->charakteristika_.FuegeEin(c->second); + charakteristikabasis_.FuegeEin(c->second); + } + } // Setze (charakteristika) + */ + //@nonl + //@-node:<< Entferne Charakteristika >> + //@nl //@<< CharakteristikumSteigerbar >> //@+node:<< CharakteristikumSteigerbar >> *************** *** 2147,2150 **** --- 2275,2302 ---- //@-node:<< AktivierteTalente >> //@nl + //@<< AktivierteZauber >> + //@+node:<< Aktivierte Zauber >> + int PersonHandlerGenerator::AktivierteZauber() { + int anzahl = 0; + for (Zauberfertigkeiten::iterator z = P()->zauberfertigkeiten_.begin(); z != P()->zauberfertigkeiten_.end(); ++z) + if (!zauberbasis_.Existiert(z->first)) + ++anzahl; + return anzahl; + } //AktivierteZauber + //@nonl + //@-node:<< Aktivierte Zauber >> + //@nl + //@<< AktivierteZauberMax >> + //@+node:<< Aktivierte Zauber Max >> + int PersonHandlerGenerator::AktivierteZauberMax() { + if (P()->charakteristika_.Existiert(_t("Vollzauberer"))) + return 10; // TODO Konstante + if (P()->charakteristika_.Existiert(_t("Halbzauberer"))) + return 5; // TODO Konstante + return 0; + } + //@nonl + //@-node:<< Aktivierte Zauber Max >> + //@nl //@<< TalentGP >> //@+node:<< TalentGP >> *************** *** 2191,2194 **** --- 2343,2356 ---- tgp += regeln()->SKT(sch->second.SKTSpalte_(), ++basiswert); } + for (Zauberfertigkeiten::iterator z = P()->zauberfertigkeiten_.begin(); z != P()->zauberfertigkeiten_.end(); ++z) { + int basiswert = 0; + if (!zauberbasis_.Existiert(z->first)) + tgp += AktivierungsKosten(z->first); + else + basiswert = zauberbasis_.Zeige(z->first)->Wert(); + int zielwert = P()->zauberfertigkeiten_.Zeige(z->first)->Wert(); + while (zielwert > basiswert) + tgp += regeln()->SKT(z->second.Lernschwierigkeit(), ++basiswert); + } Sonderfertigkeiten::iterator sf; *************** *** 2317,2320 **** --- 2479,2485 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.43 2004/04/09 22:25:50 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.42 2004/04/06 21:24:30 vrandezo // GP werden bei Heldenerschaffung aufgeschlüsselt (Twelwan) Index: Zauber.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Zauber.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Zauber.h 28 Nov 2003 16:46:16 -0000 1.7 --- Zauber.h 9 Apr 2004 22:25:50 -0000 1.8 *************** *** 1,18 **** //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file Zauber.h ! ////////////////////////////////////////////////////////////////////// ! // // Zauber.h: Implementierung für Zauber ! // // $Revision$ // $Date$ ! // ! // Der Inhalt dieser Datei fällt unter die in license.txt gegebene Lizenz. ! // ! ////////////////////////////////////////////////////////////////////// #if !defined(ZAUBER_H) #define ZAUBER_H #include "NDSABasis.h" #include "Menge.h" --- 1,32 ---- //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file Zauber.h ! //@+at // Zauber.h: Implementierung für Zauber ! // // $Revision$ // $Date$ ! //@-at ! //@@c ! ! //@<< header >> ! //@+node:<< header >> ! //@+at ! // The content of this file is subject to the license ! // given in license.txt ! // ! //@-at ! //@@c ! ! #ifdef MSVC ! #pragma warning(disable:4786 4503) ! #endif ! //@-node:<< header >> ! //@nl #if !defined(ZAUBER_H) #define ZAUBER_H + //@<< includes >> + //@+node:<< includes >> #include "NDSABasis.h" #include "Menge.h" *************** *** 20,23 **** --- 34,40 ---- #include "Texte.h" #include "Regeln.h" + //@nonl + //@-node:<< includes >> + //@nl namespace DSA { *************** *** 30,56 **** std::string RepraesentationKurz(const std::string& lang); std::string RepraesentationLang(const std::string& kurz); ! ! class Verbreitung { ! public: ! Verbreitung(const std::string& id = "", int wert=1, const std::string& repraesentation = "") : id_(id), wert_(wert), repraesentation_((repraesentation=="")?id:repraesentation) {} static std::string Klasse() { return _t("Verbreitung"); } static std::string Klassen() { return _t("Verbreitungen"); } ! void ID(const std::string& id) { id_ = id; repraesentation_ = id; } std::string ID() const { return id_; } ! void Wert(int wert) { wert_ = wert; } ! int Wert() const { return wert_; } void Repraesentation(const std::string& rep) { repraesentation_ = rep; } std::string Repraesentation() const { return repraesentation_; } ! bool operator!=(const Verbreitung& other) const { return !operator==(other); } bool operator==(const Verbreitung& other) const { return ((id_==other.id_) ! && (wert_==other.wert_) ! && (repraesentation_==other.repraesentation_)); } std::string Text() const; ! int Lese(PersistenzManager* pm, const std::string& id = ""); int Schreibe(PersistenzManager* pm) const; --- 47,75 ---- std::string RepraesentationKurz(const std::string& lang); std::string RepraesentationLang(const std::string& kurz); ! ! //@ << class Verbreitung >> ! //@+node:<< class Verbreitung >> ! class Verbreitung { ! public: ! Verbreitung(const std::string& id = "", int wert=1, const std::string& repraesentation = "") : id_(id), wert_(wert), repraesentation_((repraesentation=="")?id:repraesentation) {} static std::string Klasse() { return _t("Verbreitung"); } static std::string Klassen() { return _t("Verbreitungen"); } ! void ID(const std::string& id) { id_ = id; repraesentation_ = id; } std::string ID() const { return id_; } ! void Wert(int wert) { wert_ = wert; } ! int Wert() const { return wert_; } void Repraesentation(const std::string& rep) { repraesentation_ = rep; } std::string Repraesentation() const { return repraesentation_; } ! bool operator!=(const Verbreitung& other) const { return !operator==(other); } bool operator==(const Verbreitung& other) const { return ((id_==other.id_) ! && (wert_==other.wert_) ! && (repraesentation_==other.repraesentation_)); } std::string Text() const; ! int Lese(PersistenzManager* pm, const std::string& id = ""); int Schreibe(PersistenzManager* pm) const; *************** *** 58,70 **** static int IDListe(PersistenzManager* pm, StringListe* liste); ! private: ! std::string id_; ! int wert_; ! std::string repraesentation_; ! }; // Verbreitung ! class Verbreitungen : public Menge<Verbreitung> { }; // Verbreitungen ! class ZauberDefinition { public: --- 77,94 ---- static int IDListe(PersistenzManager* pm, StringListe* liste); ! private: ! std::string id_; ! int wert_; ! std::string repraesentation_; ! }; // Verbreitung ! //@nonl ! //@-node:<< class Verbreitung >> ! //@nl ! class Verbreitungen : public Menge<Verbreitung> { }; // Verbreitungen ! ! //@ << class ZauberDefinition >> ! //@+node:<< class ZauberDefinition >> class ZauberDefinition { public: *************** *** 72,85 **** static std::string Klasse() { return _t("Zauber"); } static std::string Klassen() { return _t("Zaubersprüche"); } ! void ID(const std::string& id) { id_ = id; } std::string ID() const { return id_; } void Eigenschaften(Eigenschaftsart, Eigenschaftsart, Eigenschaftsart); Eigenschaftsart Eigenschaft(int) const; ! void Komplexitaet(SKTSpalte k) { komplexitaet_ = k; } SKTSpalte Komplexitaet() const { return komplexitaet_; } ! void Beschreibung(const std::string& beschreibung) { beschreibung_ = beschreibung; } ! std::string Beschreibung() const { return beschreibung_; } ! bool operator!=(const ZauberDefinition& other) const { return !operator==(other); } bool operator==(const ZauberDefinition& other) const --- 96,111 ---- static std::string Klasse() { return _t("Zauber"); } static std::string Klassen() { return _t("Zaubersprüche"); } ! void ID(const std::string& id) { id_ = id; } std::string ID() const { return id_; } void Eigenschaften(Eigenschaftsart, Eigenschaftsart, Eigenschaftsart); Eigenschaftsart Eigenschaft(int) const; ! void Komplexitaet(SKTSpalte k) { komplexitaet_ = k; } SKTSpalte Komplexitaet() const { return komplexitaet_; } ! void Beschreibung(const std::string& beschreibung) { beschreibung_ = beschreibung; } ! std::string Beschreibung() const { return beschreibung_; } ! ! StringListe VerfuegbareRepraesentationen() const; ! bool operator!=(const ZauberDefinition& other) const { return !operator==(other); } bool operator==(const ZauberDefinition& other) const *************** *** 88,101 **** && (eigenschaft_[1]==other.eigenschaft_[1]) && (eigenschaft_[2]==other.eigenschaft_[2]) ! && (varianten_==other.varianten_) ! && (verbreitung_==other.verbreitung_) ! && (komplexitaet_==other.komplexitaet_) ! && (beschreibung_==other.beschreibung_)); } // TODO AnzahlEigenschaftenproTalenprobe ist hier fest eingegeben std::string ProbeText(const std::string& trennzeichen = "/") const; ! // std::string Text() const; ! int Lese(PersistenzManager* pm, const std::string& id = ""); int Schreibe(PersistenzManager* pm) const; --- 114,127 ---- && (eigenschaft_[1]==other.eigenschaft_[1]) && (eigenschaft_[2]==other.eigenschaft_[2]) ! && (varianten_==other.varianten_) ! && (verbreitung_==other.verbreitung_) ! && (komplexitaet_==other.komplexitaet_) ! && (beschreibung_==other.beschreibung_)); } // TODO AnzahlEigenschaftenproTalenprobe ist hier fest eingegeben std::string ProbeText(const std::string& trennzeichen = "/") const; ! // std::string Text() const; ! int Lese(PersistenzManager* pm, const std::string& id = ""); int Schreibe(PersistenzManager* pm) const; *************** *** 103,162 **** static int IDListe(PersistenzManager* pm, StringListe* liste); ! StringListe varianten_; ! StringListe merkmale_; ! Verbreitungen verbreitung_; private: std::string id_; Eigenschaftsart eigenschaft_[EigenschaftenProTalentprobe]; ! SKTSpalte komplexitaet_; ! std::string beschreibung_; }; // ZauberDefinition ! class ZauberDefinitionen : public Menge<ZauberDefinition> { }; // ZauberDefinitionen ZauberDefinitionen* zaubersprueche(); ! ! class Zauber { public: ! Zauber(const std::string& id = "", int wert = 0) : wert_(wert), id_(id) {} ! Zauber(const ZauberDefinition& def, int wert = 0) : wert_(wert), id_(def.ID()) {} ! Zauber(const ZauberDefinition* const def, int wert = 0) : wert_(wert), id_(def->ID()) {} ! ! static std::string Klasse() { return _t("Zauber"); } ! static std::string Klassen() { return _t("Zaubersprüche"); } ! ! void ID(const std::string& id) { id_ = id; } ! std::string ID() const { return id_; } ! void Wert(int wert) { wert_ = wert; } ! int Wert() const { return wert_; } ! ! std::string ErsetzeTag(const std::string& tag) const; ! ! const ZauberDefinition* Definition() const; ! ! bool operator==(const Zauber& other) const ! { return ((id_==other.id_) && (wert_==other.wert_)); } ! bool operator!=(const Zauber& other) const { return !operator==(other); } ! ! Eigenschaftsart Eigenschaft(int e) const { return Definition()->Eigenschaft(e); } ! SKTSpalte Komplexitaet() const { return Definition()->Komplexitaet(); } ! std::string Text() const; ! ! int Lese(PersistenzManager* pm, const std::string& id = ""); ! int Schreibe(PersistenzManager* pm) const; ! int Pruefe() const; ! static int IDListe(PersistenzManager* pm, StringListe* liste); private: ! std::string id_; ! int wert_; ! }; // Zauber ! ! typedef Menge<Zauber> Zauberspruche; ! //class Zauberspruche : public Menge<Zauber> { //}; // Zauberspruche ! //class ZauberAuswahl : public AuswahlMenge<Zauber> { //}; // ZauberAuswahl --- 129,225 ---- static int IDListe(PersistenzManager* pm, StringListe* liste); ! StringListe varianten_; ! StringListe merkmale_; ! Verbreitungen verbreitung_; private: std::string id_; Eigenschaftsart eigenschaft_[EigenschaftenProTalentprobe]; ! SKTSpalte komplexitaet_; ! std::string beschreibung_; }; // ZauberDefinition ! //@nonl ! //@-node:<< class ZauberDefinition >> ! //@nl ! class ZauberDefinitionen : public Menge<ZauberDefinition> { }; // ZauberDefinitionen ZauberDefinitionen* zaubersprueche(); ! ! class Person; ! ! //@ << class Zauberfertigkeit >> ! //@+node:<< class Zauberfertigkeit >> ! class Zauberfertigkeit { public: ! Zauberfertigkeit() : wert_(0), person_(0) {}; ! //@+at ! // Zauberfertigkeit(const std::string& id = "", const ! // std::string& repraesentation = "", int wert = 0) : ! // wert_(wert), repraesentation_(repraesentation), ! // id_(id) {} ! // Zauberfertigkeit(const ZauberDefinition& def, const ! // std::string& repraesentation = "", int wert = 0) : ! // wert_(wert), repraesentation_(repraesentation), ! // id_(def.ID()) {} ! // Zauberfertigkeit(const ZauberDefinition* const def, ! // const std::string& repraesentation = "", int wert = ! // 0) : wert_(wert), repraesentation_(repraesentation), ! // id_(def->ID()) {} ! //@-at ! //@@c ! void Bezugsperson(Person* p) { person_=p; } ! ! static std::string Klasse() { return _t("Zauberfertigkeit"); } ! static std::string Klassen() { return _t("Zauberfertigkeiten"); } ! ! std::string ID() const { return zauberspruch_ + " (" + repraesentation_ + ")"; } ! void Zauberspruch(const std::string& zauberspruch) { zauberspruch_ = zauberspruch; } ! std::string Zauberspruch() const { return zauberspruch_; } ! void Repraesentation(const std::string& repraesentation) { repraesentation_ = repraesentation; } ! std::string Repraesentation() const { return repraesentation_; } ! void Wert(int wert) { wert_ = wert; } ! int Wert() const { return wert_; } ! int Maximalwert() const; ! ! std::string ErsetzeTag(const std::string& tag) const; ! ! const ZauberDefinition* Definition() const; ! ! bool operator==(const Zauberfertigkeit& other) const ! { return ((zauberspruch_==other.zauberspruch_) ! && (repraesentation_==other.repraesentation_) ! && (wert_==other.wert_)); } ! bool operator!=(const Zauberfertigkeit& other) const { return !operator==(other); } ! ! Eigenschaftsart Eigenschaft(int e) const { return Definition()->Eigenschaft(e); } ! SKTSpalte Lernschwierigkeit() const; ! ! enum TextStil { ! RepKurz = 1, ! ZeigeRep = 2, ! RepNichtWennStandard = 4 ! }; ! std::string Text(int stil = RepKurz | ZeigeRep | RepNichtWennStandard) const; ! ! int Lese(PersistenzManager* pm, const std::string& id = ""); ! int Schreibe(PersistenzManager* pm) const; ! int Pruefe() const; ! static int IDListe(PersistenzManager* pm, StringListe* liste); private: ! std::string zauberspruch_; ! std::string repraesentation_; ! int wert_; ! Person* person_; ! }; // Zauberfertigkeit ! //@-node:<< class Zauberfertigkeit >> ! //@nl ! ! typedef Menge<Zauberfertigkeit> Zauberfertigkeiten; ! //class Zauberspruche : public Menge<Zauberfertigkeit> { //}; // Zauberspruche ! //class ZauberAuswahl : public AuswahlMenge<Zauberfertigkeit> { //}; // ZauberAuswahl *************** *** 165,169 **** --- 228,237 ---- #endif // !defined(ZAUBER_H) + //@<< Version History >> + //@+node:<< Version History >> // $Log$ + // Revision 1.8 2004/04/09 22:25:50 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.7 2003/11/28 16:46:16 vrandezo // Zeilenvorlauf am Dateiende (Warnung bei gcc) *************** *** 189,192 **** --- 257,264 ---- // Zauber eingefügt: Probe, Beschreibung // + //@nonl + //@-node:<< Version History >> + //@nl + //@nonl //@-node:@file Zauber.h //@-leo Index: Person.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Person.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** Person.cpp 28 Nov 2003 23:22:49 -0000 1.20 --- Person.cpp 9 Apr 2004 22:25:50 -0000 1.21 *************** *** 30,34 **** #include "PersistenzManager.h" #include "Wuerfel.h" ! //@nonl //@-node:<< includes >> //@nl --- 30,37 ---- #include "PersistenzManager.h" #include "Wuerfel.h" ! ! #include "PersistenzManager.h" ! #include <numeric> ! #include <algorithm> //@-node:<< includes >> //@nl *************** *** 313,316 **** --- 316,321 ---- StringListe verbilligteSonderfertigkeiten; rv += pm->Lese(verbilligteSonderfertigkeiten, _t("Sonderfertigkeit"), _t("Sonderfertigkeiten"), _t("verbilligte")); + Zauberfertigkeiten zauberfertigkeiten; + rv += zauberfertigkeiten.Lese(pm); std::string beschreibung; if (pm->Existiert(_t("Beschreibung"))) *************** *** 346,349 **** --- 351,355 ---- sonderfertigkeiten_ = sonderfertigkeiten; verbilligteSonderfertigkeiten_ = verbilligteSonderfertigkeiten; + zauberfertigkeiten_ = zauberfertigkeiten; Beschreibung(beschreibung); } *************** *** 387,390 **** --- 393,397 ---- rv += sonderfertigkeiten_.Schreibe(pm); rv += pm->Schreibe(verbilligteSonderfertigkeiten_, _t("Sonderfertigkeit"), _t("Sonderfertigkeiten"), _t("verbilligte")); + rv += zauberfertigkeiten_.Schreibe(pm); if (Beschreibung()!="") *************** *** 445,448 **** --- 452,458 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.21 2004/04/09 22:25:50 vrandezo + // Zauberfertigkeiten fuer Personen eintragbar + // // Revision 1.20 2003/11/28 23:22:49 vrandezo // speicherbare konkrete RKP Index: Zauber.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/Zauber.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Zauber.cpp 29 Jan 2004 09:06:20 -0000 1.7 --- Zauber.cpp 9 Apr 2004 22:25:50 -0000 1.8 *************** *** 1,21 **** //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file Zauber.cpp ! ////////////////////////////////////////////////////////////////////// ! // // Zauber.cpp: Implementierung von Zaubern. ! // // $Revision$ // $Date$ ! // ! // Der Inhalt dieser Datei fällt unter die in license.txt gegebene Lizenz. ! // ! ////////////////////////////////////////////////////////////////////// #ifdef MSVC #pragma warning(disable:4786 4503) #endif ! ! //@<< Zauber #includes >> ! //@+node:<< Zauber #includes >> #include "Zauber.h" --- 1,28 ---- //@+leo-ver=4-encoding=iso-8859-1. //@+node:@file Zauber.cpp ! //@+at // Zauber.cpp: Implementierung von Zaubern. ! // // $Revision$ // $Date$ ! //@-at ! //@@c ! ! //@<< header >> ! //@+node:<< header >> ! //@+at ! // The content of this file is subject to the license ! // given in license.txt ! // ! //@-at ! //@@c #ifdef MSVC #pragma warning(disable:4786 4503) #endif ! //@-node:<< header >> ! //@nl ! //@<< includes >> ! //@+node:<< includes >> #include "Zauber.h" *************** *** 23,203 **** #include "Log.h" #include "NDSAUtil.h" ! //@-node:<< Zauber #includes >> //@nl ! #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #endif ! // Laden/Speichern ! ! #include "PersistenzManager.h" ! #include <numeric> ! #include <algorithm> namespace DSA { ! ! StringListe const * const Merkmale() { ! static StringListe merkmale_; ! if (merkmale_.size()==0) { ! merkmale_.push_back(_t("Antimagie")); // TODO Hardcoded ! merkmale_.push_back(_t("Beschwörung")); ! merkmale_.push_back(_t("Dämonisch")); ! merkmale_.push_back(_t("Dämonisch (Blakharaz)")); // TODO Domänen hardcoded ! merkmale_.push_back(_t("Dämonisch (Belhalhar)")); ! merkmale_.push_back(_t("Dämonisch (Charyptoroth)")); ! merkmale_.push_back(_t("Dämonisch (Lolgramoth)")); ! merkmale_.push_back(_t("Dämonisch (Thargunitoth)")); ! merkmale_.push_back(_t("Dämonisch (Amazeroth)")); ! merkmale_.push_back(_t("Dämonisch (Nagrach)")); ! merkmale_.push_back(_t("Dämonisch (Asfaloth)")); ! merkmale_.push_back(_t("Dämonisch (Tasfarelel)")); ! merkmale_.push_back(_t("Dämonisch (Mishkhara)")); ! merkmale_.push_back(_t("Dämonisch (Agrimoth)")); ! merkmale_.push_back(_t("Dämonisch (Belkelel)")); ! merkmale_.push_back(_t("Eigenschaften")); ! merkmale_.push_back(_t("Einfluss")); ! merkmale_.push_back(_t("Elementar")); ! merkmale_.push_back(_t("Elementar (Feuer)")); // TODO Elemente hardcoded ! merkmale_.push_back(_t("Elementar (Wasser)")); ! merkmale_.push_back(_t("Elementar (Luft)")); ! merkmale_.push_back(_t("Elementar (Erz)")); ! merkmale_.push_back(_t("Elementar (Humus)")); ! merkmale_.push_back(_t("Elementar (Eis)")); ! merkmale_.push_back(_t("Form")); ! merkmale_.push_back(_t("Geisterwesen")); ! merkmale_.push_back(_t("Heilung")); ! merkmale_.push_back(_t("Hellsicht")); ! merkmale_.push_back(_t("Herbeirufung")); ! merkmale_.push_back(_t("Herrschaft")); ! merkmale_.push_back(_t("Illusion")); ! merkmale_.push_back(_t("Kraft")); ! merkmale_.push_back(_t("Limbus")); ! merkmale_.push_back(_t("Metamagie")); ! merkmale_.push_back(_t("Objekt")); ! merkmale_.push_back(_t("Schaden")); ! merkmale_.push_back(_t("Telekinese")); ! merkmale_.push_back(_t("Temporal")); ! merkmale_.push_back(_t("Umwelt")); ! merkmale_.push_back(_t("Verständigung")); ! } ! return &merkmale_; ! } // Merkmale ! ! StringListe const * const Repraesentationen(bool lang) { ! static StringListe lang_; ! static StringListe kurz_; ! if (lang_.size()==0) { ! lang_.push_back(_t("Gildenmagier")); ! lang_.push_back(_t("Elfen")); ! lang_.push_back(_t("Druiden")); ! lang_.push_back(_t("Hexen")); ! lang_.push_back(_t("Geoden")); ! lang_.push_back(_t("Schelme")); ! lang_.push_back(_t("Scharlatane")); ! lang_.push_back(_t("Borbaradianer")); ! lang_.push_back(_t("Achaz-Kristallomanten")); ! for (StringListe::const_iterator sli = lang_.begin(); sli != lang_.end(); ++sli) ! kurz_.push_back(RepraesentationKurz(*sli)); ! } ! if (lang) ! return &lang_; ! else ! return &kurz_; ! } // Repraesentationen ! ! std::string RepraesentationKurz(const std::string& lang) { ! if (lang==_t("Gildenmagier")) return _t("Mag"); ! if (lang==_t("Elfen")) return _t("Elf"); ! if (lang==_t("Druiden")) return _t("Dru"); ! if (lang==_t("Hexen")) return _t("Hex"); ! if (lang==_t("Geoden")) return _t("Geo"); ! if (lang==_t("Schelme")) return _t("Sch"); ! if (lang==_t("Scharlatane")) return _t("Srl"); ! if (lang==_t("Borbaradianer")) return _t("Bor"); ! if (lang==_t("Achaz-Kristallomanten")) return _t("Ach"); ! Log::Error(_t("In Zauber.cpp: DSA::RepraesentationKurz - unbekannte Repräsentation")); ! return lang; ! } // RepraesentationKurz ! ! std::string RepraesentationLang(const std::string& kurz) { ! if (kurz==_t("Mag")) return _t("Gildenmagier"); ! if (kurz==_t("Elf")) return _t("Elfen"); ! if (kurz==_t("Dru")) return _t("Druiden"); ! if (kurz==_t("Hex")) return _t("Hexen"); ! if (kurz==_t("Geo")) return _t("Geoden"); ! if (kurz==_t("Sch")) return _t("Schelme"); ! if (kurz==_t("Srl")) return _t("Scharlatane"); ! if (kurz==_t("Bor")) return _t("Borbaradianer"); ! if (kurz==_t("Ach")) return _t("Achaz-Kristallomanten"); ! Log::Error(_t("In Zauber.cpp: DSA::RepraesentationKurz - unbekannte Repräsentation")); ! return kurz; ! } // RepraesentationLang ! ! std::string Verbreitung::Text() const { ! std::string rv = RepraesentationKurz(ID()) + " "; ! if (Repraesentation()!=ID()) ! rv += "(" + RepraesentationKurz(Repraesentation()) + ")" + " "; ! rv += strings::int2sStr(Wert()); ! return rv; ! } // Text ! ! int Verbreitung::Lese(PersistenzManager* pm, const std::string& id ) { std::string geleseneID = id; int rv = pm->OeffneZumLesen(Klasse(), geleseneID); int wert; rv += pm->Lese(_t("Wert"), wert); ! std::string repraesentation = geleseneID; ! if (pm->Existiert(_t("Repräsentation"))) ! rv += pm->Lese(_t("Repräsentation"), repraesentation); ! if (!rv) { ID(geleseneID); ! Wert(wert); ! Repraesentation(repraesentation); } rv += pm->SchliesseNachLesen(); return rv; // TODO ! } // Lese ! ! int Verbreitung::Schreibe(PersistenzManager* pm) const { int rv = pm->OeffneZumSchreiben(Klasse(), id_); rv += pm->Schreibe(_t("Wert"), Wert()); ! if (Repraesentation()!=ID()) ! rv += pm->Schreibe(_t("Repräsentation"), Repraesentation()); rv += pm->SchliesseNachSchreiben(); return rv; ! } // Schreibe ! ! int Verbreitung::Pruefe() const { ! int rv = 0; ! const StringListe* rep = Repraesentationen(); ! if (std::find(rep->begin(), rep->end(), ID())==rep->end()) { ! Log::Info(_t("Unbekannte Verbreitung") + " "); ! ++rv; ! } ! if ((Wert()<1)||(Wert()>7)) { // TODO Konstanten ! Log::Info(_t("Verbreitung außerhalb der erlaubten Werte") + " "); ! ++rv; ! } ! if (std::find(rep->begin(), rep->end(), Repraesentation())==rep->end()) { ! Log::Info(_t("Unbekannte Repräsentation") + " "); ! ++rv; ! } ! if (rv!=0) Log::Info(_t("in") + " " + Klasse() + " " + ID()); return rv; ! } // Pruefe ! ! int Verbreitung::IDListe(PersistenzManager* pm, StringListe* liste) { return pm->IDListe(Klasse(), liste); // TODO Prüfen ! } // IDListe ! ! void ZauberDefinition::Eigenschaften(Eigenschaftsart e1, Eigenschaftsart e2, Eigenschaftsart e3) { eigenschaft_[0] = e1; eigenschaft_[1] = e2; eigenschaft_[2] = e3; } // Eigenschaften ! Eigenschaftsart ZauberDefinition::Eigenschaft(int i) const { if (i < 0) return unbekannteEigenschaft; --- 30,257 ---- #include "Log.h" #include "NDSAUtil.h" ! //@-node:<< includes >> //@nl ! //@<< filename >> ! //@+node:<< filename >> #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; + //#define new DEBUG_NEW #endif ! //@-node:<< filename >> ! //@nl namespace DSA { ! //@ << Merkmale >> ! //@+node:<< Merkmale >> ! StringListe const * const Merkmale() { ! static StringListe merkmale_; ! if (merkmale_.size()==0) { ! merkmale_.push_back(_t("Antimagie")); // TODO Hardcoded ! merkmale_.push_back(_t("Beschwörung")); ! merkmale_.push_back(_t("Dämonisch")); ! merkmale_.push_back(_t("Dämonisch (Blakharaz)")); // TODO Domänen hardcoded ! merkmale_.push_back(_t("Dämonisch (Belhalhar)")); ! merkmale_.push_back(_t("Dämonisch (Charyptoroth)")); ! merkmale_.push_back(_t("Dämonisch (Lolgramoth)")); ! merkmale_.push_back(_t("Dämonisch (Thargunitoth)")); ! merkmale_.push_back(_t("Dämonisch (Amazeroth)")); ! merkmale_.push_back(_t("Dämonisch (Nagrach)")); ! merkmale_.push_back(_t("Dämonisch (Asfaloth)")); ! merkmale_.push_back(_t("Dämonisch (Tasfarelel)")); ! merkmale_.push_back(_t("Dämonisch (Mishkhara)")); ! merkmale_.push_back(_t("Dämonisch (Agrimoth)")); ! merkmale_.push_back(_t("Dämonisch (Belkelel)")); ! merkmale_.push_back(_t("Eigenschaften")); ! merkmale_.push_back(_t("Einfluss")); ! merkmale_.push_back(_t("Elementar")); ! merkmale_.push_back(_t("Elementar (Feuer)")); // TODO Elemente hardcoded ! merkmale_.push_back(_t("Elementar (Wasser)")); ! merkmale_.push_back(_t("Elementar (Luft)")); ! merkmale_.push_back(_t("Elementar (Erz)")); ! merkmale_.push_back(_t("Elementar (Humus)")); ! merkmale_.push_back(_t("Elementar (Eis)")); ! merkmale_.push_back(_t("Form")); ! merkmale_.push_back(_t("Geisterwesen")); ! merkmale_.push_back(_t("Heilung")); ! merkmale_.push_back(_t("Hellsicht")); ! merkmale_.push_back(_t("Herbeirufung")); ! merkmale_.push_back(_t("Herrschaft")); ! merkmale_.push_back(_t("Illusion")); ! merkmale_.push_back(_t("Kraft")); ! merkmale_.push_back(_t("Limbus")); ! merkmale_.push_back(_t("Metamagie")); ! merkmale_.push_back(_t("Objekt")); ! merkmale_.push_back(_t("Schaden")); ! merkmale_.push_back(_t("Telekinese")); ! merkmale_.push_back(_t("Temporal")); ! merkmale_.push_back(_t("Umwelt")); ! merkmale_.push_back(_t("Verständigung")); ! } ! return &merkmale_; ! } // Merkmale ! //@nonl ! //@-node:<< Merkmale >> ! //@nl ! //@ << Repraesentationen >> ! //@+node:<< Repraesentationen >> ! StringListe const * const Repraesentationen(bool lang) { ! static StringListe lang_; ! static StringListe kurz_; ! if (lang_.size()==0) { ! lang_.push_back(_t("Gildenmagier")); ! lang_.push_back(_t("Elfen")); ! lang_.push_back(_t("Druiden")); ! lang_.push_back(_t("Hexen")); ! lang_.push_back(_t("Geoden")); ! lang_.push_back(_t("Schelme")); ! lang_.push_back(_t("Scharlatane")); ! lang_.push_back(_t("Borbaradianer")); ! lang_.push_back(_t("Achaz-Kristallomanten")); ! for (StringListe::const_iterator sli = lang_.begin(); sli != lang_.end(); ++sli) ! kurz_.push_back(RepraesentationKurz(*sli)); ! } ! if (lang) ! return &lang_; ! else ! return &kurz_; ! } // Repraesentationen ! //@nonl ! //@-node:<< Repraesentationen >> ! //@nl ! //@ << RepraesentationKurz >> ! //@+node:<< RepraesentationKurz >> ! std::string RepraesentationKurz(const std::string& lang) { ! if (lang==_t("Gildenmagier")) return _t("Mag"); ! if (lang==_t("Elfen")) return _t("Elf"); ! if (lang==_t("Druiden")) return _t("Dru"); ! if (lang==_t("Hexen")) return _t("Hex"); ! if (lang==_t("Geoden")) return _t("Geo"); ! if (lang==_t("Schelme")) return _t("Sch"); ! if (lang==_t("Scharlatane")) return _t("Srl"); ! if (lang==_t("Borbaradianer")) return _t("Bor"); ! if (lang==_t("Achaz-Kristallomanten")) return _t("Ach"); ! Log::Error(_t("In Zauber.cpp: DSA::RepraesentationKurz - unbekannte Repräsentation")); ! return lang; ! } // RepraesentationKurz ! //@nonl ! //@-node:<< RepraesentationKurz >> ! //@nl ! //@ << RepraesentationLang >> ! //@+node:<< RepraesentationLang >> ! std::string RepraesentationLang(const std::string& kurz) { ! if (kurz==_t("Mag")) return _t("Gildenmagier"); ! if (kurz==_t("Elf")) return _t("Elfen"); ! if (kurz==_t("Dru")) return _t("Druiden"); ! if (kurz==_t("Hex")) return _t("Hexen"); ! if (kurz==_t("Geo")) return _t("Geoden"); ! if (kurz==_t("Sch")) return _t("Schelme"); ! if (kurz==_t("Srl")) return _t("Scharlatane"); ! if (kurz==_t("Bor")) return _t("Borbaradianer"); ! if (kurz==_t("Ach")) return _t("Achaz-Kristallomanten"); ! Log::Error(_t("In Zauber.cpp: DSA::RepraesentationKurz - unbekannte Repräsentation")); ! return kurz; ! } // RepraesentationLang ! //@nonl ! //@-node:<< RepraesentationLang >> ! //@nl ! //@ << Verbreitung >> ! //@+node:<< Verbreitung >> ! //@<< Text >> ! //@+node:<< Text >> ! std::string Verbreitung::Text() const { ! std::string rv = RepraesentationKurz(ID()) + " "; ! if (Repraesentation()!=ID()) ! rv += "(" + RepraesentationKurz(Repraesentation()) + ")" + " "; ! rv += strings::int2sStr(Wert()); ! return rv; ! } // Text ! //@nonl ! //@-node:<< Text >> ! //@nl ! //@<< Lese >> ! //@+node:<< Lese >> ! int Verbreitung::Lese(PersistenzManager* pm, const std::string& id ) { std::string geleseneID = id; int rv = pm->OeffneZumLesen(Klasse(), geleseneID); int wert; rv += pm->Lese(_t("Wert"), wert); ! std::string repraesentation = geleseneID; ! if (pm->Existiert(_t("Repräsentation"))) ! rv += pm->Lese(_t("Repräsentation"), repraesentation); ! if (!rv) { ID(geleseneID); ! Wert(wert); ! Repraesentation(repraesentation); } rv += pm->SchliesseNachLesen(); return rv; // TODO ! } // Lese ! //@nonl ! //@-node:<< Lese >> ! //@nl ! //@<< Schreibe >> ! //@+node:<< Schreibe >> ! int Verbreitung::Schreibe(PersistenzManager* pm) const { int rv = pm->OeffneZumSchreiben(Klasse(), id_); rv += pm->Schreibe(_t("Wert"), Wert()); ! if (Repraesentation()!=ID()) ! rv += pm->Schreibe(_t("Repräsentation"), Repraesentation()); rv += pm->SchliesseNachSchreiben(); return rv; ! } // Schreibe ! //@nonl ! //@-node:<< Schreibe >> ! //@nl ! //@<< Pruefe >> ! //@+node:<< Pruefe >> ! int Verbreitung::Pruefe() const { ! int rv = 0; ! const StringListe* rep = Repraesentationen(); ! if (std::find(rep->begin(), rep->end(), ID())==rep->end()) { ! Log::Info(_t("Unbekannte Verbreitung") + " "); ! ++rv; ! } ! if ((Wert()<1)||(Wert()>7)) { // TODO Konstanten ! Log::Info(_t("Verbreitung außerhalb der erlaubten Werte") + " "); ! ++rv; ! } ! if (std::find(rep->begin(), rep->end(), Repraesentation())==rep->end()) { ! Log::Info(_t("Unbekannte Repräsentation") + " "); ! ++rv; ! } ! if (rv!=0) Log::Info(_t("in") + " " + Klasse() + " " + ID()); return rv; ! } // Pruefe ! //@nonl ! //@-node:<< Pruefe >> ! //@nl ! //@<< IDListe >> ! //@+node:<< IDListe >> ! int Verbreitung::IDListe(PersistenzManager* pm, StringListe* liste) { return pm->IDListe(Klasse(), liste); // TODO Prüfen ! } // IDListe ! //@nonl ! //@-node:<< IDListe >> ! //@nl ! //@nonl ! //@-node:<< Verbreitung >> ! //@nl ! //@ << ZauberDefinition >> ! //@+node:<< ZauberDefinition >> ! //@<< Eigenschaften >> ! //@+node:<< Eigenschaften >> ! void ZauberDefinition::Eigenschaften(Eigenschaftsart e1, Eigenschaftsart e2, Eigenschaftsart e3) { eigenschaft_[0] = e1; eigenschaft_[1] = e2; eigenschaft_[2] = e3; } // Eigenschaften ! //@nonl ! //@-node:<< Eigenschaften >> ! //@nl ! //@<< Eigenschaft >> ! //@+node:<< Eigenschaft >> Eigenschaftsart ZauberDefinition::Eigenschaft(int i) const { if (i < 0) return unbekannteEigenschaft; *************** *** 205,209 **** return eigenschaft_[i]; } // Eigenschaft ! std::string ZauberDefinition::ProbeText(const std::string& trennzeichen) const { std::string s = EigenschaftString(eigenschaft_[0], false); --- 259,267 ---- return eigenschaft_[i]; } // Eigenschaft ! //@nonl ! //@-node:<< Eigenschaft >> ! //@nl ! //@<< ProbeText >> ! //@+node:<< ProbeText >> std::string ZauberDefinition::ProbeText(const std::string& trennzeichen) const { std::string s = EigenschaftString(eigenschaft_[0], false); *************** *** 212,216 **** return s; } // ProbeText ! int ZauberDefinition::Lese(PersistenzManager* pm, const std::string& id) { std::string geleseneID = id; --- 270,292 ---- return s; } // ProbeText ! //@nonl ! //@-node:<< ProbeText >> ! //@nl ! ! //@<< VerfuegbareRepraesentationen >> ! //@+node:<< VerfuegbareRepraesentationen >> ! StringListe ZauberDefinition::VerfuegbareRepraesentationen() const { ! StringListe reps; ! for (Verbreitungen::const_iterator v = verbreitung_.begin(); v != verbreitung_.end(); ++v) ! if (std::find(reps.begin(), reps.end(), v->second.Repraesentation())==reps.end()) ! reps.push_back(v->second.Repraesentation()); ! return reps; ! } ! //@nonl ! //@-node:<< VerfuegbareRepraesentationen >> ! //@nl ! ! //@<< Lese >> ! //@+node:<< Lese >> int ZauberDefinition::Lese(PersistenzManager* pm, const std::string& id) { std::string geleseneID = id; *************** *** 224,315 **** if (!rv) for (int i=0; i != EigenschaftenProTalentprobe; ++i) eigenschaft[i] = EigenschaftString(probe.substr(i*3, 2)); // TODO try/catch? ! StringListe merkmale; ! rv += pm->Lese(merkmale, _t("Merkmal"), _t("Merkmale")); ! StringListe varianten; ! rv += pm->Lese(varianten, _t("Variante"), _t("Varianten")); ! std::string beschreibung; ! Verbreitungen verbreitung; ! rv += verbreitung.Lese(pm); ! if (pm->Existiert(_t("Beschreibung"))) ! rv += pm->Lese(_t("Beschreibung"), beschreibung); ! if (!rv) { ID(geleseneID); Eigenschaften(eigenschaft[0], eigenschaft[1], eigenschaft[2]); ! Komplexitaet(komplexitaet); ! merkmale_ = merkmale; ! varianten_ = varianten; ! verbreitung_ = verbreitung; ! Beschreibung(beschreibung); } rv += pm->SchliesseNachLesen(); return rv; // TODO } // Lese ! int ZauberDefinition::Schreibe(PersistenzManager* pm) const { int rv = pm->OeffneZumSchreiben(Klasse(), id_); rv += pm->Schreibe(_t("Probe"), ProbeText()); rv += pm->Schreibe(_t("Komplexität"), SKTSpalteString(Komplexitaet())); ! rv += pm->Schreibe(merkmale_, _t("Merkmal"), _t("Merkmale")); ! rv += pm->Schreibe(varianten_, _t("Variante"), _t("Varianten")); ! rv += verbreitung_.Schreibe(pm); ! if (Beschreibung()!="") ! rv += pm->Schreibe(_t("Beschreibung"), Beschreibung()); rv += pm->SchliesseNachSchreiben(); return rv; } // Schreibe ! int ZauberDefinition::Pruefe() const{ ! int rv = 0; ! for (int i=0; i != EigenschaftenProTalentprobe; ++i) ! if (eigenschaft_[i]==unbekannteEigenschaft) { ! Log::Info(_t("Unbekannte Eigenschaft")); ! ++rv; ! } ! rv += verbreitung_.Pruefe(); ! if (rv!=0) Log::Info(_t("in") + " " + Klasse() + " " + ID()); return rv; } // Pruefe ! int ZauberDefinition::IDListe(PersistenzManager* pm, StringListe* liste) { return pm->IDListe(Klasse(), liste); // TODO Prüfen } // IDListe ! ZauberDefinitionen* zaubersprueche() ! { static ZauberDefinitionen* zauberspruche_ = new ZauberDefinitionen(); return zauberspruche_; } ! ! std::string Zauber::Text() const { ! return ID() + " " + strings::int2sStr(Wert(), true); } // Text ! ! std::string Zauber::ErsetzeTag(const std::string& tag) const { ! if (""==tag) return Text(); ! if ("Name"==tag) return ID(); ! if ("W"==tag) return strings::int2sStr(Wert(), true); ! if ("Probe"==tag) return Definition()->ProbeText(); ! if ("p1"==tag) return EigenschaftString(Definition()->Eigenschaft(0)); ! if ("p2"==tag) return EigenschaftString(Definition()->Eigenschaft(1)); ! if ("p3"==tag) return EigenschaftString(Definition()->Eigenschaft(2)); ! if ("K"==tag) return SKTSpalteString(Komplexitaet()); ! if ("Beschreibung"==tag) return Definition()->Beschreibung(); ! return tag; ! } // ErsetzeTag ! ! const ZauberDefinition* Zauber::Definition() const { ! ZauberDefinition* def = zaubersprueche()->Zeige(id_); ! if (def!=0) return def; ! Log::Error("Zauber::Definition: " + _t("Undefinierter Zauber") + " " + id_); ! static ZauberDefinition* sdef = new ZauberDefinition(); ! return sdef; // TODO workaround. Sollte bei nicht vorhandenen Defs intelligenter ! // reagieren (doch wie?) // TODO Speicherleck } // Definition ! ! int Zauber::Lese(PersistenzManager* pm, const std::string& id) { std::string geleseneID = id; int rv = pm->OeffneZumLesen(Klasse(), geleseneID); int wert; rv += pm->Lese(_t("Wert"), wert); if (!rv) { ! ID(geleseneID); Wert(wert); } --- 300,461 ---- if (!rv) for (int i=0; i != EigenschaftenProTalentprobe; ++i) eigenschaft[i] = EigenschaftString(probe.substr(i*3, 2)); // TODO try/catch? ! StringListe merkmale; ! rv += pm->Lese(merkmale, _t("Merkmal"), _t("Merkmale")); ! StringListe varianten; ! rv += pm->Lese(varianten, _t("Variante"), _t("Varianten")); ! std::string beschreibung; ! Verbreitungen verbreitung; ! rv += verbreitung.Lese(pm); ! if (pm->Existiert(_t("Beschreibung"))) ! rv += pm->Lese(_t("Beschreibung"), beschreibung); ! if (!rv) { ID(geleseneID); Eigenschaften(eigenschaft[0], eigenschaft[1], eigenschaft[2]); ! Komplexitaet(komplexitaet); ! merkmale_ = merkmale; ! varianten_ = varianten; ! verbreitung_ = verbreitung; ! Beschreibung(beschreibung); } rv += pm->SchliesseNachLesen(); return rv; // TODO } // Lese ! //@nonl ! //@-node:<< Lese >> ! //@nl ! //@<< Schreibe >> ! //@+node:<< Schreibe >> int ZauberDefinition::Schreibe(PersistenzManager* pm) const { int rv = pm->OeffneZumSchreiben(Klasse(), id_); rv += pm->Schreibe(_t("Probe"), ProbeText()); rv += pm->Schreibe(_t("Komplexität"), SKTSpalteString(Komplexitaet())); ! rv += pm->Schreibe(merkmale_, _t("Merkmal"), _t("Merkmale")); ! rv += pm->Schreibe(varianten_, _t("Variante"), _t("Varianten")); ! rv += verbreitung_.Schreibe(pm); ! if (Beschreibung()!="") ! rv += pm->Schreibe(_t("Beschreibung"), Beschreibung()); rv += pm->SchliesseNachSchreiben(); return rv; } // Schreibe ! //@nonl ! //@-node:<< Schreibe >> ! //@nl ! //@<< Pruefe >> ! //@+node:<< Pruefe >> int ZauberDefinition::Pruefe() const{ ! int rv = 0; ! for (int i=0; i != EigenschaftenProTalentprobe; ++i) ! if (eigenschaft_[i]==unbekannteEigenschaft) { ! Log::Info(_t("Unbekannte Eigenschaft")); ! ++rv; ! } ! rv += verbreitung_.Pruefe(); ! if (rv!=0) Log::Info(_t("in") + " " + Klasse() + " " + ID()); return rv; } // Pruefe ! //@nonl ! //@-node:<< Pruefe >> ! //@nl ! //@<< IDListe >> ! //@+node:<< IDListe >> int ZauberDefinition::IDListe(PersistenzManager* pm, StringListe* liste) { return pm->IDListe(Klasse(), liste); // TODO Prüfen } // IDListe + //@nonl + //@-node:<< IDListe >> + //@nl + //@nonl + //@-node:<< ZauberDefinition >> + //@nl ! ZauberDefinitionen* zaubersprueche() { ! static ZauberDefinitionen* zauberspruche_ = new ZauberDefinitionen(); ! return zauberspruche_; ! } ! ! //@ << Zauberfertigkeit >> ! //@+node:<< Zauberfertigkeit >> ! //@<< Maximalwert >> ! //@+node:<< Maximalwert >> ! int Zauberfertigkeit::Maximalwert() const { ! // TODO ! return 5; ! } ! //@nonl ! //@-node:<< Maximalwert >> ! //@nl ! //@<< Lernschwierigkeit >> ! //@+node:<< Lernschwierigkeit >> ! SKTSpalte Zauberfertigkeit::Lernschwierigkeit() const { ! // TODO ! return Definition()->Komplexitaet(); ! } ! //@nonl ! //@-node:<< Lernschwierigkeit >> ! //@nl ! ! //@<< Text >> ! //@+node:<< Text >> ! std::string Zauberfertigkeit::Text(int stil) const { ! bool kurz = ((RepKurz & stil)!=0); ! bool zeigen = ((ZeigeRep & stil)!=0); ! bool nurExoten = ((RepNichtWennStandard & stil)!=0); ! ! std::string s = Zauberspruch(); ! std::string r = kurz ? RepraesentationKurz(Repraesentation()) : Repraesentation(); ! if (zeigen) // TODO checke Exoten ! s += " (" + r + ")"; ! ! return s + " " + strings::int2sStr(Wert(), true); } // Text ! //@-node:<< Text >> ! //@nl ! //@<< ErsetzeTag >> ! //@+node:<< ErsetzeTag >> ! std::string Zauberfertigkeit::ErsetzeTag(const std::string& tag) const { ! if (""==tag) return Text(); ! if ("Name"==tag) return ID(); ! if ("W"==tag) return strings::int2sStr(Wert(), true); ! if ("Probe"==tag) return Definition()->ProbeText(); ! if ("p1"==tag) return EigenschaftString(Definition()->Eigenschaft(0)); ! if ("p2"==tag) return EigenschaftString(Definition()->Eigenschaft(1)); ! if ("p3"==tag) return EigenschaftString(Definition()->Eigenschaft(2)); ! if ("K"==tag) return SKTSpalteString(Lernschwierigkeit()); ! if ("Beschreibung"==tag) return Definition()->Beschreibung(); ! return tag; ! } // ErsetzeTag ! //@nonl ! //@-node:<< ErsetzeTag >> ! //@nl ! ! //@<< Definition >> ! //@+node:<< Definition >> ! const ZauberDefinition* Zauberfertigkeit::Definition() const { ! // TODO bei unterschiedlichen Repraesentationen ! ZauberDefinition* def = zaubersprueche()->Zeige(zauberspruch_); ! if (def!=0) return def; ! Log::Error("Zauber::Definition: " + _t("Undefinierter Zauber") + " " + ID()); ! static ZauberDefinition* sdef = new ZauberDefinition(); ! return sdef; // TODO workaround. Sollte bei nicht vorhandenen Defs intelligenter reagieren (doch wie?) // TODO Speicherleck } // Definition ! //@nonl ! //@-node:<< Definition >> ! //@nl ! ! //@<< Lese >> ! //@+node:<< Lese >> ! int Zauberfertigkeit::Lese(PersistenzManager* pm, const std::string& id) { std::string geleseneID = id; int rv = pm->OeffneZumLesen(Klasse(), geleseneID); + std::string zauberspruch; + rv += pm->Lese(_t("Zauberspruch"), zauberspruch); + std::string repraesentation; + rv += pm->Lese(_t("Repräsentation"), repraesentation); int wert; rv += pm->Lese(_t("Wert"), wert); if (!rv) { ! Zauberspruch(zauberspruch); ! Repraesentation(repraesentation); Wert(wert); } *************** *** 317,344 **** return rv; // TODO } // Lese ! ! int Zauber::Schreibe(PersistenzManager* pm) const { int rv = pm->OeffneZumSchreiben(Klasse(), ID()); rv += pm->Schreibe(_t("Wert"), Wert()); rv += pm->SchliesseNachSchreiben(); return rv; } // Schreibe ! ! int Zauber::Pruefe() const { ! int rv = 0; ! if (zaubersprueche()->Zeige(ID()) == 0) { ! Log::Info("Zauber::Pruefe: " + _t("unbekannter Zauberspruch"... [truncated message content] |
From: Denny V. <vra...@us...> - 2004-04-09 22:38:45
|
Update of /cvsroot/darkeyetool/det/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32238 Modified Files: det.cpp Log Message: Version 1.31 Beta - Zauberfertigkeiten Index: det.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/det.cpp,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** det.cpp 6 Apr 2004 21:28:32 -0000 1.44 --- det.cpp 9 Apr 2004 22:25:23 -0000 1.45 *************** *** 8,12 **** //@<< Version >> //@+node:<< Version >> ! #define detVERSION "1.30" #define detWEBSITE "darkeyetool.sourceforge.net" #define detEMAIL "de...@no..." --- 8,12 ---- //@<< Version >> //@+node:<< Version >> ! #define detVERSION "1.31 Beta" #define detWEBSITE "darkeyetool.sourceforge.net" #define detEMAIL "de...@no..." *************** *** 1321,1324 **** --- 1321,1327 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.45 2004/04/09 22:25:23 vrandezo + // Version 1.31 Beta - Zauberfertigkeiten + // // Revision 1.44 2004/04/06 21:28:32 vrandezo // Version 1.30 |
From: Denny V. <vra...@us...> - 2004-04-09 22:38:03
|
Update of /cvsroot/darkeyetool/det/project/msvc7 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32132 Modified Files: det.vcproj vcreate.vcproj Log Message: Optionen angepasst Index: det.vcproj =================================================================== RCS file: /cvsroot/darkeyetool/det/project/msvc7/det.vcproj,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** det.vcproj 9 Apr 2004 12:38:04 -0000 1.3 --- det.vcproj 9 Apr 2004 22:24:40 -0000 1.4 *************** *** 28,31 **** --- 28,32 ---- RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" + ForceConformanceInForLoopScope="TRUE" PrecompiledHeaderFile=".\Release/det.pch" AssemblerListingLocation=".\Release/" *************** *** 34,38 **** WarningLevel="3" SuppressStartupBanner="TRUE" ! CompileAs="0"/> <Tool Name="VCCustomBuildTool" --- 35,40 ---- WarningLevel="3" SuppressStartupBanner="TRUE" ! CompileAs="0" ! DisableSpecificWarnings="4018;4786;4503;4244"/> <Tool Name="VCCustomBuildTool" *************** *** 44,48 **** AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw.lib png.lib zlib.lib jpeg.lib tiff.lib xerces-c_2.lib" OutputFile="..\..\det.exe" ! LinkIncremental="1" SuppressStartupBanner="TRUE" AdditionalLibraryDirectories="D:\Programme\wx\wxWindows-2.4.2\lib,D:\Programme\wx\wxWindows-2.4.2\contrib\lib,D:\Programme\xerces\xerces-c-src_2_5_0\Build\Win32\VC7\Release" --- 46,51 ---- AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw.lib png.lib zlib.lib jpeg.lib tiff.lib xerces-c_2.lib" OutputFile="..\..\det.exe" ! Version="1.31" ! LinkIncremental="2" SuppressStartupBanner="TRUE" AdditionalLibraryDirectories="D:\Programme\wx\wxWindows-2.4.2\lib,D:\Programme\wx\wxWindows-2.4.2\contrib\lib,D:\Programme\xerces\xerces-c-src_2_5_0\Build\Win32\VC7\Release" *************** *** 95,98 **** --- 98,102 ---- PreprocessorDefinitions="MSVC;WIN32;_DEBUG;_WINDOWS;__WINDOWS__;__WXMSW__;DEBUG=1;__WXDEBUG__;__WIN95__;__WIN32__;WINVER=0x0400;STRICT" RuntimeLibrary="3" + ForceConformanceInForLoopScope="TRUE" PrecompiledHeaderFile=".\Debug/det.pch" AssemblerListingLocation=".\Debug/" *************** *** 103,107 **** SuppressStartupBanner="TRUE" DebugInformationFormat="4" ! CompileAs="0"/> <Tool Name="VCCustomBuildTool" --- 107,112 ---- SuppressStartupBanner="TRUE" DebugInformationFormat="4" ! CompileAs="0" ! DisableSpecificWarnings="4018;4786;4503;4244"/> <Tool Name="VCCustomBuildTool" *************** *** 113,119 **** AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib xerces-c_2.lib" OutputFile="..\..\detd.exe" ! LinkIncremental="1" SuppressStartupBanner="TRUE" ! AdditionalLibraryDirectories="D:\Programme\wx\wxWindows-2.4.2\lib,D:\Programme\wx\wxWindows-2.4.2\contrib\lib,D:\Programme\xerces\xerces-c-src_2_5_0\Build\Win32\VC6\Release" IgnoreDefaultLibraryNames="libcd.lib,libcid.lib,msvcrt.lib" GenerateDebugInformation="TRUE" --- 118,125 ---- AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib xerces-c_2.lib" OutputFile="..\..\detd.exe" ! Version="1.31" ! LinkIncremental="2" SuppressStartupBanner="TRUE" ! AdditionalLibraryDirectories="D:\Programme\wx\wxWindows-2.4.2\lib,D:\Programme\wx\wxWindows-2.4.2\contrib\lib,D:\Programme\xerces\xerces-c-src_2_5_0\Build\Win32\VC7\Release" IgnoreDefaultLibraryNames="libcd.lib,libcid.lib,msvcrt.lib" GenerateDebugInformation="TRUE" Index: vcreate.vcproj =================================================================== RCS file: /cvsroot/darkeyetool/det/project/msvc7/vcreate.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** vcreate.vcproj 9 Apr 2004 12:38:05 -0000 1.2 --- vcreate.vcproj 9 Apr 2004 22:24:40 -0000 1.3 *************** *** 132,139 **** <Files> <File ! RelativePath="..\..\build"> </File> <File ! RelativePath="..\..\builder"> </File> <File --- 132,139 ---- <Files> <File ! RelativePath=".\build"> </File> <File ! RelativePath=".\builder"> </File> <File |