[Release]Res Data erweiterung.

    • [Release]Res Data erweiterung.

      Hallo @All :)

      Ich Release heute mal die Res Data erweiterung, diese mit V17 Dazu gekommen ist, und nein ich Release nicht die Doofen Parameter da die schon Public sind damit das ding überhaupt geladen wird, nein ich Release das, damit ihr diese Parameter auch verwendet.

      Was meine ich mit Res Data erweiterung?

      Beispiel: Skill Tree Static SP

      WTYPE_STATIC WIDC_STATIC_SP "WndEditTile200.tga" 1 116 324 166 340 0x2220011 0 0 0 0 46 112 169


      Was haben die 3 Parameter zu bedeuten?

      Ganz einfach, R/G/B ( D3D COLORS ).

      Nun zum Eigentlichen Release:

      In dem Project "Neuz" müsstet ihr in _Interface 2 daten Namens ResManager.cpp & ResManager.h haben, jetzt öffnet ihr diese 2 Daten und sucht nach BOOL CResManager::Load( LPCTSTR lpszName )

      Darunter findet ihr:

      CScript scanner;
      if( scanner.Load( lpszName, FALSE ) == FALSE )
      return FALSE;

      DWORD dwWndType;
      scanner.GetToken_NoDef();

      while( scanner.tok != FINISHED )
      {


      Und so weiter, diese Funktion ersetzt ihr komplett mit:

      BOOL CResManager::Load( LPCTSTR lpszName )
      {
      CScript scanner;
      if( scanner.Load( lpszName, FALSE ) == FALSE )
      return FALSE;

      DWORD dwWndType;
      scanner.GetToken_NoDef();

      while( scanner.tok != FINISHED )
      {
      LPWNDAPPLET pWndApplet = new WNDAPPLET;
      pWndApplet->pWndBase = NULL;
      pWndApplet->strDefine = scanner.token;
      pWndApplet->dwWndId = CScript::GetDefineNum( scanner.token );

      scanner.GetToken();
      pWndApplet->strTexture = scanner.token;
      scanner.GetToken();//pWndApplet->strBackground = scanner.token;
      pWndApplet->bTile = scanner.GetNumber();
      CSize size;
      pWndApplet->size.cx = scanner.GetNumber();
      pWndApplet->size.cy = scanner.GetNumber();
      pWndApplet->dwWndStyle = scanner.GetNumber();
      pWndApplet->d3dFormat = (D3DFORMAT)scanner.GetNumber();

      // ŸÀÌÆ²
      pWndApplet->strTitle = GetLangApplet( scanner, pWndApplet, FALSE );
      // ÇÛÇÁ Ű
      pWndApplet->strToolTip = GetLangApplet( scanner, pWndApplet, TRUE );


      // HelpKey
      m_mapWndApplet.SetAt( (void*)pWndApplet->dwWndId, pWndApplet );
      scanner.GetToken(); // skip {
      dwWndType = scanner.GetNumber();
      while( *scanner.token != '}' )
      {
      LPWNDCTRL pWndCtrl = new WNDCTRL;
      pWndCtrl->dwWndType = dwWndType;
      scanner.GetToken_NoDef();
      pWndCtrl->strDefine = scanner.token;///Char;
      for( int z = 0; z < pWndApplet->ptrCtrlArray.GetSize(); z++ )
      {
      if( ((LPWNDCTRL)pWndApplet->ptrCtrlArray.GetAt( z ) )->strDefine == pWndCtrl->strDefine )
      {
      CString string;
      string.Format( "%s¿¡¼* ID Ãæµ¹ %s ", pWndApplet->strDefine, pWndCtrl->strDefine );
      AfxMessageBox( string );
      }
      }
      pWndCtrl->dwWndId = CScript::GetDefineNum( scanner.token );
      scanner.GetToken();
      pWndCtrl->strTexture = scanner.token;//token;
      pWndCtrl->bTile = scanner.GetNumber();
      pWndCtrl->rect.left = scanner.GetNumber();
      pWndCtrl->rect.top = scanner.GetNumber();
      pWndCtrl->rect.right = scanner.GetNumber();
      pWndCtrl->rect.bottom = scanner.GetNumber();
      pWndCtrl->dwWndStyle = scanner.GetNumber();

      // visible, Group, Disabled, TabStop
      pWndCtrl->m_bVisible = scanner.GetNumber();
      pWndCtrl->m_bGroup = scanner.GetNumber();
      pWndCtrl->m_bDisabled = scanner.GetNumber();
      pWndCtrl->m_bTabStop = scanner.GetNumber();

      pWndCtrl->m_nRed = scanner.GetNumber();
      pWndCtrl->m_nGreen = scanner.GetNumber();
      pWndCtrl->m_nBlue = scanner.GetNumber();

      // ŸÀÌÆ²
      pWndCtrl->strTitle = GetLangCtrl( scanner, pWndCtrl, FALSE );
      // ÇÛÇÁ Ű
      pWndCtrl->strToolTip = GetLangCtrl( scanner, pWndCtrl, TRUE );

      pWndApplet->ptrCtrlArray.Add( pWndCtrl );
      dwWndType = scanner.GetNumber();
      }
      scanner.GetToken_NoDef();
      }

      return TRUE;
      }



      Nun geht ihr in ResManager.h.

      Dort seht ihr typedef struct tagWndCtrl und darin Addet ihr folgendes:

      int m_nRed;
      int m_nBlue;
      int m_nGreen;


      Speichern & Schließen.

      Nun wird die ResData von v17 Allgemein geladen, allerdings ist das immer noch nicht der Release :D

      Weiter gehts!

      Nun öffnet ihr die WndNeuz.cpp und sucht nach CWndBase* CWndNeuz::CreateControl( HWND hWnd, LPWNDCTRL lpWndCtrl )

      Darunter findet ihr:

      DWORD dwWndStyle = lpWndCtrl->dwWndStyle;
      CWndBase* pWndBase = NULL;
      switch( lpWndCtrl->dwWndType )
      {


      usw, da sucht ihr nach case WTYPE_STATIC ersetzt das dann durch:

      ((CWndStatic*)pWndBase)->Create( lpWndCtrl->strTitle, dwWndStyle | WBS_CAPTION, lpWndCtrl->rect, this, lpWndCtrl->dwWndId, lpWndCtrl->m_nRed, lpWndCtrl->m_nGreen, lpWndCtrl->m_nBlue );



      Abspeichern & Schließen.

      Jetzt kommen wir zum Letzten teil, und zwar öffnet ihr nun WndControl.cpp und sucht dort nach: BOOL CWndStatic::Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWndBase* pParentWnd, UINT nID )

      Das ersetzt ihr durch:

      BOOL CWndStatic::Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWndBase* pParentWnd, UINT nID, int R, int G, int B )


      Darunter löscht ihr alles von { bis } und schreibt das hinein:

      if( lpszCaption && strlen( lpszCaption ) ) m_strTitle = lpszCaption;
      if( !(dwStyle & WSS_GROUPBOX) )
      m_strTexture = "";//WndEditTile200.tga";

      m_dwColor = D3DCOLOR_ARGB( 255, R, G, B );
      return CWndBase::Create( dwStyle | WBS_CHILD | WBS_NOFRAME , rect, pParentWnd, nID );


      Dann sollte es so aussehen:

      BOOL CWndStatic::Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWndBase* pParentWnd, UINT nID, int R, int G, int B )
      {
      if( lpszCaption && strlen( lpszCaption ) ) m_strTitle = lpszCaption;
      if( !(dwStyle & WSS_GROUPBOX) )
      m_strTexture = "";//WndEditTile200.tga";

      m_dwColor = D3DCOLOR_ARGB( 255, R, G, B );
      return CWndBase::Create( dwStyle | WBS_CHILD | WBS_NOFRAME , rect, pParentWnd, nID );
      }


      Jetzt Speichern & Schließen.

      Öffnet jetzt die datei WndControl.h und sucht nach der Klasse CWndStatic dort seht ihr BOOL Create( .. und dies ändert ihr Komplett in folgendes:

      BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWndBase* pParentWnd, UINT nID, int R = 255, int G = 255, int B = 255 );


      Jetzt habt ihr es auch schon geschafft!

      Compiled jetzt die Neuz und Startet sie mit den Aktuellen Res Daten, wenn ihr 100%ig alles befolgt habt, sollte euer Skill Tree ( Beispiel ) so aussehen:



      Offi Like ftw! o.O

      Credits & so: Crasy :)

      Mfg.
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Naja, WndControl.cpp findest ja WndStatic, oben findest du CWndStatic::CWndStatic, dort wird die Farbe auf 0xFFFFFFFF gesetzt ( Weiß ), unten bei Create wird dann überprüft ob es eine Group Static ist ( Skill Tree z.b. SP ) und wenn das nicht ist, wird die Farbe auf 0xff gesetzt ( Das blaue ) der Normalen Static, nun ich hab ganz einfach die Farbe 0xff durch D3DCOLOR_ARGB ersetzt, sodas es aus den Res ( Offi ) ausgelesen wird, damit das nicht nur bei Normalen Static's passiert hab ich das unter der If Abfrage gesetzt, ansonsten wären die Group Static's weiß. :)

      Sagen wir es so: Es wird am anfang in CWndStatic::CWndStatic eine Farbe gesetzt, diese wird unten überschrieben wenn es eine Gruppe ist, wenn nicht bleibt sie Weiß und das hab ich geändert. :)

      Den allgemeinen aufruf der Farbe findest du darunter, in OnDraw da scroll etwas runter und du Findest


      p2DRender->TextOut( 0 + point.x, point.y, m_strTitle, m_dwColor );
      p2DRender->TextOut( 1 + point.x, point.y, m_strTitle, m_dwColor );