Index: code/branches/Dialog_HS17/src/modules/dialog/Answer.cc
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/Answer.cc	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/Answer.cc	(revision 11644)
@@ -23,28 +23,29 @@
 	}
 
-	void Answer::setAnswerId(std::string answerId){
+	void Answer::setAnswerId(const std::string& answerId){
 		this->answerId_ = answerId;
 	}
 
-	std::string Answer::getAnswerId(){
+	const std::string& Answer::getAnswerId() const
+	{
 		return this->answerId_;
 	}
 
-	void Answer::setNextQuestion(std::string nextId)
+	void Answer::setNextQuestion(const std::string& nextId)
 	{
 		this->nextQuestionId_ = nextId;
 	}
 
-	std::string Answer::getNextQuestion()
+	const std::string& Answer::getNextQuestion() const
 	{
 		return this->nextQuestionId_;
 	}
 
-	void Answer::setAnswer(std::string answer)
+	void Answer::setAnswer(const std::string& answer)
 	{
 		this->answer_ = answer;
 	}
 
-	std::string Answer::getAnswer()
+	const std::string& Answer::getAnswer() const
 	{
 		return this->answer_;
Index: code/branches/Dialog_HS17/src/modules/dialog/Answer.h
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/Answer.h	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/Answer.h	(revision 11644)
@@ -18,12 +18,12 @@
 			virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
-			void setAnswerId(std::string answerId); 
-			std::string getAnswerId();
+			void setAnswerId(const std::string& answerId); //xmlPort-Funktion, setzt AntwortId
+			const std::string& getAnswerId() const;	//xmlPort-Funktion,	gibt AntwortId
 
-			void setNextQuestion(std::string nextId); // "end" um den dialog zu beenden
-			std::string getNextQuestion();
+			void setNextQuestion(const std::string& nextId); //xmlPort-Funktion, um Dialog zu beenden tag benutzen der von keiner Frage benutzt wird
+			const std::string& getNextQuestion() const;	//xmlPort-Funktion, gibt Id der Folgefrage
 
-			void setAnswer(std::string awns);
-			std::string getAnswer();
+			void setAnswer(const std::string& awns);	//xmlPort-Funktion, setzt Antworttext
+			const std::string& getAnswer() const;	//xmlPort-Funktion,	gibt Antworttext
 
 		private:
Index: code/branches/Dialog_HS17/src/modules/dialog/AnswerId.cc
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/AnswerId.cc	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/AnswerId.cc	(revision 11644)
@@ -19,10 +19,10 @@
 	}
 
-	void AnswerId::setId(std::string id)
+	void AnswerId::setId(const std::string& id)
 	{
 		this->id_ = id;
 	}
 	
-	std::string AnswerId::getId()
+	const std::string& AnswerId::getId() const
 	{
 		return this->id_;
Index: code/branches/Dialog_HS17/src/modules/dialog/AnswerId.h
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/AnswerId.h	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/AnswerId.h	(revision 11644)
@@ -16,6 +16,6 @@
 			virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
-            void setId(std::string Id);
-            std::string getId();
+            void setId(const std::string& Id);	//allows to set Id, only use in xmlPort for initializing AnswerIds in lvl files
+            const std::string& getId() const;	//allows to get Id, used in xmlPort
 
 		private: 
Index: code/branches/Dialog_HS17/src/modules/dialog/Dialog.cc
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/Dialog.cc	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/Dialog.cc	(revision 11644)
@@ -35,20 +35,20 @@
     }
 
-	void Dialog::setName(std::string name)
+	void Dialog::setName(const std::string& name)
 	{
 		this->name_ = name;
 	}
 
-	std::string Dialog::getName() 
+	const std::string& Dialog::getName() const 
 	{
 		return this->name_;
 	}
 
-	void Dialog::setCurrentQuestionId(std::string questionId)
+	void Dialog::setCurrentQuestionId(const std::string& questionId)
 	{
 		this->currentQuestionId_ = questionId;
 	}
 
-	std::string Dialog::getCurrentQuestionId()
+	const std::string& Dialog::getCurrentQuestionId() const
 	{
 		return this->currentQuestionId_;
@@ -61,4 +61,9 @@
 	}
 
+	const Question* Dialog::getQuestion() const // returned nichts
+	{
+		return nullptr;
+	}
+
 	void Dialog::addAnswer(Answer* answer) //fuegt Answer der Map hinzu
 	{
@@ -66,22 +71,15 @@
 	}
 
-	Question* Dialog::getQuestion(unsigned int index) const // returned nichts
+	const Answer* Dialog::getAnswer(unsigned int index) const	//returned sting der Antwort zur Id.
 	{
 		return nullptr;
-		// Question question = (questions_.find(this->currentQuestionId_))->second;
-		// return question.getQuestion();
 	}
 
-	Answer* Dialog::getAnswer(unsigned int index) const	//returned sting der Antwort zur Id.
-	{
-		return nullptr;
-		// return (this->answers_.find(answerId))->second.getAnswer();
-	}
 
-	std::vector<std::string>* Dialog::getAnswerIds() // returned vector mit allen momentanen AntwortenIds
+	const std::vector<std::string>* Dialog::getAnswerIds() // returned vector mit allen momentanen AntwortenIds
 	{
 		
 		Question* question = (this->questions_.find(this->currentQuestionId_))->second;
-		std::vector<std::string>* answers = question->getAnswerIds();
+		const std::vector<std::string>* answers = question->getAnswerIds();
 		return answers;
 		
@@ -103,25 +101,21 @@
     }
 
-    void Dialog::update(std::string givenAnswer)
+    void Dialog::update(const std::string& givenAnswerId)
     {
-    	Answer* answer = (answers_.find(givenAnswer))->second;
+    	Answer* answer = (answers_.find(givenAnswerId))->second;
     	this->currentQuestionId_ = answer->getNextQuestion();
     }
 
-    bool Dialog::ending() //retruned true wenn die Id der Antwort end ist oder keine Antworten auf die frage eingetragen sind
+    bool Dialog::ending(const std::string& givenAnswerId)
     {
-    	bool end = false;
-    	if ((this->questions_.find(this->currentQuestionId_)->second)->getAnswerIds()->empty()){
-    		end = true;
-    	}	
-    	return end;
+    	return !this->questions_.count(this->answers_.find(givenAnswerId)->second->getNextQuestion());
     }
 
-	std::string Dialog::getQuestionString()
+	const std::string& Dialog::getQuestionString()
 	{
 		return this->questions_.find(this->currentQuestionId_)->second->getQuestion();
 	}
 
-	std::string Dialog::getAnswerString(std::string answerId)
+	const std::string& Dialog::getAnswerString(std::string answerId)
 	{
 		return this->answers_.find(answerId)->second->getAnswer();
Index: code/branches/Dialog_HS17/src/modules/dialog/Dialog.h
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/Dialog.h	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/Dialog.h	(revision 11644)
@@ -24,25 +24,27 @@
 			virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
 
-			void setName(std::string name);
-			std::string getName();
+			void setName(const std::string& name);	//xmlPort-Funktion, setzt Namen
+			const std::string& getName() const;	//xmlPort-Funktion, returnt Namen
 
-			void setCurrentQuestionId(std::string questionId);
-			std::string getCurrentQuestionId();
+			void setCurrentQuestionId(const std::string& questionId);	//xmlPort-Funktion, setzt string Id der momentanen Frage
+			const std::string& getCurrentQuestionId() const;	//xmlPort-Funktion, gibt Id der momentanen Frage
 
-			void addQuestion(Question* question); //fuegt Question der Map hinzu
-			void addAnswer(Answer* answer); //fuegt Answer der Map hinzu
+			void addQuestion(Question* question); //xmlPort-Funktion, fuegt Question der Map hinzu
+			const Question* getQuestion() const; //xmlPort-Funktion, returnt nullptr
 
-			Question* getQuestion(unsigned int index) const; // // benoetigt fuer xmlPort
-			Answer* getAnswer(unsigned int index) const; // benoetigt fuer xmlPort
-			std::vector<std::string>* getAnswerIds(); 	// returned vector mit allen momentanen AntwortenIds
+			void addAnswer(Answer* answer); //xmlPort-Funktion, fuegt Answer der Map hinzu
+			const Answer* getAnswer(unsigned int index) const; //xmlPort-Funktion, returnt nullptr
 
-	 		bool execute(bool bTriggered, BaseObject* trigger);
 
-			void update(std::string givenAnswer);
+			const std::vector<std::string>* getAnswerIds(); 	// returned Pointer auf Vector mit allen momentanen AntwortenIds
 
-			bool ending(); //retruned true wenn die Id der Antwort end ist oder keine Antworten auf die frage eingetragen sind
+	 		bool execute(bool bTriggered, BaseObject* trigger); // funktion die aufgerufen wird wenn der im xml verbundene Trigger aktiviert wird
 
-			std::string getQuestionString(); //gibt string der momentanen Frage 
-			std::string getAnswerString(std::string answerId); //gibt string der zur Id passenden Frage
+			void update(const std::string& givenAnswerId);	//setzt die naechste Frage entsprechend der gegebenen antwortId
+
+			bool ending(const std::string& givenAnswerId); //ist true falls fuer die gegebene AntwortId keine Frage zur FragenId der Antwort existiert 
+
+			const std::string& getQuestionString(); //gibt string der momentanen Frage 
+			const std::string& getAnswerString(std::string answerId); //gibt string der zur Id passenden Frage
 
 		private: 
Index: code/branches/Dialog_HS17/src/modules/dialog/DialogManager.cc
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/DialogManager.cc	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/DialogManager.cc	(revision 11644)
@@ -29,5 +29,5 @@
     int DialogManager::getSize()
     {   
-        return 2; //return this->answerIds_->size();
+        return this->answerIds_->size();
     }
 
@@ -42,7 +42,15 @@
     }
 
-    bool DialogManager::endtest()
-    {
-    	return this->currentTalk_->ending();
+    bool DialogManager::endtest(int index)
+    {   
+        if(this->answerIds_->empty())
+        {
+            return true;
+        }
+        else 
+        {
+            return this->currentTalk_->ending(this->answerIds_->at(index));
+        }
+
     }
 
Index: code/branches/Dialog_HS17/src/modules/dialog/DialogManager.h
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/DialogManager.h	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/DialogManager.h	(revision 11644)
@@ -22,16 +22,28 @@
         DialogManager(); 
         
-
+        //gibt lua den pointer auf den Manager
         static DialogManager& getInstance() { return Singleton<DialogManager>::getInstance(); } //tolua_export
 
+        //setzt den momentanen Dialog auf den uebergebenen, wird vom Dialog verwendet um bei Trigger event sich selbst zu setzen
         void setDialog(Dialog* dialog);
 
-        //from here on luafunctionality is declared
+        //von hier an sind lua funktionalitaeten definiert
 
+        //gibt den string der momentanen Frage des Dialogs
         std::string getQuestion(); //tolua_export
+
+        //gibt die laenge des Antwort-arrays der momentanen zuruek, 0 falls es leer ist
         int getSize(); //tolua_export
+
+        //gibt den sting zu einer Frage im antwortarray der momentanen Frage
         std::string getAnswer(int index); //tolua_export
+
+        //gibt den Namen der Person mit der man spricht
         std::string getPerson(); //tolua_export
-        bool endtest(); //tolua_export
+
+        //testet ob der dialog weiter geht, true wenn es keine weitere Frage nach der Antwort kommt oder keine Antwort zur Frage existiert
+        bool endtest(int index); //tolua_export
+
+        //updated den Dialog so dass er auf die Antwort die im Antwortvector am index steht reagiert
         void update(int index); //tolua_export
 
@@ -40,5 +52,5 @@
 
     Dialog* currentTalk_;
-    std::vector<std::string>* answerIds_;
+    const std::vector<std::string>* answerIds_;
 
     };//tolua_export
Index: code/branches/Dialog_HS17/src/modules/dialog/Question.cc
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/Question.cc	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/Question.cc	(revision 11644)
@@ -22,20 +22,20 @@
 	}
 
-	void Question::setQuestionId(std::string Id)
+	void Question::setQuestionId(const std::string& Id)
 	{
 		this->questionId_ = Id;
 	}
 
-	std::string Question::getQuestionId()
+	const std::string& Question::getQuestionId() const
 	{
 		return this->questionId_;
 	}
 
-	void Question::setQuestion(std::string question)
+	void Question::setQuestion(const std::string& question)
 	{
 		this->question_ = question;
 	}
 
-	std::string Question::getQuestion()
+	const std::string& Question::getQuestion() const
 	{
 		return this->question_;
@@ -47,10 +47,10 @@
 	}
 
-	AnswerId* Question::getAnswerId(unsigned int index) const
+	const AnswerId* Question::getAnswerId() const
 	{
 		return nullptr;
 	}
 
-	std::vector<std::string>* Question::getAnswerIds()
+	const std::vector<std::string>* Question::getAnswerIds()
 	{
 		return &(this->answerIds_);
Index: code/branches/Dialog_HS17/src/modules/dialog/Question.h
===================================================================
--- code/branches/Dialog_HS17/src/modules/dialog/Question.h	(revision 11642)
+++ code/branches/Dialog_HS17/src/modules/dialog/Question.h	(revision 11644)
@@ -20,18 +20,14 @@
 			virtual void XMLPort(Element& xmelement, XMLPort::Mode mode);
 
-			void setQuestionId(std::string Id);
-			std::string getQuestionId();
+			void setQuestionId(const std::string& Id);	//xmlPort-Funktion, setzt Id
+			const std::string& getQuestionId() const;	//xmlPort-Funktion, gibt Id string zuruek
 
-			void setQuestion(std::string question);
-			std::string getQuestion();
+			void setQuestion(const std::string& question);	//xmlPort-Funktion, setzt Fragen string
+			const std::string& getQuestion() const;	//xmlPort-Funktion, gibt Fragen string
 
-			void addAnswerId(AnswerId* answerId); //leer lassen um Dialog zu beenden
-			AnswerId* getAnswerId(unsigned int index) const;
+			void addAnswerId(AnswerId* answerId); 	//xmlPort-Funktion, nimmt AnswerIds von entsprechenden Objekten und fuegt sie in List ein.
+			const AnswerId* getAnswerId() const;	//xmlPort-Funktion, gibt nichts zuruek
 
-			
-			//braucht es getAnswerId oder reicht es andere funktion anzugeben,
-			// die sowieso gebraucht wird?
-
-			std::vector<std::string>* getAnswerIds(); //returnt vektor mit allen Ids
+			const std::vector<std::string>* getAnswerIds(); //returnt Pointer auf Vektor mit allen Ids
 
 
