[SOURCE] Make-Path spalten

03/21/2014 00:45 MrDemian#1
Schönen Tag euch,

Ich habe mich mit den Pfadangaben der Source beschäftigt und habe nun eine Frage zum Model Ordner.

Mir geht es dadrum die Ordnerpfade komplett neu zu gestalten und dabei auch de Model-Ordner durch drei zuteilen.

Das einzige Problem was ich dabei habe ist, das in der Source mit nur einer Make-Path Funktion gearbeitet wird.

Beispiel aus der Bone.cpp (Wichtig für die Chr):
Quote:
int CBones :: LoadBone( LPCTSTR szFileName )
{
int nNumBone;
int i;
int nLen;
int nVer;

CResFile resFp;
BOOL bRet = resFp.Open( MakePath( DIR_MODEL, szFileName ), "rb" );
if( bRet == FALSE )
return FAIL;
Meine Frage ist nun, Kann ich mit einer #else/else Funktion einen anderen Ordner angeben z.B. DIR_MOVER?

Quasi:
Quote:
BOOL bRet = resFp.Open( MakePath( DIR_MODEL, szFileName ), "rb" );
and BOOL bRet = resFp.Open( MakePath( DIR_MOVER, szFileName ), "rb" );
(Sehr schlecht aber so in etwa :D)

Es tut mir Leid, wenn sich jetzt einige an den Kopf fassen.
Nur nicht jeder ist eine C++ Gottheit.
Manche Leute sind auch einfach besser im Resource.
(Meine Meinung.)

Ich hoffe jemand hier, kann mir damit helfen und versteht auch was ich vorhabe.

Mit freundlichem Gruß,
Demian
03/21/2014 14:06 xDynaMight#2
Naja.... ich weiß nicht was genau du meinst... aber ich denke du willst es so:
Code:
#ifdef __DEIN_DEFINE
BOOL bRet = resFp.Open( MakePath( DIR_MOVER, szFileName ), "rb" );	
#else
BOOL bRet = resFp.Open( MakePath( DIR_MODEL, szFileName ), "rb" );
#endif
Nicht die eleganteste Lösung, aber ich denke, so verstehst du wenigstens was du machst.
03/21/2014 17:39 MrDemian#3
Mir geht es dadrum das ich zwei Pfade angeben möchte die gleichzeitig nach den Models suchen.

In deiner Funktion geht es ja dadrum ob es Definiert ist oder nicht, wenn ja DIR_MOVER Wenn nicht Definiert DIR_MODEL. Das bringt mir dabei ja leider nichts.

Aber trotzdem Danke :-)

Mfg, Demian
03/21/2014 18:22 alfredico#4
BOOL bRet = resFp.Open( MakePath( DIR_MODEL, szFileName ), "rb" );
BOOL bRet2 = resFp.Open( MakePath( DIR_MOVER, szFileName ), "rb" );

if( bRet == FALSE && bRet2 == FALSE )
return FAIL;
03/21/2014 18:27 Sedrika#5
Mach es eher so:
Code:
CResFile resFp;
BOOL bRet = resFp.Open( MakePath( DIR_MODEL, szFileName ), "rb" );
if( bRet == FALSE )
#ifdef __DEFINE
nRet = resFp.Open( MakePath( DIR_MOVER, szFileName ), "rb" );
if( bRet == FALSE )
#endif // __DEFINE
return FAIL;
03/21/2014 18:42 MrDemian#6
Ich probiere es mal aus, danke schon einmal im Voraus :)
03/22/2014 12:57 Мentus#7
Quote:
Originally Posted by Sedrika View Post
Mach es eher so:
Code:
CResFile resFp;
BOOL bRet = resFp.Open( MakePath( DIR_MODEL, szFileName ), "rb" );
if( bRet == FALSE )
#ifdef __DEFINE
nRet = resFp.Open( MakePath( DIR_MOVER, szFileName ), "rb" );
if( bRet == FALSE )
#endif // __DEFINE
return FAIL;
Bullshit, so öffenst du 2 mal die Datei falls __DEFINE definiert ist. Das ist unnötig.

"Richtig" wäre wenn mann es so machen würde ( Wenn mann nur die Definierung ändern möchte. )

PHP Code:
#ifdef __DEIN_DEFINE
BOOL bRet resFp.OpenMakePathDIR_MOVERszFileName ), "rb" );
#else
BOOL bRet resFp.OpenMakePathDIR_MODELszFileName ), "rb" );
#endif 
oder:

PHP Code:
#ifndef __DEIN_DEFINE
BOOL bRet resFp.OpenMakePathDIR_MODELszFileName ), "rb" );
#else
BOOL bRet resFp.OpenMakePathDIR_MOVERszFileName ), "rb" );
#endif 
03/23/2014 11:09 MrDemian#8
Mentus zwar danke, aber ich möchte ja in 2 bzw. Am Ende 5 Ordnern suchen lassen.

Dauert zwar länger, aber ist für eine Neu-Sortierung des Clients/Resource Unheimlich wichtig.
03/23/2014 12:26 Mognakor#9
Für dein Problem ist die Lösung von Sedrika am ehesten zutreffend, allerdings hat die einen kleine 'Rechtschreibfehler': 'nRet' in Zeile 5 soll wahrscheinlich bRet heißen.
03/23/2014 14:22 Мentus#10
Quote:
Originally Posted by MrDemian View Post
Mentus zwar danke, aber ich möchte ja in 2 bzw. Am Ende 5 Ordnern suchen lassen.

Dauert zwar länger, aber ist für eine Neu-Sortierung des Clients/Resource Unheimlich wichtig.
Okay, dann versuch es einmal so:

PHP Code:
#ifndef __DEIN_DEFINE
    
BOOL bRet resFp.OpenMakePathDIR_MODELszFileName ), "rb" );    
    if( 
bRet == FALSE )        
        return    
FAIL;
#else
    
if( !resFp.OpenMakePathDIR_MODELszFileName ), "rb" ) )
    {
        if( !
resFp.OpenMakePathDIR_MODEL2szFileName ), "rb" ) )
        {
            if( !
resFp.OpenMakePathDIR_MODEL3szFileName ), "rb" ) )
                return 
FAIL;
        }
    }
#endif 
Das sind jetzt 3 verschiedene Ordner, wobei ich es dir nicht raten würde den Clienten so aufzuteilen. Lieber ein Ordner, und dort die ganzen Sachen reinpacken. Das erspart auch unnötig Arbeit für die Neuz.exe.
03/23/2014 14:50 MrDemian#11
Das nehme ich in Kauf, Aber danke :-)

Weil es mich einfach stört das Der Model-Ordner so zugemüllt ist.

Mfg, Demian