public override void UpdateLogic(OfficeWorld officeWorld, Time timeElapsed) { if (this.previousPosition.X != this.position.X || this.previousPosition.Y != this.position.Y) { if (this.isFocused == false) { officeWorld.NotifyTextPositionChanged(this, this.previousToken, this.position); } else { officeWorld.NotifyObjectPositionChanged(this, this.position); } this.previousPosition = new Vector2f(this.position.X, this.position.Y); } if (this.isFocused != this.previousIsFocused) { officeWorld.NotifyObjectFocusChanged(this, this.isFocused); this.previousIsFocused = this.isFocused; } if (this.displayedText.Equals(this.previousDisplayedText) == false) { officeWorld.NotifyObjectTextChanged(this, this.displayedText); this.previousDisplayedText = this.displayedText; AToken nextToken = this.NextToken; if (nextToken != null && nextToken.IsTextFull) { while (nextToken != null) { nextToken.SetKinematicParameters(nextToken.InitialPosition, new SFML.System.Vector2f(0, 0)); nextToken = nextToken.NextToken; } } } if (this.isTextLaunched && this.speedText > 0 && this.indexText < this.text.Length) { this.nbCharacterToAdd += this.speedText * timeElapsed.AsSeconds() * this.speedFactor; int nbCharacterToAddInteger = (int)this.nbCharacterToAdd; this.indexText += nbCharacterToAddInteger; this.indexText = Math.Min(this.text.Length, this.indexText); this.nbCharacterToAdd -= nbCharacterToAddInteger; this.displayedText = this.text.Substring(0, this.indexText); } if (this.IsTextFull && this.isTextLaunched) { this.isTextLaunched = false; } }