From: <vra...@us...> - 2004-01-05 02:45:17
|
Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1:/tmp/cvs-serv12438 Modified Files: PersonenKomponenteGUIwx.h PersonGUIPersonenKomponentewx.cpp Log Message: Charakteristika bei RPK-Definition von Mengen auf Auswahlmengen umgestellt Index: PersonenKomponenteGUIwx.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonenKomponenteGUIwx.h,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** PersonenKomponenteGUIwx.h 4 Jan 2004 00:02:50 -0000 1.25 --- PersonenKomponenteGUIwx.h 5 Jan 2004 02:45:14 -0000 1.26 *************** *** 155,160 **** moeglicheCharakteristika_->Clear(); ! for (DSA::Charakteristika::iterator ch = objekt_->charakteristika_.begin(); ch != objekt_->charakteristika_.end(); ++ch) ! charakteristika_->Append(ch->second.Text().c_str()); for (DSA::CharakteristikumDefinitionen::iterator c = DSA::charakteristika()->begin(); c != DSA::charakteristika()->end(); ++c) --- 155,160 ---- moeglicheCharakteristika_->Clear(); ! for (DSA::CharakteristikaAuswahl::iterator ch = objekt_->charakteristika_.begin(); ch != objekt_->charakteristika_.end(); ++ch) ! charakteristika_->Append(ch->Text().c_str()); for (DSA::CharakteristikumDefinitionen::iterator c = DSA::charakteristika()->begin(); c != DSA::charakteristika()->end(); ++c) *************** *** 169,175 **** std::string c = charakteristika_->GetStringSelection().c_str(); std::string auswahl; ! for (DSA::Charakteristika::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->second.Text() == c) ! auswahl = i->first; showplusminus = DSA::charakteristika()->Hole(auswahl).SchlechteEigenschaft(); --- 169,175 ---- std::string c = charakteristika_->GetStringSelection().c_str(); std::string auswahl; ! for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) ! auswahl = i->ID(0); showplusminus = DSA::charakteristika()->Hole(auswahl).SchlechteEigenschaft(); *************** *** 994,1005 **** punkte += wert * 5; // TODO Konstante } ! for (DSA::Charakteristika::iterator c = objekt_->charakteristika_.begin(); c != objekt_->charakteristika_.end(); ++c) ! if (DSA::charakteristika()->Hole(c->first).SchlechteEigenschaft()) { ! if (DSA::charakteristika()->Hole(c->first).GPPro2Punkte()) ! punkte += (DSA::charakteristika()->Hole(c->first).GP() * 3 * DSA::regeln("Minimaler Startwert einer Schlechten Eigenschaft") + 1)/2; // TODO Konstante else ! punkte += DSA::charakteristika()->Hole(c->first).GP() * 3 * DSA::regeln("Minimaler Startwert einer Schlechten Eigenschaft"); // TODO Konstante } else ! punkte += DSA::charakteristika()->Hole(c->first).GP() * 3; // TODO Konstante for (DSA::Sonderfertigkeiten::iterator sf = objekt_->sonderfertigkeiten_.begin(); sf != objekt_->sonderfertigkeiten_.end(); ++sf) --- 994,1005 ---- punkte += wert * 5; // TODO Konstante } ! 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()) ! punkte += (DSA::charakteristika()->Hole(c->ID(0)).GP() * 3 * DSA::regeln("Minimaler Startwert einer Schlechten Eigenschaft") + 1)/2; // TODO Konstante else ! punkte += DSA::charakteristika()->Hole(c->ID(0)).GP() * 3 * DSA::regeln("Minimaler Startwert einer Schlechten Eigenschaft"); // TODO Konstante } else ! punkte += DSA::charakteristika()->Hole(c->ID(0)).GP() * 3; // TODO Konstante for (DSA::Sonderfertigkeiten::iterator sf = objekt_->sonderfertigkeiten_.begin(); sf != objekt_->sonderfertigkeiten_.end(); ++sf) *************** *** 1595,1604 **** //@+node:<< CharWeg >> void CharWeg (const std::string& c) { ! std::string auswahl; ! for (DSA::Charakteristika::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->second.Text() == c) ! auswahl = i->first; ! objekt_->charakteristika_.Loesche(auswahl); Update(); } // CharWeg --- 1595,1604 ---- //@+node:<< CharWeg >> void CharWeg (const std::string& c) { ! DSA::CharakteristikaAuswahl::iterator auswahl; ! for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) ! auswahl = i; ! objekt_->charakteristika_.Loesche(*auswahl); Update(); } // CharWeg *************** *** 1610,1620 **** void CharHinzu (const std::string& c) { DSA::CharakteristikumDefinition chdef = DSA::charakteristika()->Hole(c); ! DSA::Charakteristikum ch(chdef); std::string s = _t("Dieses Charakteristikum braucht eine Spezifizierung.\nSoll diese vorgegeben sein, geben Sie sie bitte jetzt ein.\nSoll der Spieler selbst wählen, lassen Sie das Feld frei."); if (chdef.BrauchtSpezifizierung()) ! ch.Spezifizierung(DSA::hole()->Text(s)); ! if (ch.SchlechteEigenschaft()) ch.Stufe(5); ! objekt_->charakteristika_.FuegeEin(ch); Update(); } // CharHinzu --- 1610,1623 ---- void CharHinzu (const std::string& c) { DSA::CharakteristikumDefinition chdef = DSA::charakteristika()->Hole(c); ! DSA::Auswahl<DSA::Charakteristikum> a; ! a.IDHinzu(chdef.ID()); ! std::string s = _t("Dieses Charakteristikum braucht eine Spezifizierung.\nSoll diese vorgegeben sein, geben Sie sie bitte jetzt ein.\nSoll der Spieler selbst wählen, lassen Sie das Feld frei."); if (chdef.BrauchtSpezifizierung()) ! a.Kommentar(DSA::hole()->Text(s)); ! if (chdef.SchlechteEigenschaft()) a.WertHinzu(5); // TODO Konstante ! ! objekt_->charakteristika_.FuegeEin(a); Update(); } // CharHinzu *************** *** 1663,1669 **** std::string c = charakteristika_->GetStringSelection().c_str(); std::string auswahl; ! for (DSA::Charakteristika::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->second.Text() == c) ! auswahl = i->first; bool showplusminus = DSA::charakteristika()->Hole(auswahl).SchlechteEigenschaft(); --- 1666,1672 ---- std::string c = charakteristika_->GetStringSelection().c_str(); std::string auswahl; ! for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) ! auswahl = i->ID(0); bool showplusminus = DSA::charakteristika()->Hole(auswahl).SchlechteEigenschaft(); *************** *** 1683,1690 **** std::string c = charakteristika_->GetStringSelection().c_str(); std::string auswahl; ! for (DSA::Charakteristika::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->second.Text() == c) { ! i->second.Stufe(i->second.Stufe()+1); ! charakteristika_->SetString(sel, i->second.Text().c_str()); } // Update(); --- 1686,1695 ---- std::string c = charakteristika_->GetStringSelection().c_str(); std::string auswahl; ! for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) { ! int w = i->HoleWert(0); ! i->EntferneLetztenWert(); ! i->WertHinzu(w+1); ! charakteristika_->SetString(sel, i->Text().c_str()); } // Update(); *************** *** 1701,1709 **** std::string c = charakteristika_->GetStringSelection().c_str(); std::string auswahl; ! for (DSA::Charakteristika::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->second.Text() == c) { ! i->second.Stufe(i->second.Stufe()-1); ! charakteristika_->SetString(sel, i->second.Text().c_str()); ! } // Update(); } // OnCharMinus --- 1706,1716 ---- std::string c = charakteristika_->GetStringSelection().c_str(); std::string auswahl; ! for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) { ! int w = i->HoleWert(0); ! i->EntferneLetztenWert(); ! i->WertHinzu(w-1); ! charakteristika_->SetString(sel, i->Text().c_str()); ! } // Update(); } // OnCharMinus *************** *** 1938,1941 **** --- 1945,1951 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.26 2004/01/05 02:45:14 vrandezo + // Charakteristika bei RPK-Definition von Mengen auf Auswahlmengen umgestellt + // // Revision 1.25 2004/01/04 00:02:50 vrandezo // Schlechte Eigenschaften 5+ bei RKP Index: PersonGUIPersonenKomponentewx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIPersonenKomponentewx.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** PersonGUIPersonenKomponentewx.cpp 6 Dec 2003 15:42:52 -0000 1.12 --- PersonGUIPersonenKomponentewx.cpp 5 Jan 2004 02:45:14 -0000 1.13 *************** *** 249,253 **** } } ! } //@nonl //@-node:Normalisiere --- 249,305 ---- } } ! } ! ! template<class T, class U> ! void GebeEinChar(T, const std::string& id, int wert, U& ziel, wxWindow* parent, const std::string& kommentar = "") { ! T t; ! t.ID(id); ! if (wert!=0) t.Stufe(wert); ! t.Spezifizierung(kommentar); ! // if (ziel.Existiert(id)) ! // ziel.Zeige(id)->Wert(ziel.Zeige(id)->Wert()+wert); ! // else ! ziel.FuegeEin(t); ! } ! ! template<class T, class U> // wobei U DSA::SortierteMenge<T> sein muss ! void NormalisiereChar(const DSA::AuswahlMenge<T>& quelle, U& ziel, wxWindow* parent) { ! for (typename DSA::AuswahlMenge<T>::const_iterator i = quelle.begin(); i != quelle.end(); ++i) { ! if (i->Art() == _t("einfach")) ! GebeEinChar(T(), i->ID(0), i->HoleWert(0), ziel, parent, i->Kommentar()); ! ! // if (i->Art() == _t("Liste")) { ! // StringListe sl; ! // for (int j = 0; j < i->IDAnzahl(); ++j) sl.push_back(i->ID(j)); ! // for (int k = 0; k < i->WertAnzahl(); ++k) { ! // if (sl.size() > 1) { ! // wxString* wxs = new wxString[sl.size()]; ! // int index = -1; ! // for (StringListe::iterator s = sl.begin(); s != sl.end(); ++s) ! // wxs[++index] = s->c_str(); ! // std::string text; ! // if (i->Kommentar()!="") text += i->Kommentar() + "\n"; ! // text += _t("Vergebe") + " " + strings::int2sStr(i->HoleWert(k), true); ! // wxSingleChoiceDialog d(parent, text.c_str(), _t("Bitte wählen").c_str(), ! // sl.size(), wxs, 0, wxOK); ! // std::string gesucht; ! // if (d.ShowModal() != wxID_OK) ! // gesucht = wxs[0].c_str(); ! // else ! // gesucht = d.GetStringSelection().c_str(); ! // delete [] wxs; ! ! // GebeEin(T(), gesucht, i->HoleWert(k), ziel, parent, i->Kommentar()); ! ! // sl.erase(std::find(sl.begin(), sl.end(), gesucht)); ! // } else { ! // GebeEin(T(), sl.begin()->c_str(), i->HoleWert(k), ziel, parent, i->Kommentar()); ! // k = i->WertAnzahl(); ! // } ! // } ! // } ! } ! } ! //@nonl //@-node:Normalisiere *************** *** 260,268 **** p->modifikatoren_ = personenKomponenteDef_->modifikatoren_; p->voraussetzungen_ = personenKomponenteDef_->voraussetzungen_; ! Normalisiere (personenKomponenteDef_->kampftechniken_, p->kampftechniken_, this); Normalisiere(personenKomponenteDef_->talente_, p->talente_, this); Normalisiere(personenKomponenteDef_->sprachen_, p->sprachen_, this); Normalisiere(personenKomponenteDef_->schriften_, p->schriften_, this); ! p->charakteristika_ = personenKomponenteDef_->charakteristika_; for (DSA::Charakteristika::iterator c = p->charakteristika_.begin(); c != p->charakteristika_.end(); ++c) if ((c->second.Definition()->BrauchtSpezifizierung()) &&(c->second.Spezifizierung()=="")) { --- 312,320 ---- p->modifikatoren_ = personenKomponenteDef_->modifikatoren_; p->voraussetzungen_ = personenKomponenteDef_->voraussetzungen_; ! Normalisiere(personenKomponenteDef_->kampftechniken_, p->kampftechniken_, this); Normalisiere(personenKomponenteDef_->talente_, p->talente_, this); Normalisiere(personenKomponenteDef_->sprachen_, p->sprachen_, this); Normalisiere(personenKomponenteDef_->schriften_, p->schriften_, this); ! NormalisiereChar(personenKomponenteDef_->charakteristika_, p->charakteristika_, this); for (DSA::Charakteristika::iterator c = p->charakteristika_.begin(); c != p->charakteristika_.end(); ++c) if ((c->second.Definition()->BrauchtSpezifizierung()) &&(c->second.Spezifizierung()=="")) { *************** *** 292,295 **** --- 344,350 ---- // $Log$ + // Revision 1.13 2004/01/05 02:45:14 vrandezo + // Charakteristika bei RPK-Definition von Mengen auf Auswahlmengen umgestellt + // // Revision 1.12 2003/12/06 15:42:52 vrandezo // Twelwan, GUI: R/K/P bei Erschaffung jetzt auch über Doppelklick wählbar |