#include <iostream.h>
#include <string.h>
//#include <wwchar.h>


//#include <iostream.h>
//#include <string.h>
//#include <wwchar.h>


class Wchar{
 public:
  int stamm;
  int vorzeichen;
  int brut;
  //wchar(int,int,int);
Wchar::Wchar(int a=0,int b=0,int c=0){
stamm=a;
vorzeichen=b;
brut=c;
};
  //int name;
  //int Camp;
  //int Rudel;
  //int Spieler;
  //int Chronik;
} wchar;

class Attributes: public Wchar{
 public:
Attributes(){
//phys_attributes= new int[3];
//soz_attributes=new int[3];
//men_attributes=new int[3];

for (int i=1;3;i++){
phys_attributes[i]=1;
soz_attributes[i]=1;
men_attributes[i]=1;
}}
    int phys_attributes[3]; // {int strength, int dexterity, int stamina}
    int soz_attributes[3]; //{int charisma, int manipulation, int appearance}
    int men_attributes[3]; //{int perception, int intelligence, int wits}
//  virtual void change(int freeb, int general);
//  virtual int step; 
} Attributes;

class Abilities: public Wchar{
 public:
Abilities::Abilities(){
for (int i=1;9;i++){
talents[i]=0;
skills[i]=0;
knowledges[i]=0;
 }
}

    int talents[9]; //{int alertness, int athletics,int  brawl,  int dodge, int empathy, int intimidation, int primal_urge, int streetwise, int subterfuge}
    int skills[9]; //{int animal_ken, int crafts, int drive, int etiquette, int firearms, int leadership, int melee, int performance, int stealth, int survival}
    int knowledges[9]; //{int computer, int enigmas, int investigation, int law, int linguistic, int medicine, int  occult, int politics, int rituals, int science}
//  void change(int curr_step, int what, int freeb, int general);
//  virtual int step;
} Abilities;

class Background: public Wchar{
  public:
Background::Background(){
for (int i=1;10;i++){bg[i]=0;}
}
 int bg[10];
//  void change(int curr_step, int what, int freeb, int general);
//  virtual int step; 
} Background;

class Rgw: public Wchar{
 public:
Rgw::Rgw(int r_vorzeichen=0, int r_stamm=0, int r_brut=0){
    if (r_stamm==1 or r_stamm==12 or (r_stamm>3 and r_stamm<11))
      ragnwp[3]=3;
      else if (r_stamm==11)
	ragnwp[3]=5;
      else
        ragnwp[3]=4;

    ragnwp[1]=r_vorzeichen;
    if (r_brut==1)
      ragnwp[2]=1;
    if (r_brut==2)
      ragnwp[2]=3;
    if (r_brut==1)
      ragnwp[3]=5;
  }
  int ragnwp[3];
//  void change(int curr_step, int what, int freeb, int general);
//  virtual int step; 
} Rgw;

class Renown: public Wchar{
 public:
Renown::Renown(int re_vorzeichen=0){
  switch(re_vorzeichen){
  case 1:
	      //	ragabash();
        break;
  case 2:
	glory=0;
        honour=1;
        wisdom=3;
	break;
  case 3:
	glory=0;
        honour=3;
        wisdom=0;
	break;
  case 4:
	glory=2;
        honour=0;
	wisdom=1;
	break;
  case 5:
	glory=2;
        honour=1;
	wisdom=0;
	break;
  }
  }
  int glory;
 int honour;
 int wisdom;
 int raga[3];
//  void change(int curr_step, int what, int freeb, int general);
//  void ragabash();
//  virtual int step; 
} Renown;


class Wwchar: public Attributes, public Rgw, public Abilities, public Background, public Renown{
 public: 
  // wwchar();
  //  wwchar::
Wwchar(){
  std::cout<<"warum klappt das nicht?!!";
}
 //  int stamm;
  //  int brut;
  //  int vorzeichen;
  //  virtual void change()=0;
  //virtual int step; 
} Wwchar;



