mirror of
https://github.com/gwdevhub/gMod.git
synced 2026-07-21 01:49:31 +00:00
Separated DirectX content from:
1) dll entry functions 2) Server (inside the dll) 3) Server-Client interface. uMod now detects if a DirectX device was created and is under "control" of uMod (a counter is shown after the game name). Thus if the injection did not work properly, uMod wont show a DX9 or DX9EX count.
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
ATTENTION : Vous utilisez ce programme à vous risque !
|
||||
1) Si le programme plante, vous n'aurez probablement aucune aide des développeurs,
|
||||
mais vous pouvez envoyer le bogue sur http://code.google.com/p/texmod/issues/list
|
||||
2) Les jeux peuvent détecter les modifications de uMod, vous prenez le risque de bannir
|
||||
votre compte en ligne !
|
||||
3) C'est un projet open-source. Le code peut être récupéré, modifié et compilé
|
||||
par tout le monde. Téléchargez Universal Modding Engine seulement sur des sources sûres !
|
||||
Ne télécharger pas et n'utiliser pas d'autres versions modifiées de ce logiciel,
|
||||
par exemple des versions envoyées par votre équipe ou votre guilde !
|
||||
Le site officiel : http://code.google.com/p/texmod/downloads/list
|
||||
|
||||
Universal Modding Engine utilise le D3DX9_43.dll (32bit). En raison de la licence CLUF cette dll
|
||||
ne peut pas être livrée avec Universal Modding Engine . Si vous n'avez pas D3DX9_43.dll
|
||||
d'installé sur votre système, Universal Modding Engine va vous afficher un message
|
||||
au démarrage du programme.
|
||||
|
||||
|
||||
Que fait Universal Modding Engine (uMod) V1.0 ?
|
||||
|
||||
-Extraire et sauvegarder des textures d'un jeu DX9 (la texture d'origine peut se modifier)
|
||||
-Extraire et sauvegarder toutes les textures d'un jeu DX9
|
||||
-Charger des textures dans un jeu pour remplacer les textures d'origines
|
||||
-Supporte les textures DDS
|
||||
-Supporte les fichiers compressés (ZIP) pour faire un MOD (modifier plusieurs textures à la fois)
|
||||
-Supporte les fichiers de TexMod *.tpf
|
||||
|
||||
Toutes les options peuvent s'activer ou se désactiver, pendant que le jeu est lancé !
|
||||
Ainsi, vous pouvez rechercher une texture dans le jeu, l'enregistrer sur disque, la modifier,
|
||||
la charger dans le jeu, éditer une autre texture, la charger dans le jeu, etc...,
|
||||
Activer ou désactiver des MODs sans aucun redémarrage du jeu.
|
||||
|
||||
Remarque : Si vous cochez "Sauvegarder toutes les textures", les textures qui seront enregistrées,
|
||||
sont les textures chargées dans le jeu après le moment où vous avez coché la case.
|
||||
Si vous activez cette option, pendant qu'une carte est chargée, vous n'allez probablement rien enregistrer,
|
||||
parce que toutes les textures sont déjà chargées. Changez de Carte ou rechargez-là.
|
||||
|
||||
Les fichiers compressés peuvent inclure le fichier "texmod.def" qui contient le hash et le nom du fichier.
|
||||
Chaque ligne doit avoir le format "hash|filename.dds"
|
||||
Si elle ne contient pas un "texmod.def" chaque fichier sera décompressé et seuls les fichiers ayant
|
||||
le format "*_hash.dds" seront utilisés.
|
||||
Le fichier zip peut inclure un fichier "Comment.txt". Le contenu sera affiché comme commentaire
|
||||
dans l'interface graphique.
|
||||
|
||||
Si vous chargez des textures seules, elles doivent correspondre au format "*_hash.dds"
|
||||
|
||||
|
||||
Comment Universal Modding Engine interagit avec les jeux ?
|
||||
|
||||
Universal Modding Engine intercepte la connexion entre le jeu et DirectX.
|
||||
Il est nécessaire, que Universal Modding Engine soit lancé avant le jeu.
|
||||
|
||||
L'interface graphique de Universal Modding Engine est comme un serveur.
|
||||
Un jeu correctement intercepté par Universal Modding Engine-dll se connectera au démarrage sur le serveur.
|
||||
L'interface graphique de Universal Modding Engine peut gérer plusieurs jeux en même temps. Il sera
|
||||
également traiter chaque jeu en tant que processus indépendant (si le même jeu
|
||||
a été lancé plus d'une fois).
|
||||
|
||||
|
||||
Comment Universal Modding Engine fonctionne ?
|
||||
|
||||
Il y a trois façon pour que Universal Modding Engine intercepte la connexion à DirectX :
|
||||
(Ne PAS utiliser plus d'une méthode à la fois !)
|
||||
|
||||
1) Ajouter l'exécutable du jeu dans le menu "Réglages->Ajouter un jeu"
|
||||
Pour Steam, voir plus bas.
|
||||
|
||||
Problèmes connus : Guild Wars (Win XP)
|
||||
|
||||
2) Lancer le jeu directement via le menu uMod
|
||||
"Réglages->Lancer le jeu avec uMod" ou
|
||||
"Réglages->Lancer le jeu avec uMod (en ligne de commande)".
|
||||
Le jeu se lance directement.
|
||||
|
||||
3) Copier le d3d9.dll (depuis le répertoire de Universal Modding Engine) dans votre dossier de jeu.
|
||||
Certain jeu recherche les DLLs dans leur répertoire avant d'aller chercher les DLLs dans
|
||||
le dossier du système.
|
||||
Cette méthode ne fonctionne que sur certain jeu.
|
||||
ATTENTION : Ne jamais copier ce fichier DLL dans votre répertoire système !!!
|
||||
|
||||
Problèmes connus : Guild Wars
|
||||
|
||||
Si vous avez choisi la première ou la troisième méthode, il vous suffit de lancer Universal Modding Engine
|
||||
et de lancer le jeu séparément. Ne PAS lancer le jeu via uMod.
|
||||
|
||||
Si le jeu se lance et tout fonctionne, un nouveau onglet va s'ouvrir directement dans uMod.
|
||||
Dans cet onglet vous pouvez modifier le jeu. Appuyer sur "Mettre à jour"
|
||||
pour envoyer les changements au jeu. Vous pouvez sauvegarder vos paramètres actuels comme thème.
|
||||
Un thème peut être lancé par défaut au démarrage d'un jeu.
|
||||
|
||||
Pour charger une texture ou un mod, vous devez cocher la case du fichier. Si vous voulez décharger un mod,
|
||||
il faut simplement décocher la case et cliquer sur "Mettre à jour".
|
||||
|
||||
En cliquant sur "Mettre à jour", seules les textures chargées dans uMod seront misent à jour
|
||||
(si une texture chargée est supprimée de la liste, cela va juste décocher la texture).
|
||||
Cliquez sur "Mettre à jour (Recharger)" pour recharger les fichiers de texture sur le disque dur.
|
||||
(Si vous venez de modifier une texture déjà chargée par exemple).
|
||||
|
||||
En raison du fait que plusieurs mods peuvent modifier la même texture, seuls le mod / la texture
|
||||
du premier fichier de la liste est pris en compte pour la modification. L'action de ce mod
|
||||
(c'est à dire le chargement ou le déchargement) est effectuée, indépendamment des autres mods.
|
||||
|
||||
|
||||
Comment faire pour que Universal Modding Engine fonctionne avec Steam ?
|
||||
|
||||
Universal Modding Engine cherche le nom et le chemin du fichier binaire exécuté.
|
||||
Ainsi vous ne devez pas ajouter Steam.exe mais plutôt le game.exe
|
||||
exemple : C:\Steam\SteamApps\acoount_name\portal\hl2.exe
|
||||
Si vous ne trouvez pas l'exécutable, il suffit de commencer le jeu et
|
||||
d'utiliser "le Gestionnaire des tâches" pour rechercher dans quel dossier il se trouve en
|
||||
faisant un clique droit sur le nom de l'exécutable "Propriétés"->"Emplacement".
|
||||
@@ -0,0 +1,75 @@
|
||||
# by mirHL|
|
||||
|
||||
MenuHelp:Aiuto|
|
||||
MenuAbout:Informazioni|
|
||||
MenuAcknowledgement:Riconoscimenti|
|
||||
MenuStartGame:Avvia il gioco da uMod|
|
||||
MenuStartGameCMD:Avvia il gioco da uMod (con riga di comando)|
|
||||
MenuUseHook:Usa hook globale|
|
||||
MenuAddGame:Aggiungi gioco|
|
||||
MenuDeleteGame:Rimuovi gioco|
|
||||
MenuLoadTemplate:Carica template|
|
||||
MenuSaveTemplate:Salva template|
|
||||
MenuSaveTemplateAs:Salva template come...|
|
||||
MenuSetDefaultTemplate:Imposta template come predefinito|
|
||||
MenuLanguage:Cambia lingua (Change language)|
|
||||
MenuExit:Esci|
|
||||
MainMenuMain:Comandi|
|
||||
MainMenuHelp:Aiuto|
|
||||
|
||||
|
||||
ButtonOpen:Apri texture/archivio|
|
||||
ButtonDirectory:Imposta cartella lavoro|
|
||||
ButtonUpdate:Aggiorna|
|
||||
ButtonReload:Aggiorna (ricarica)|
|
||||
|
||||
|
||||
ChooseFile:Seleziona un file|
|
||||
ChooseDir:Seleziona una cartella|
|
||||
CheckBoxSaveSingleTexture:Salva singole texture|
|
||||
TextCtrlTemplate:Template: |
|
||||
CheckBoxSaveAllTextures:Salva tutte le texture|
|
||||
TextCtrlSavePath:Percorso lavori: |
|
||||
SelectLanguage:Seleziona una lingua|
|
||||
StartGame:Seleziona il gioco da far partire.|
|
||||
CommandLine:Imposta opzioni da riga di comando.|
|
||||
ChooseGame:Seleziona un eseguibile di un gioco.|
|
||||
DeleteGame:Seleziona i giochi da rimuovere.|
|
||||
GameAlreadyAdded:Il gioco è già stato aggiunto.|
|
||||
ExitGameAnyway:Chiudere uMod mentre il gioco è in esecuzione potrebbe farlo crashare.
|
||||
Uscire comunque?|
|
||||
NoComment:Nessun commento.|
|
||||
Author:Autore: |
|
||||
|
||||
|
||||
Error_GameIsHooked:L'hook globale è attivo e questo è in conflitto col lancio! Per favore rimuovi il gioco dalla lista o spegni l'hook.|
|
||||
Error_ProcessNotStarted:Il gioco non è potuto essere avviato.|
|
||||
Error_RemoveHook:Rimuovere l'Hook mentre il gioco è in esecuzione potrebbe farlo crashare.|
|
||||
Error_FileNotSupported:Questo tipo di file non è supportato:|
|
||||
Error_DLLNotFound:
|
||||
Impossibile caricare la dll.
|
||||
La dll injection non funzionerà.
|
||||
Questo accade perchè D3DX9_43.dll non è installato nel sistema.
|
||||
Installa DirectX End-User Runtime Web Installer.|
|
||||
Error_FktNotFound:Impossibile caricare una funzione fuori della dll.
|
||||
La dll injection non funzionerà.|
|
||||
Error_AlreadyRunning:Un altro processo di uMod è in esecuzione.|
|
||||
Error_Send:Impossibile arrivare al gioco.|
|
||||
Error_KeyTwice:Hai assegnato due volte lo stesso tasto.|
|
||||
Error_NoSavePath:Non hai selezionato un percorso di salvataggio.|
|
||||
Error_KeyNotSet:Qualche tasto non è assegnato.|
|
||||
Error_SaveFile:Impossibile salvare il file.|
|
||||
Error_NoPipe:Pipe non è aperto.|
|
||||
Error_WritePipe:impossibile scrivere in pipe.|
|
||||
Error_FlushPipe:Impossibile ripulire pipe buffer.|
|
||||
Error_Hash:Impossibile trovare l'hash, forse il file non è chiamato *_HASH.dds|
|
||||
Error_FileOpen:Impossibile aprire il file.|
|
||||
Error_FileRead:Impossibile leggere il file.|
|
||||
Error_Memory:Impossibile allocare abbastanza memoria|
|
||||
Error_Unzip:Impossibile scomprimere.|
|
||||
Error_ZipEntry:Impossibile trovare Zip entry.|
|
||||
KeyBack:Precedente|
|
||||
KeySave:Salva|
|
||||
KeyNext:Successivo|
|
||||
FontColour:Colore caratteri (RGB):|
|
||||
TextureColour:Colore texture (RGB):|
|
||||
@@ -46,7 +46,8 @@ uMod_Client::~uMod_Client(void)
|
||||
void* uMod_Client::Entry(void)
|
||||
{
|
||||
char buffer[SMALL_BUFSIZE];
|
||||
while (1)
|
||||
bool run = true;
|
||||
while (run)
|
||||
{
|
||||
unsigned long size;
|
||||
bool ret = ReadFile(
|
||||
@@ -56,28 +57,48 @@ void* uMod_Client::Entry(void)
|
||||
&size, // number of bytes read
|
||||
NULL); // not overlapped I/O
|
||||
|
||||
if (ret || GetLastError()==ERROR_MORE_DATA)
|
||||
if (ret)// || GetLastError()==ERROR_MORE_DATA)
|
||||
{
|
||||
unsigned int pos=0;
|
||||
MsgStruct *commands;
|
||||
bool update_textures = false;
|
||||
while (pos<size-sizeof(MsgStruct))
|
||||
|
||||
while (pos<=size-sizeof(MsgStruct))
|
||||
{
|
||||
commands = (MsgStruct*) &buffer[pos];
|
||||
//unsigned int add_length = 0;
|
||||
/*
|
||||
|
||||
switch (commands->Control)
|
||||
{
|
||||
case CONTROL_ADD_CLIENT:
|
||||
{
|
||||
uMod_Event event( uMod_EVENT_TYPE, ID_Add_Device);
|
||||
event.SetValue(commands->Value);
|
||||
event.SetClient(this);
|
||||
wxPostEvent( MainFrame, event);
|
||||
break;
|
||||
}
|
||||
case CONTROL_REMOVE_CLIENT:
|
||||
{
|
||||
uMod_Event event( uMod_EVENT_TYPE, ID_Delete_Device);
|
||||
event.SetValue(commands->Value);
|
||||
event.SetClient(this);
|
||||
wxPostEvent( MainFrame, event);
|
||||
break;
|
||||
}
|
||||
case CONTROL_GAME_EXIT:
|
||||
{
|
||||
run = false;
|
||||
pos=size;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
pos+=sizeof(MsgStruct);// + add_length;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (GetLastError()!=ERROR_MORE_DATA) run = false;
|
||||
}
|
||||
CloseHandle(Pipe.In);
|
||||
Pipe.In = INVALID_HANDLE_VALUE;
|
||||
|
||||
+10
-1
@@ -38,7 +38,13 @@ public:
|
||||
|
||||
// You *must* copy here the data to be transported
|
||||
uMod_Event( const uMod_Event &event )
|
||||
: wxCommandEvent(event) { this->SetText( event.GetText()); PipeIn=((uMod_Event&)event).GetPipeIn(); PipeOut=((uMod_Event&)event).GetPipeOut(); Name=((uMod_Event&)event).GetName(); Client=((uMod_Event&)event).GetClient();}
|
||||
: wxCommandEvent(event)
|
||||
{ this->SetText( event.GetText());
|
||||
Value=((uMod_Event&)event).GetValue();
|
||||
PipeIn=((uMod_Event&)event).GetPipeIn(); PipeOut=((uMod_Event&)event).GetPipeOut();
|
||||
Name=((uMod_Event&)event).GetName();
|
||||
Client=((uMod_Event&)event).GetClient();
|
||||
}
|
||||
|
||||
// Required for sending with wxPostEvent()
|
||||
wxEvent* Clone() const { return new uMod_Event(*this); }
|
||||
@@ -46,11 +52,13 @@ public:
|
||||
wxString GetText() const { return m_Text; }
|
||||
void SetText( const wxString& text ) { m_Text = text; }
|
||||
|
||||
int GetValue(void) {return Value;}
|
||||
wxString GetName(void) {return Name;}
|
||||
HANDLE GetPipeIn(void) {return PipeIn;}
|
||||
HANDLE GetPipeOut(void) {return PipeOut;}
|
||||
uMod_Client * GetClient(void) {return Client;}
|
||||
|
||||
void SetValue(int value) {Value=value;}
|
||||
void SetName( wxString name) {Name=name;}
|
||||
void SetPipeIn( HANDLE pipe) {PipeIn=pipe;}
|
||||
void SetPipeOut( HANDLE pipe) {PipeOut=pipe;}
|
||||
@@ -58,6 +66,7 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
int Value;
|
||||
wxString Name;
|
||||
HANDLE PipeIn;
|
||||
HANDLE PipeOut;
|
||||
|
||||
+26
-4
@@ -60,6 +60,8 @@ BEGIN_EVENT_TABLE(uMod_Frame, wxFrame)
|
||||
|
||||
EVT_COMMAND (ID_Add_Game, uMod_EVENT_TYPE, uMod_Frame::OnAddGame)
|
||||
EVT_COMMAND (ID_Delete_Game, uMod_EVENT_TYPE, uMod_Frame::OnDeleteGame)
|
||||
EVT_COMMAND (ID_Add_Device, uMod_EVENT_TYPE, uMod_Frame::OnAddDevice)
|
||||
EVT_COMMAND (ID_Delete_Device, uMod_EVENT_TYPE, uMod_Frame::OnRemoveDevice)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
IMPLEMENT_APP(MyApp)
|
||||
@@ -260,10 +262,7 @@ void uMod_Frame::OnAddGame( wxCommandEvent &event)
|
||||
delete page;
|
||||
return;
|
||||
}
|
||||
name = name.AfterLast('\\');
|
||||
name = name.AfterLast('/');
|
||||
name = name.BeforeLast('.');
|
||||
Notebook->AddPage( page, name, true);
|
||||
Notebook->AddPage( page, page->GetPageName(), true);
|
||||
|
||||
Clients[NumberOfGames] = client;
|
||||
NumberOfGames++;
|
||||
@@ -286,6 +285,29 @@ void uMod_Frame::OnDeleteGame( wxCommandEvent &event)
|
||||
}
|
||||
}
|
||||
|
||||
void uMod_Frame::OnAddDevice( wxCommandEvent &event)
|
||||
{
|
||||
uMod_Client *client = ((uMod_Event&)event).GetClient();
|
||||
for (int i=0; i<NumberOfGames; i++) if (Clients[i]==client)
|
||||
{
|
||||
uMod_GamePage *page = (uMod_GamePage*) Notebook->GetPage(i);
|
||||
page->AddDXDevice(((uMod_Event&)event).GetValue());
|
||||
Notebook->SetPageText( i, page->GetPageName());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void uMod_Frame::OnRemoveDevice( wxCommandEvent &event)
|
||||
{
|
||||
uMod_Client *client = ((uMod_Event&)event).GetClient();
|
||||
for (int i=0; i<NumberOfGames; i++) if (Clients[i]==client)
|
||||
{
|
||||
uMod_GamePage *page = (uMod_GamePage*) Notebook->GetPage(i);
|
||||
page->RemoveDXDevice(((uMod_Event&)event).GetValue());
|
||||
Notebook->SetPageText( i, page->GetPageName());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void uMod_Frame::OnClose(wxCloseEvent& event)
|
||||
{
|
||||
|
||||
+24
-1
@@ -31,10 +31,33 @@ public:
|
||||
~uMod_Frame(void);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* A game has started and opend a pipe to the GUI. The Server thus create an event and send it to the main frame.
|
||||
* @param event
|
||||
*/
|
||||
void OnAddGame( wxCommandEvent &event);
|
||||
/**
|
||||
* A game has quite and closed it pipe to the GUI. The Server thus create an event and send it to the main frame.
|
||||
* @param event
|
||||
*/
|
||||
void OnDeleteGame( wxCommandEvent &event);
|
||||
|
||||
/**
|
||||
* A game has created a DX device. The Server thus create an event and send it to the main frame.
|
||||
* @param event
|
||||
*/
|
||||
void OnAddDevice( wxCommandEvent &event);
|
||||
/**
|
||||
* A game has deleted a DX device. The Server thus create an event and send it to the main frame.
|
||||
* @param event
|
||||
*/
|
||||
void OnRemoveDevice( wxCommandEvent &event);
|
||||
|
||||
|
||||
/**
|
||||
* The user tries to close the GUI.
|
||||
* @param WXUNUSED
|
||||
*/
|
||||
void OnClose(wxCloseEvent& WXUNUSED(event));
|
||||
|
||||
|
||||
|
||||
@@ -25,6 +25,9 @@ uMod_GamePage::uMod_GamePage( wxNotebook *parent, const wxString &exe, const wxS
|
||||
ExeName = exe;
|
||||
TemplateName = save;
|
||||
|
||||
|
||||
CounterDX9 = 0; CounterDX9EX = 0;
|
||||
CounterDX10 = 0; CounterDX10EX = 0;
|
||||
//SetBackgroundColour( *wxLIGHT_GREY);
|
||||
//SetBackgroundColour( wxColour( "LIGHT GREY"));
|
||||
|
||||
@@ -185,6 +188,79 @@ int uMod_GamePage::AddTexture( const wxString &file_name)
|
||||
return UpdateGame();
|
||||
}
|
||||
|
||||
|
||||
wxString uMod_GamePage::GetPageName(void)
|
||||
{
|
||||
wxString ret;
|
||||
ret = ExeName;
|
||||
|
||||
ret = ret.AfterLast('\\');
|
||||
ret = ret.AfterLast('/');
|
||||
ret = ret.BeforeLast('.');
|
||||
if (CounterDX9 || CounterDX9EX || CounterDX10 || CounterDX10EX)
|
||||
{
|
||||
wxString temp;
|
||||
ret.append(" (");
|
||||
if (CounterDX9)
|
||||
{
|
||||
temp.Printf("DX9: %d", CounterDX9);
|
||||
ret.append(temp);
|
||||
}
|
||||
if (CounterDX9EX)
|
||||
{
|
||||
if (!temp.IsEmpty()) ret.append(",");
|
||||
temp.Printf("DX9EX: %d", CounterDX9EX);
|
||||
ret.append(temp);
|
||||
}
|
||||
if (CounterDX10)
|
||||
{
|
||||
if (!temp.IsEmpty()) ret.append(",");
|
||||
temp.Printf("DX10: %d", CounterDX10);
|
||||
ret.append(temp);
|
||||
}
|
||||
if (CounterDX10EX)
|
||||
{
|
||||
if (!temp.IsEmpty()) ret.append(",");
|
||||
temp.Printf("DX10EX: %d", CounterDX10EX);
|
||||
ret.append(temp);
|
||||
}
|
||||
ret.append(")");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int uMod_GamePage::AddDXDevice(int version)
|
||||
{
|
||||
switch (version)
|
||||
{
|
||||
case VERSION_DX9:
|
||||
CounterDX9++; break;
|
||||
case VERSION_DX9EX:
|
||||
CounterDX9EX++; break;
|
||||
case VERSION_DX10:
|
||||
CounterDX10++; break;
|
||||
case VERSION_DX10EX:
|
||||
CounterDX10EX++; break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int uMod_GamePage::RemoveDXDevice(int version)
|
||||
{
|
||||
switch (version)
|
||||
{
|
||||
case VERSION_DX9:
|
||||
if (CounterDX9>0) CounterDX9--; break;
|
||||
case VERSION_DX9EX:
|
||||
if (CounterDX9EX>0) CounterDX9EX--; break;
|
||||
case VERSION_DX10:
|
||||
if (CounterDX10>0) CounterDX10--; break;
|
||||
case VERSION_DX10EX:
|
||||
if (CounterDX10EX>0) CounterDX10EX--; break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int uMod_GamePage::GetSettings(void)
|
||||
{
|
||||
int key_back = ChoiceKeyBack->GetSelection();
|
||||
|
||||
@@ -53,10 +53,18 @@ public:
|
||||
|
||||
int UpdateLanguage(void);
|
||||
|
||||
wxString GetPageName(void);
|
||||
int AddDXDevice(int version);
|
||||
int RemoveDXDevice(int version);
|
||||
|
||||
|
||||
wxString LastError;
|
||||
|
||||
private:
|
||||
|
||||
int CounterDX9, CounterDX9EX;
|
||||
int CounterDX10, CounterDX10EX;
|
||||
|
||||
int GetSettings(void);
|
||||
int SetColour( wxTextCtrl** txt, int *colour);
|
||||
int GetColour( wxTextCtrl* txt, int def);
|
||||
|
||||
@@ -98,6 +98,8 @@ enum
|
||||
ID_Menu_SetDefaultTemplate,
|
||||
ID_Add_Game,
|
||||
ID_Delete_Game,
|
||||
ID_Add_Device,
|
||||
ID_Delete_Device,
|
||||
ID_Button_Texture, //this entry must be the last!!
|
||||
};
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ uMod_Sender::uMod_Sender(PipeStruct &pipe) : Pipe(pipe)
|
||||
uMod_Sender::~uMod_Sender(void)
|
||||
{
|
||||
if (Buffer!=NULL) delete [] Buffer;
|
||||
if (OldTextures!=NULL) delete [] OldTextures;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user