Changeset 144
- Timestamp:
- 09/01/10 17:07:59 (17 months ago)
- Location:
- cafu/trunk
- Files:
-
- 6 modified
-
Ca3DE/Client/ClientStateInGame.cpp (modified) (4 diffs)
-
Ca3DE/Client/ScrlInfo.cpp (modified) (3 diffs)
-
Ca3DE/Client/ScrlInfo.hpp (modified) (2 diffs)
-
CaTools/MaterialViewer.cpp (modified) (1 diff)
-
Libs/Fonts/Font.cpp (modified) (4 diffs)
-
Libs/Fonts/Font.hpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cafu/trunk/Ca3DE/Client/ClientStateInGame.cpp
r136 r144 405 405 static ConVarT ShowPosition("showPos", false, ConVarT::FLAG_MAIN_EXE, "Toggles whether the current players position is shown."); 406 406 407 if (ShowFrameRate.GetValueBool()) Font_f.Print(FrameSize.GetWidth()-100, FrameSize.GetHeight()-16, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "FPS %5.1f", 1.0f/FrameTime);407 if (ShowFrameRate.GetValueBool()) Font_f.Print(FrameSize.GetWidth()-100, FrameSize.GetHeight()-16, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, cf::va("FPS %5.1f", 1.0f/FrameTime)); 408 408 409 409 if (ShowPosition.GetValueBool()) … … 415 415 // LeafContents=World->GetCa3DEWorldP()->Map.Leaves[LeafNr].IsWaterLeaf ? 'w' : 'i'; 416 416 417 Font_f.Print(FrameSize.GetWidth()-130, 15, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "X %10.1f", OurEntityCurrentState->Origin.x);418 Font_f.Print(FrameSize.GetWidth()-130, 35, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Y %10.1f", OurEntityCurrentState->Origin.y);419 Font_f.Print(FrameSize.GetWidth()-130, 55, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Z %10.1f", OurEntityCurrentState->Origin.z);420 Font_f.Print(FrameSize.GetWidth()-130, 75, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Hdg %8u", OurEntityCurrentState->Heading);421 // Font_f.Print(FrameSize.GetWidth()-100, FrameSize.GetHeight()-32, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "L %4u %c", LeafNr, LeafContents);417 Font_f.Print(FrameSize.GetWidth()-130, 15, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, cf::va("X %10.1f", OurEntityCurrentState->Origin.x)); 418 Font_f.Print(FrameSize.GetWidth()-130, 35, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, cf::va("Y %10.1f", OurEntityCurrentState->Origin.y)); 419 Font_f.Print(FrameSize.GetWidth()-130, 55, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, cf::va("Z %10.1f", OurEntityCurrentState->Origin.z)); 420 Font_f.Print(FrameSize.GetWidth()-130, 75, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, cf::va("Hdg %8u", OurEntityCurrentState->Heading)); 421 // Font_f.Print(FrameSize.GetWidth()-100, FrameSize.GetHeight()-32, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, cf::va("L %4u %c", LeafNr, LeafContents)); 422 422 } 423 423 … … 529 529 530 530 #ifdef DEBUG 531 LoadingFont->Print(FrameSize.GetWidth()/2-34*CharWidth/2, FrameSize.GetHeight()*9/10+12, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Version: %s [Debug build], %s", __DATE__, LoadingProgressText.c_str());531 LoadingFont->Print(FrameSize.GetWidth()/2-34*CharWidth/2, FrameSize.GetHeight()*9/10+12, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Version: "__DATE__" [Debug build], "+LoadingProgressText); 532 532 #else 533 LoadingFont->Print(FrameSize.GetWidth()/2-20*CharWidth/2, FrameSize.GetHeight()*9/10+12, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Version: %s",__DATE__);533 LoadingFont->Print(FrameSize.GetWidth()/2-20*CharWidth/2, FrameSize.GetHeight()*9/10+12, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Version: "__DATE__); 534 534 #endif 535 535 536 536 if (LoadingProgressPercent>0) 537 LoadingFont->Print(FrameSize.GetWidth()/2-10*CharWidth/2, FrameSize.GetHeight()*9/10+30, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Loading... %.0f%%", LoadingProgressPercent*100.0f);537 LoadingFont->Print(FrameSize.GetWidth()/2-10*CharWidth/2, FrameSize.GetHeight()*9/10+30, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, cf::va("Loading... %.0f%%", LoadingProgressPercent*100.0f)); 538 538 else 539 539 LoadingFont->Print(FrameSize.GetWidth()/2-10*CharWidth/2, FrameSize.GetHeight()*9/10+30, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Loading..."); … … 747 747 Client.NextState=ClientT::IDLE; 748 748 749 Console->Print(cf::va("Client with EntityID %u has left the game. Reason: %s\n", EntityID, Reason)); 750 SystemScrollInfo.Print("Client with EntityID %u has left the game. Reason: %s", EntityID, Reason); 749 const std::string msg=cf::va("Client with EntityID %u has left the game. Reason: ", EntityID)+Reason+"\n"; 750 751 Console->Print(msg); 752 SystemScrollInfo.Print(msg); 751 753 break; 752 754 } 753 755 754 756 default: 757 { 755 758 // Alle SC1_EntityUpdate-Messages sollten nach SC1_FrameInfo schon gelesen worden sein! 756 759 cf::LogDebug(net, "SC1_???: WARNING: Unknown SC1_* in-game message type '%u' received!\n", MessageType); 757 Console->Print(cf::va("WARNING: Unknown in-game message type '%3u' received!\n", MessageType)); 758 SystemScrollInfo.Print("WARNING: Unknown in-game message type '%3u' received!", MessageType); 760 761 const std::string msg=cf::va("WARNING: Unknown in-game message type '%3u' received!\n", MessageType); 762 763 Console->Print(msg); 764 SystemScrollInfo.Print(msg); 759 765 // assert(false); 766 } 760 767 } 761 768 } -
cafu/trunk/Ca3DE/Client/ScrlInfo.cpp
r136 r144 22 22 */ 23 23 24 /*******************/25 /*** Scroll Info ***/26 /*******************/27 28 #include <stdio.h>29 #include <stdarg.h>30 31 24 #include "ScrlInfo.hpp" 32 25 #include "Fonts/Font.hpp" 33 26 #include "ConsoleCommands/ConVar.hpp" 34 27 35 #if defined(_WIN32)36 #if defined(_MSC_VER)37 #define vsnprintf _vsnprintf38 #endif39 #endif40 28 41 42 static ConVarT TimeToLive("cl_MsgShowTime", 6.0, ConVarT::FLAG_MAIN_EXE, "How long (in seconds) info and chat messages are shown.", 0.0f, 30.0); 29 static ConVarT TimeToLive("cl_MsgShowTime", 6.0, ConVarT::FLAG_MAIN_EXE, "How long (in seconds) info and chat messages are shown.", 0.0, 30.0); 43 30 44 31 45 32 ScrollInfoT::ScrollInfoT() 33 : m_MAX_LINES(8) 46 34 { 47 assert(TimeToLive.GetType()==ConVarT::Double); 48 49 MAX_LINES =8; 50 FirstLine =0; 51 NrOfLines =0; 52 TimeLeft =float(TimeToLive.GetValueDouble()); 53 54 InfoLine.PushBackEmpty(MAX_LINES); 55 for (char LineNr=0; LineNr<MAX_LINES; LineNr++) 56 { 57 InfoLine[LineNr].PushBackEmpty(256); 58 InfoLine[LineNr][0]=0; 59 } 35 m_TimeLeft=float(TimeToLive.GetValueDouble()); 60 36 } 61 37 62 38 63 void ScrollInfoT::Print(const char* PrintString, ...)39 void ScrollInfoT::Print(const std::string& Line) 64 40 { 65 va_list ArgList; 66 char InfoLineString[256]; 41 m_InfoLines.PushBack(Line); 67 42 68 if (!PrintString) return; 69 70 va_start(ArgList, PrintString); 71 vsnprintf(InfoLineString, 256, PrintString, ArgList); 72 va_end(ArgList); 73 74 if (NrOfLines==MAX_LINES) 43 while (m_InfoLines.Size()>m_MAX_LINES) 75 44 { 76 sprintf(&InfoLine[FirstLine][0], "%s", InfoLineString); 77 FirstLine=(FirstLine+1) % MAX_LINES; 78 TimeLeft=float(TimeToLive.GetValueDouble()); 79 return; 45 m_InfoLines.RemoveAtAndKeepOrder(0); 46 m_TimeLeft=float(TimeToLive.GetValueDouble()); 80 47 } 81 82 sprintf(&InfoLine[(FirstLine+NrOfLines) % MAX_LINES][0], "%s", InfoLineString);83 NrOfLines++;84 48 } 85 49 … … 87 51 void ScrollInfoT::Draw(FontT& Font, unsigned long PosX, unsigned long PosY, float FrameWidth, float FrameHeight) const 88 52 { 89 if ( NrOfLines==0) return;53 if (m_InfoLines.Size()==0) return; 90 54 91 55 Font.AccPrintBegin(FrameWidth, FrameHeight); 92 56 93 for ( char LineNr=0; LineNr<NrOfLines; LineNr++)94 Font.AccPrint(PosX, PosY+20*LineNr, 0x00BBDDFF, "%s", &InfoLine[(FirstLine+LineNr) % MAX_LINES][0]);57 for (unsigned long LineNr=0; LineNr<m_InfoLines.Size(); LineNr++) 58 Font.AccPrint(PosX, PosY+20*LineNr, 0x00BBDDFF, m_InfoLines[LineNr]); 95 59 96 60 Font.AccPrintEnd(); … … 100 64 void ScrollInfoT::AdvanceTime(float FrameTime) 101 65 { 102 if ( NrOfLines==0) return;66 if (m_InfoLines.Size()==0) return; 103 67 104 TimeLeft-=FrameTime;105 if ( TimeLeft>0) return;68 m_TimeLeft-=FrameTime; 69 if (m_TimeLeft>0) return; 106 70 107 // Oberste Zeile entfernen 108 FirstLine=(FirstLine+1) % MAX_LINES; 109 NrOfLines--; 110 TimeLeft=float(TimeToLive.GetValueDouble()); 71 m_InfoLines.RemoveAtAndKeepOrder(0); 72 m_TimeLeft=float(TimeToLive.GetValueDouble()); 111 73 } -
cafu/trunk/Ca3DE/Client/ScrlInfo.hpp
r136 r144 22 22 */ 23 23 24 /*******************/25 /*** Scroll Info ***/26 /*******************/27 28 24 #ifndef _CLIENT_SCROLLINFO_HPP_ 29 25 #define _CLIENT_SCROLLINFO_HPP_ 30 26 31 27 #include "Templates/Array.hpp" 28 #include <string> 32 29 33 30 … … 37 34 class ScrollInfoT 38 35 { 39 private:40 41 char MAX_LINES;42 char FirstLine;43 char NrOfLines;44 float TimeLeft;45 ArrayT< ArrayT<char> > InfoLine;46 47 48 36 public: 49 37 50 38 ScrollInfoT(); 51 void Print(const char* PrintString, ...); 39 40 void Print(const std::string& Line); 52 41 void Draw(FontT& Font, unsigned long PosX, unsigned long PosY, float FrameWidth, float FrameHeight) const; 53 42 void AdvanceTime(float FrameTime); 43 44 45 private: 46 47 const unsigned int m_MAX_LINES; 48 float m_TimeLeft; 49 ArrayT<std::string> m_InfoLines; 54 50 }; 55 51 -
cafu/trunk/CaTools/MaterialViewer.cpp
r136 r144 504 504 505 505 506 MyFont->Print(SingleOpenGLWindow->GetWidth()-100, SingleOpenGLWindow->GetHeight()-18, float(SingleOpenGLWindow->GetWidth()), float(SingleOpenGLWindow->GetHeight()), 0x00FFFFFF, "%5.1f FPS", 1.0/DeltaTime);506 MyFont->Print(SingleOpenGLWindow->GetWidth()-100, SingleOpenGLWindow->GetHeight()-18, float(SingleOpenGLWindow->GetWidth()), float(SingleOpenGLWindow->GetHeight()), 0x00FFFFFF, cf::va("%5.1f FPS", 1.0/DeltaTime)); 507 507 } 508 508 MatSys::Renderer->EndFrame(); -
cafu/trunk/Libs/Fonts/Font.cpp
r136 r144 22 22 */ 23 23 24 /**************************/25 /*** MatSys Font (Code) ***/26 /**************************/27 28 #include <stdio.h>29 #include <stdarg.h>30 #include <string.h>31 32 24 #include "Font.hpp" 33 25 #include "MaterialSystem/Material.hpp" … … 36 28 #include "MaterialSystem/Renderer.hpp" 37 29 #include "Math3D/Matrix.hpp" 38 39 #if defined(_WIN32)40 #if defined(_MSC_VER)41 #define vsnprintf _vsnprintf42 #endif43 #endif44 30 45 31 … … 75 61 76 62 77 void FontT::Print(int PosX, int PosY, float FrameWidth, float FrameHeight, unsigned long Color, const char* PrintString, ...)63 void FontT::Print(int PosX, int PosY, float FrameWidth, float FrameHeight, unsigned long Color, const std::string& PrintString) 78 64 { 79 if (!PrintString) return;80 81 va_list ArgList;82 char PrintBuffer[256];83 84 va_start(ArgList, PrintString);85 vsnprintf(PrintBuffer, 256, PrintString, ArgList);86 va_end(ArgList);87 88 65 AccPrintBegin(FrameWidth, FrameHeight); 89 AccPrint(PosX, PosY, Color, Print Buffer);66 AccPrint(PosX, PosY, Color, PrintString); 90 67 AccPrintEnd(); 91 68 } … … 105 82 106 83 107 void FontT::AccPrint(int PosX, int PosY, unsigned long Color, const char* PrintString, ...)84 void FontT::AccPrint(int PosX, int PosY, unsigned long Color, const std::string& PrintString) 108 85 { 109 if (!PrintString) return;110 111 va_list ArgList;112 char PrintBuffer[256];113 114 va_start(ArgList, PrintString);115 vsnprintf(PrintBuffer, 256, PrintString, ArgList);116 va_end(ArgList);117 118 119 86 MatSys::Renderer->SetMatrix(MatSys::RendererI::MODEL_TO_WORLD, MatrixT::GetTranslateMatrix(Vector3fT(float(PosX), float(PosY), 0.0f))); 120 87 MatSys::Renderer->SetCurrentAmbientLightColor(char((Color >> 16) & 0xFF)/255.0f, char((Color >> 8) & 0xFF)/255.0f, char(Color & 0xFF)/255.0f); 121 88 MatSys::Renderer->SetCurrentMaterial(RenderMaterial); 122 89 123 124 90 static MatSys::MeshT TextMesh(MatSys::MeshT::Quads); 125 91 TextMesh.Vertices.Overwrite(); 126 TextMesh.Vertices.PushBackEmpty((unsigned long)(4* strlen(PrintBuffer)));92 TextMesh.Vertices.PushBackEmpty((unsigned long)(4*PrintString.length())); 127 93 128 for ( unsigned long c=0; PrintBuffer[c]; c++)94 for (size_t c=0; c<PrintString.length(); c++) 129 95 { 130 const float CoordX=float(Print Buffer[c] & 0xF)/16.0f; // PrintBuffer[c] % 16131 const float CoordY=float(Print Buffer[c] >> 4)/16.0f; // PrintBuffer[c] / 1696 const float CoordX=float(PrintString[c] & 0xF)/16.0f; // PrintString[c] % 16 97 const float CoordY=float(PrintString[c] >> 4)/16.0f; // PrintString[c] / 16 132 98 const float Size =16.0/256.0; 133 99 -
cafu/trunk/Libs/Fonts/Font.hpp
r136 r144 21 21 ================================================================================= 22 22 */ 23 24 /****************************/25 /*** MatSys Font (Header) ***/26 /****************************/27 23 28 24 #ifndef _MATSYS_FONT_HPP_ … … 55 51 56 52 /// Prints PrintString at (PosX, PosY) in color Color. 57 void Print(int PosX, int PosY, float FrameWidth, float FrameHeight, unsigned long Color, const char* PrintString, ...);53 void Print(int PosX, int PosY, float FrameWidth, float FrameHeight, unsigned long Color, const std::string& PrintString); 58 54 59 55 /// Accumulative printing functions. Faster if you have to call Print() a lot. 60 56 void AccPrintBegin(float FrameWidth, float FrameHeight); 61 void AccPrint(int PosX, int PosY, unsigned long Color, const char* PrintString, ...);57 void AccPrint(int PosX, int PosY, unsigned long Color, const std::string& PrintString); 62 58 void AccPrintEnd(); 63 59