int uebersetze_vorzeichen_zahl(char wort[10]){
  int ret;
  if (strcmp(wort,"ra")==0) ret=1;
  else if (strcmp(wort,"th")==0) ret=2;
  else if (strcmp(wort,"ph")==0) ret=3;
  else if (strcmp(wort,"ga")==0) ret=4;
  else if (strcmp(wort,"ah")==0) ret=5;
  return(ret);
}

//char uebersetze_vorzeichen_wort(int zahl)[]{
// string r[];
// if (zahl==1) r="ra";
//else if (zahl==2) r="th";
//else if (zahl==3) r="ph";
//else if (zahl==4) r="ga";
//else if (zahl==5) r="ah";
//return(r);
//}

int uebersetze_brut_zahl(char wort[10]){
  int r;
  if (strcmp(wort,"h")==0) r=1;
  else if (strcmp(wort,"m")==0) r=2;
  else if (strcmp(wort,"l")==0) r=3;
  return(r);
}

//char uebersetze_brut_wort(int zahl){
//char r[];
//if (zahl==1) r="h";
//else if (zahl==2) r="m";
//else if (zahl==3) r="l";
//return(r);
//}

int uebersetze_stamm_zahl(char wort[10]){
  int r;
  if (strcmp(wort,"bf")==0) r=1;
  else if (strcmp(wort,"bg")==0) r=2;
  else if (strcmp(wort,"cg")==0) r=3;
  else if (strcmp(wort,"fi")==0) r=4;
  else if (strcmp(wort,"gf")==0) r=5;
  else if (strcmp(wort,"gw")==0) r=6;
  else if (strcmp(wort,"rt")==0) r=7;
  else if (strcmp(wort,"sl")==0) r=8;
  else if (strcmp(wort,"ss")==0) r=9;
  else if (strcmp(wort,"sf")==0) r=10;
  else if (strcmp(wort,"sg")==0) r=11;
  else if (strcmp(wort,"uk")==0) r=12;
  else if (strcmp(wort,"we")==0) r=13;
  return(r);
}

//char uebersetze_stamm_wort(int zahl){
// char r[];
//if (zahl==1) r="bf";
//else if (zahl==2) r="bg";
//else if (zahl==3) r="cg";
//else if (zahl==4) r="fi";
//else if (zahl==5) r="gf";
//else if (zahl==6) r="gw";
//else if (zahl==7) r="rt";
//else if (zahl==8) r="sl";
//else if (zahl==9) r="ss";
//else if (zahl==10) r="sf";
//else if (zahl==11) r="sg";
//else if (zahl==12) r="uk";
//else if (zahl==13) r="we";
//}




void ausgabe(int tribe, int auspice, int breed){
  char out_tribe[10];
  char out_auspice[10];
  char out_breed[10];
if (tribe==1) strcpy(out_tribe,"Schwarze Furie");
else if (tribe==2) strcpy(out_tribe,"Knochenbeisser");
else if (tribe==3) strcpy(out_tribe,"Kind Gaias");
else if (tribe==4) strcpy(out_tribe,"Fianna");
else if (tribe==5) strcpy(out_tribe,"Nachfahren des Fenris");
else if (tribe==6) strcpy(out_tribe,"Glaswandler");
else if (tribe==7) strcpy(out_tribe,"Rote Klaue");
else if (tribe==8) strcpy(out_tribe,"Schattenlord");
else if (tribe==9) strcpy(out_tribe,"Stiller Wanderer");
else if (tribe==10) strcpy(out_tribe,"Silberfang");
else if (tribe==11) strcpy(out_tribe,"Sternentraeumer");
else if (tribe==12) strcpy(out_tribe,"Uktena");
else if (tribe==13) strcpy(out_tribe,"Wendigo");

if (breed==1) strcpy(out_breed,"Homid");
else if (breed==2) strcpy(out_breed,"Metis");
else if (breed==3) strcpy(out_breed,"Lupus");


if (auspice==1) strcpy(out_auspice,"Ragabash");
else if (auspice==2) strcpy(out_auspice,"Theurge");
else if (auspice==3) strcpy(out_auspice,"Philodox");
else if (auspice==4) strcpy(out_auspice,"Galliard");
else if (auspice==5) strcpy(out_auspice,"Ahroun");

std::cout<< " Du wolltest: \n";
std::cout<<out_tribe <<"  " << out_auspice << "  "<< out_breed <<"\n";
}


