257Fermer259
FarewellLe 19/11/2009 à 18:13
Kevin, vu que je ne comprends pas la manière dont d'après toi, il faut s'y prendre pour faire nettement plus C, voici le cas dans lequel je suis. C'est un éditeur de map pour mon moteur.

Ma structure :
{
// Global data
  SCR_RECT Clip;

// Sprites data
  SPRITE_16* SprTable;
  HANDLE SprHd;
  unsigned short SprLock;

// Map Data
  BOOL OpenedMap;
  unsigned char MapName[22];
  unsigned short MapWidth;
  unsigned short MapHeight;
  unsigned short Gravity;
  signed short Wind;
  unsigned char* MapPtr;
  unsigned char* MapDataPtr;

// Genlib Data
  BOOL OpenedGL;
  DSCREEN* DscPtr[2];
  HANDLE DscHd[2];
  unsigned short Tempo;
  PLANE* PlanePtr;
  unsigned short PlaneXS;
  unsigned short PlaneYS;

} DATA;

J'ai une fonction NewMap() qui se charge de renseigner les différents éléments de la nouvelle map (MapWidth, MapHeight, Gravity, Wind, MapName, PlaneXS, PlaneYS), et qui crée les handles de tiles et de données (MapPtr et MapDataPtr). Elle appelle une fonction qui lui dessine les différentes boites de dialogue, qui ont besoin de Clip. D'autres fonctions ont ausis besoin de Clip.
La fonction Configure() a aussi besoin de toutes les variables qui concernent la map.
Je n'ai aucune envie que chaque fonction doive définir le (SCR_RECT) Clip. Elles se servent donc toutes du pointeur dans la structure pour y accéder.

Alors comment faire pour appeler ma fonction NewMap(), lui faire renvoyer un seul résultat, et obtenir en retour les valeurs de MapWidth, MapHeight, Gravity, Wind, MapName, MapPtr, MapDataPtr, PlaneXS et PlaneYS ?

Une fonction qui initialise Genlib a besoin de PlaneXS, PlaneYS, MapWidth, et des autres variables spécifiques à Genlib.

Encore une fois, comment faire ?