void TypewriterText::Draw(CDisplay& DisplayRef) { for(int i = 0, k = 0; k < mFirstLine && i < mStringLength; i++) { if(mString[i] == '\n') k++; } if(i >= mStringLength){ return; //UH, WHAT? } Font* OurFont = GetFontBySizeIndex(mFontNumber); if(!OurFont) return; //WE'RE AT OUR STARTING POINT. POINT Origin; Origin.x = mXOrigin; Origin.y = mYOrigin; int DrawnLines = 1; for(; i < mCurrentStringPosition && DrawnLines <= mMaxLinesToDraw; i++) { if(mString[i] == '\n'){ Origin.y += OurFont->GetCharHeight(); DrawnLines++; Origin.x = mXOrigin; } else{ Origin.x += OurFont->DrawLetter(mString[i], Origin); } } //WE'RE AT THE CURSOR POSITION. if(mCursorSpriteNumber == -1 || mCursorFlashDelay == -1){ return; } if(Origin.x + mCursorSprite.GetWidth() > mWidth + mXOrigin){ Origin.y += OurFont->GetCharHeight(); } mCursorSprite.SetLoc(Origin); if(mCursorOn) mCursorSprite.Draw(DisplayRef); }