int frag_attr(int f_art,int f_was){
  int einlesen;
  if (f_art ==1){
    if (f_was==1){
      std::cout<<"Staerke: ";
      std::cin>>einlesen;}
    else if (f_was==2){
      std::cout<<"Geschicklichkeit: ";
      std::cin>>einlesen;}
    else if (f_was ==3){
      std::cout<<"Widerstandskraft";
  std::cin>>einlesen;}}
  else if (f_art==2){
    if (f_was==1){
      std::cout<<"Charisma";
      std::cin>>einlesen;}
    else if(f_was==2){
      std::cout<<"Manipulation";
      std::cin>>einlesen;}
    else if(f_was==3){
      std::cout<<"Erscheinungsbild";
  std::cin>>einlesen;}}
  else if (f_art==3){
    if (f_was==1){
      std::cout<<"Wahrnehmung";
      std::cin>>einlesen;}
    else if(f_was==2){
      std::cout<<"Intelligenz";
      std::cin>>einlesen;}
    else if(f_was==3){
      std::cout<<"Geistesschaerfe";
    std::cin>>einlesen;}
  return(einlesen);
  }
}



int main()
{
  int stufe=1;
  int help;
//  enum tribe {bf, bg, cg, fi, gf, gw, rt, sl, ss, sf, sg, uk, we};
//  enum breed {h, m, l};
//  enum auspice {ra, th, ph, ga, ah};
//  tribe stamm;
//  breed brut;
//  auspice vorzeichen;
//   int stamm;
//   int vorzeichen;
//   int brut;
   char buffer1[10];
   char buffer2[10];
   char buffer3[10];
 std::cout<< "Generierungsstufe: " ;
 std::cin>> stufe;

if(stufe==1){
   std::cout<<"Welchem Stamm soll der Charakter angehoeren?\n";
   std::cout<<"(Bitte verwende abkuerzungen wie: Black furie: bf):";
   std::cin>>buffer1;
  std::cout<<"Unter welchem Vorzeichen soll der Charakter geboren sein?\n";
  std::cout<<"(Bitte verwende abkuerzungen wie: Ragabash: ra): ";
  std::cin >>buffer2;
  std::cout<<"Welcher Brut soll der Charakter geboren sein?\n";
  std::cout<<"(Bitte verwende abkuerzungen wie: Homid: h): ";
  std::cin >>buffer3;
  //  CRectangle rect (3,4);
  //CRectangle rectb (5,6);
  //cout << "rect area: " << rect.area() << endl;
  //cout << "rectb area: " << rectb.area() << endl;  
  stufe++;
}
  Wchar test(uebersetze_stamm_zahl(buffer1),uebersetze_vorzeichen_zahl(buffer2),uebersetze_brut_zahl(buffer3));
  // ausgabe(uebersetze_stamm_zahl(buffer1),uebersetze_vorzeichen_zahl(buffer2),uebersetze_brut_zahl(buffer3));
ausgabe(test.stamm, test.vorzeichen, test.brut);
 //show character
 

 if (stufe==2){
   //  Attributes test_attribute;
     std::cout<<"Attribute:\n Du kannst in je einer Kategorie 7, 5 und 3 Punkte verteilen (maximal 4 auf ein Attribut.)\n";
     for(int art=1;3;art++){
       for(int was =1;3;was++){
	 help=frag_attr(art,was);
     //     Attribute::change(art,was,help);
    }}
 }

}
// curr_step=1 : waehle stamm/vorzeichen/brut (name usw)
// curr_step=2 : waehle attribute
// curr_step=3 : waehle faehigkeiten
// curr_step=4 : waehle Hintergruende
// curr_step=5 : waehle gaben
// curr_step=6 : waehle vor-/nachteile
// curr_step=7 : verteile freebees
// curr_step=9 : verteile erfahrungspunkte
// curr_step=10 : aktualisiere ruf
// curr_step=11 : aktualisiere rang
