//The function is given new messages from the Game1 class as a new event is raised //It also reactivates the chatbox //This is the event's text that was requested; no other events are brought in public static void SetNewInfo(List<String> myList) { uninterpretedMessages = myList; actorArray = new Actor[4]; speakerName = ""; messageLines = new string[maxLines]; chatboxes = new List<ChatBox>(); for (int line = 0; line < uninterpretedMessages.Count; line++) { //We found a new chatbox if (uninterpretedMessages[line].Contains(" ; ")) { string[] chatboxParameters = uninterpretedMessages[line].Split(new string[] { " ; " }, StringSplitOptions.None); Actor[] tempActorArray = new Actor[4]; string tempSpeakerName = ""; //Creating the actors array and the speaker for the chatbox for (int p = 0; p < 4; p++) { string[] characterInfo = chatboxParameters[p].Split(new string[] { " , " }, StringSplitOptions.None); if (characterInfo[0] != "None") { if (ConvertDirectionToNumber(chatboxParameters[4]) == p) { tempActorArray[p] = new Actor(portraitDictionary[characterInfo[0]], (Emotion)Enum.Parse(typeof(Emotion), characterInfo[1]), p, actorPositions, true); tempSpeakerName = characterInfo[0]; } else { tempActorArray[p] = new Actor(portraitDictionary[characterInfo[0]], (Emotion)Enum.Parse(typeof(Emotion), characterInfo[1]), p, actorPositions, false); } } } string tempMessage = ""; //We are fetching the message of the chatbox here for (int messageIndex = line + 1; messageIndex < uninterpretedMessages.Count; messageIndex++) { if (messageIndex < uninterpretedMessages.Count) { if (uninterpretedMessages[messageIndex].Contains(" ; ")) { //If we reach the next chatbox we stop what we are doing break; } //TODO: FIX THE ERROR tempMessage += uninterpretedMessages[messageIndex] + " "; } } int charactersUsedOnCurrentLine = 0; string[] tempMessageWords = tempMessage.Split(' '); string[] chatboxSpecificMessageLines = new string[maxLines]; int currentLine = 0; //Go through everyword and put it on a line for (int w = 0; w < tempMessageWords.Length; w++) { //OK we have to add a space at the end of every word, make dealings if (charactersUsedOnCurrentLine + tempMessageWords[w].ToCharArray().Length + 1 <= maxCharactersPerLine) { //If we can fit the word on the line put it in chatboxSpecificMessageLines[currentLine] += tempMessageWords[w] + " "; charactersUsedOnCurrentLine += tempMessageWords[w].ToCharArray().Length; charactersUsedOnCurrentLine++;//The space } else//What happens when the word we are adding puts us over the line limit { currentLine++;//Go to the next line and clear the numuber of chars used charactersUsedOnCurrentLine = 0; if (currentLine < maxLines) { //The word is placed on the next lien chatboxSpecificMessageLines[currentLine] += tempMessageWords[w] + " "; charactersUsedOnCurrentLine += tempMessageWords[w].ToCharArray().Length; charactersUsedOnCurrentLine++; } else//We would normally go to the next line, but low and behold, we are out of lines! { currentLine = 0; //Create a new chatbox, we're at the extent of this one ChatBox box = new ChatBox(tempSpeakerName, tempActorArray, chatboxSpecificMessageLines); chatboxes.Add(box); chatboxSpecificMessageLines = new string[maxLines]; chatboxSpecificMessageLines[currentLine] += tempMessageWords[w] + " "; charactersUsedOnCurrentLine += tempMessageWords[w].ToCharArray().Length; charactersUsedOnCurrentLine++; } } } if (charactersUsedOnCurrentLine != 0) { ChatBox box = new ChatBox(tempSpeakerName, tempActorArray, chatboxSpecificMessageLines); chatboxes.Add(box); } } } currentWritten = new string[maxLines]; active = true; status = ChatboxStatus.Writing; }
public ChatBox(string mySpeaker,Actor[] myActors,string[] myMessage) { speaker = mySpeaker; actors = myActors; messageLines = myMessage; }