Jibble
 

Struct in a struct ?

Started by Baguettator, 25 Jun 2021, 10:16

« previous - next »

Baguettator

Hi all !

I think my problem is weird, but I have to ask the question in case of :)

I use a struct to manage many parameters for the creation of a map for my game (it's a map with many tokens placed into this map, and the struct allows to store the coordinates of all the tokens, so when the map has to be displayed, the script is really simple to place the tokens).

The problem is : I want to store some parameters like that :

- in a map I have 10 buildings

- each building, when it's open (the player click on the door), reveals the tokens that are inside

So in my struct, I can have the buildings like :

struct Map
{
  int nbzonesbuilding[10]; // the number of tokens owned by each building
};

But I want to store the X,Y coordinates of each token of each buildings, so the perfect thing should be : a struct "building" inside the struct "Map"... like I have building[10] and building[0].x[30] to store 30 X-coordinates of the building 0, building[0].y[30] to store the 30 Y-coordinates of the building 0, building[1].x[30] to store the 30 X-coordinates of the building 1... Instead of xbuilding0[30], ybuilding0[30], xbuilding1[30] and so on in the only struct "Map".

Before I used another struct for buildings, because I was creating the maps one at a time when needed (if a map has to be displayed, it's created directly) but now I need to store the parameters of all the maps at the game_start function, so it means : before, my "Map" struct was only for 1 map at a time. Now the "Map" struct is an array of maps stored in memory when the game is launched.

I hope I am clear enough, because english is not my spoken language :)

Many thanks for those who could help me on that !


Baguettator

Thanks arj0n !

I just don't understand if as this post is old from 2009, does it mean that the struct in a struct is not implemented yet, or is it in project ?

So I believe there are no solution for my problem, except doing manually the "struct in a struct" with map.xbuilding0, map.ybuilding0, map.xbuilding1 etc...?

eri0o

You can place a managed struct (a pointer reference) in a struct or make a pool and use the IDs for referencing (this is how some modules do to manage these complexities).

Baguettator

Thanks ErioO, but unfortunately, I don't understand what you are telling me... Could you please give me an example ?

Crimson Wizard

#5
One of the solutions is to have a separate array of sub-structs, while the parent struct would have an reference to sub-array as an integer index.

For example

Code: ags

struct Building
{
    int nbzones[10]; // the number of zones owned by each building
    int zoneindex[10]; // the index of the first token of each building
};

Building building[NB_BUILDINGS];

struct BuildingZone
{
    int X;
    int Y;
};

BuildingZone zones[NB_BUILDING_ZONES]; // contains all the zones for all the buildings


Thus if you have a Building you may find its zones as:
Code: ags

int first_zone = building[x].zoneindex;
int nb_zones = building[x].nbzones;

for (int i = 0; i < nb_zones; i++)
{
     int x = zones[i + first_zone].X;
     int y = zones[i + first_zone].Y;
     // do something
}

Crimson Wizard

Also, if you have a maximal number of zones possible that is not too high, you may not need to store zone_index at all. Just allocate max zone slots for each building, then first zone index may be calculated simply as:

building_index * max_zones.

And nb_zones will mean number of valid zones.

Baguettator

Thanks for the solution Crimson Wizard !

I tried several things, and I finally found that it was simpler to do this way (in the struct "Maps") :

int xbatiment[100], ybatiment[100], typebatiment[100] : these variables stores the coordinates and types of all the building zones of the map

int zonebatiment[100] : these variables get a value "b" : zonebatiment=b means "the zone which coordinates are (xbatiment, ybatiment) and its type is typebatiment is a zone of the building b".

I felt it was simpler for me to manage one structure instead of 2 or more... I don't know if it is effectiveness compared to your solution ?

Also, I was wondering how many variables the engine can manage, and how it will impact the performances ?

The struct "Maps" is an array of about 200 entities and each entity owns a lot of variables. For now, it looks like that :

(sorry for the sentences in french, it's just a copy/paste from my code, it's not really important. As you will see, lots of variables and plenty of functions !)

Code: ags
struct Cartes
{
  String titre, histoire, dallesrequises;
  String limitedeckzombie[10];
  int nbdalles;
  int hauteur, largeur;
  int x, y; // Permet de connaître le coin haut-gauche de la carte entière
  int dalles[14];
  int orientationdalles[14];
  int xdalles[14], ydalles[14]; // coordonnées des dalles pour placement de la carte
  bool dallesplacementmanuel[14];
  bool zonesanspionzomb[50];
  int categorie; // stocke les cartes en fonction des boîtes nécessaires
  int nbzonesinvalea; // NECESSAIRE ?
  int tentesalea[11]; // Pour savoir si les tentes sont aléatoires ou non (dans TTS, avec la String)
  bool dallesansobjectif[14]; // Place des pions fouilles sans placer d'objectifs dans les zones de la dalle
  bool dallesansradio[14]; // Ne place pas de pions radio sur cette dalle
 
  int nbzonebatiment; // compte le nb de zones de bâtiment de la carte
  int xzonebatiment[100], yzonebatiment[100], typezonebatiment[100]; // Stocke toutes les zones de bâtiment de la carte
  int nbpionsfouille;
  int xpionsfouille[100], ypionsfouille[100], typepionsfouille[100];
  int nbobjectifs;
  int zonesobjectifs[100]; // indique pour chaque zone du batiment à quel objectif cela peut correspondre
  int changementtypesalle[30]; // Permet de changer le type de salle du pion objectif (PAS du pion fouille situé dessous !)
  int nbobjectifsmanuel;
  int indexobjectifsmanuel[50]; // on leur donne la valeur de l'objectif pour attribuer les infos ci-dessous à cet objectif
  int xobjectifsmanuel[50], yobjectifsmanuel[50]; // on stocke les infos pour des objectifs placés manuellement
  int xobjectifseul[30], yobjectifseul[30]; // coordonnées des objectifs placés seuls
  int nbobjectifscouleur;
  int xobjectifscouleur[10], yobjectifscouleur[10], couleurobjectifscouleur[10];
  int sansobjvert[50], sansobjbleu[50], sansobjviolet[50], sansobjjaune[50], sansobjblanc[50], sansobjrose[50]; // si vaut 1, l'objectif de couleur sera pas trouvé dans le pion fouille concerné
  int xobjectifspecial, yobjectifspecial; // coordonnées de l'objectifspecial
  int nbpionsdeclencheurs;
  int xpionsdeclencheurs[20], ypionsdeclencheurs[20];
  int nbinvasion;
  int xinvasion[10], yinvasion[10], sensinvasion[10];
  int nbinvasioncouleur;
  int xinvasioncouleur[10], yinvasioncouleur[10], couleurinvasion[10], sensinvasioncouleur[10];
  int nbinvasionfixe;
  int xinvasionfixe[10], yinvasionfixe[10], sensinvasionfixe[10];
  int nbinvasionalea;
  int xinvalea[100], yinvalea[100], sensinvalea[100];
  int nbexit;
  int xexit[30], yexit[30], sensexit[30];
  int nbdepart;
  int xdepart[30], ydepart[30];
  int nbvoiture1, probavoiture1;
  int xvoiture1[10], yvoiture1[10], sensvoiture1[10];
  int nbvoiture2, probavoiture2;
  int xvoiture2[10], yvoiture2[10], sensvoiture2[10];
  int nbvoiture3, probavoiture3;
  int xvoiture3[10], yvoiture3[10], sensvoiture3[10];
  int nbvoiture4, probavoiture4;
  int xvoiture4[10], yvoiture4[10], sensvoiture4[10];
  int nbhelicoheliport, probahelicoheliport;
  int xhelicoheliport[10], yhelicoheliport[10];
  int nbhelicorue, probahelicorue;
  int xhelicorue[10], yhelicorue[10];
  int nbvehiculespec;
  int xvehiculespec[5], yvehiculespec[5], sensvehiculespec[5], spritevehiculespec[5];
  int zoneexpcount; // compte les zones extérieures (rues)
  int typezoneexp[100], xzoneexp[100], yzoneexp[100]; // tableaux pour les zones extérieures (rue)
  int nbdecombres;
  int xdecombres[8], ydecombres[8], couleurdecombres[8], sensdecombres[8], tailledecombres[8]; // taille : 0 petit, 1 grand
  int nbportes;
  int xportes[50], yportes[50], couleurportes[50], sensportes[50], ouvertureporte[50]; // ouverture : 0 fermée, 1 ouverte
  int nbmirador;
  int xmirador[5], ymirador[5], fouillemirador[5], sensmirador[5];
  int nbbarricades;
  int xbarricades[5], ybarricades[5], sensbarricades[5], ouverturebarricades[5];
  int nbsallecachee;
  int xsallecachee[5], ysallecachee[5], senssallecachee[5], objectifsallecachee[5];
  int xsas, ysas, senssas, facesas; // SAS ROTATIF, face sas : 1 droit, 2 angle
  int xechelle, yechelle, sensechelle;
  int nbbarbeles;
  int xbarbeles[5], ybarbeles[5], sensbarbeles[5], ouverturebarbeles[5];
  int nbpionpersos;
  int xpionpersos[5], ypionpersos[5];
  int nbinterrupteurs;
  int xinterrupteurs[5], yinterrupteurs[5], couleurinterrupteurs[5], sensinterrupteurs[5];
  int nbpionapparitions;
  int xpionapparitions[10], ypionapparitions[10], numeropionapparition[10];
  int nbindicateursinv;
  int xindicateursinv[10], yindicateursinv[10], numeroindicateursinv[10];
  bool portesinversees[50]; // vaut true si le pion porte correspondant doit être inversé
  int nbpionrecherche;
  int xpionrecherche[10], ypionrecherche[10];
  int nbpiondepartsurv;
  int xpiondepartsurv[20], ypiondepartsurv[20];
  int nbpiondepartsurvsiege;
  int xpiondepartsurvsiege[50], ypiondepartsurvsiege[50];
  int nbpionzomb;
  int xpionzomb[50], ypionzomb[50];
  // TENTES
  int nbtentes;
  int xtentes[15], ytentes[15], senstentes[15], spritetentes[15];
  // Batiments
  int xouvbat[15], youvbat[15]; // coordonnées des pions ouverture bâtiment
  int lieninterrupteurjaune[15], lieninterrupteurblanc[15], lieninterrupteurviolet[15]; // indique si le bâtiment révèle un interrupteur
  int lienobjectifspec[15], lienobjectifbleu[15], lienobjectifvert[15], lienobjectifjaune[15], lienobjectifblanc[15], lienobjectifviolet[15], lienobjectifrose[15]; // idem pour objectifs couleur
  Button *lienvehicule1[15]; // idem pour un véhicule
  int zonesbatiment[100]; // indique pour chaque zone de bâtiments à quel bâtiment ça correspond
  int zonesinterrupteurjaune[100], zonesinterrupteurviolet[100], zonesinterrupteurblanc[100]; // idem pour les interrupteurs. Vaut 1 si cette zone est attribuée à l'interrupteur
  bool generationbatimentmanuelle[100]; // si vaut true, on génère dans ce bâtiment dès le début de l'expédition
 
 
  import void PresentationExp();
  import void StringTTS();
 
  import void Invasionaleatoire();
 
  import void PlacementPionZombies();
  import void ZonesExpedition();
  import void ZonesBatiment();
 
  import void CreationCartes(int sprite);
  import void OrientationDalles(sens s0, sens s1=-1, sens s2=-1, sens s3=-1, sens s4=-1, sens s5=-1, sens s6=-1, sens s7=-1, sens s8=-1, sens s9=-1, sens s10=-1, sens s11=-1, sens s12=-1, sens s13=-1);
  import void Composition(NumDalles d1, NumDalles d2=-1, NumDalles d3=-1, NumDalles d4=-1, NumDalles d5=-1, NumDalles d6=-1, NumDalles d7=-1, NumDalles d8=-1, NumDalles d9=-1, NumDalles d10=-1, NumDalles d11=-1, NumDalles d12=-1, NumDalles d13=-1, NumDalles d14=-1);
  import void LimiteDeckZombieCarte(String s1, String s2=0, String s3=0, String s4=0, String s5=0, String s6=0, String s7=0, String s8=0, String s9=0, String s10=0);
  import function ScanDeckZombieCarte(String s);
  import void PortesCouleursOuvertesManuel(int d1, int x1, int y1, couleur c1, sens s1, int d2=-1, int x2=-1, int y2=-1, couleur c2=-1, sens s2=-1);
  import void PionDepartSurv(int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1, int n7=-1, int n8=-1, int n9=-1, int n10=-1);
  import void IndicateursInvasionS3Manuel(int numero1, int d1, int x1, int y1, int numero2=-1, int d2=-1, int x2=-1, int y2=-1, int numero3=-1, int d3=-1, int x3=-1, int y3=-1);
  import void ChangementTypesSalles(int n1, types t1, int n2=-1, types t2=-1, int n3=-1, types t3=-1, int n4=-1, types t4=-1, int n5=-1, types t5=-1, int n6=-1, types t6=-1, int n7=-1, types t7=-1);
  import void DecombresPetitsManuel(int d1, int x1, int y1, couleur c1, sens s1, int d2=-1, int x2=-1, int y2=-1, couleur c2=-1, sens s2=-1);
  import void DecombresGrandsManuel(int d1, int x1, int y1, couleur c1, sens s1, int d2=-1, int x2=-1, int y2=-1, couleur c2=-1, sens s2=-1);
  import void PortesMallFermees(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void DoublePorteMallFermee(int d1, int n1, couleur c1, int d2=-1, int n2=-1, couleur c2=-1, int d3=-1, int n3=-1, couleur c3=-1);
  import void DoublePorteMallOuverte(int d1, int n1, couleur c1, int d2=-1, int n2=-1, couleur c2=-1, int d3=-1, int n3=-1, couleur c3=-1);
  import void TentesAlea(int t0=-1, int t1=-1, int t2=-1, int t3=-1, int t4=-1, int t5=-1, int t6=-1, int t7=-1, int t8=-1, int t9=-1, int t10=-1);
  import void ZoneSansPionZomb(int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1, int n7=-1, int n8=-1, int n9=-1, int n10=-1, int n11=-1, int n12=-1, int n13=-1, int n14=-1);
  import void ZoneSansObjCouleur(couleur c, int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1, int n7=-1, int n8=-1, int n9=-1, int n10=-1, int n11=-1, int n12=-1, int n13=-1);
  import void PionsFouillesSemiManuel(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void PionsFouillesVidesSemiManuel(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void PionsFouillesVidesManuel(int d1, int x1, int y1, int d2=-1, int x2=-1, int y2=-1, int d3=-1, int x3=-1, int y3=-1, int d4=-1, int x4=-1, int y4=-1);
  import void PionsFouillesManuel(int d1, types t1, int x1, int y1, int d2=-1, types t2=-1, int x2=-1, int y2=-1, int d3=-1, types t3=-1, int x3=-1, int y3=-1);
  import void DallePlacementManuel(int d1, int d2=-1, int d3=-1, int d4=-1, int d5=-1, int d6=-1, int d7=-1, int d8=-1, int d9=-1, int d10=-1, int d11=-1, int d12=-1, int d13=-1, int d14=-1);
  import void DalleSansObjectifs(int d1, int d2=-1, int d3=-1, int d4=-1, int d5=-1, int d6=-1, int d7=-1, int d8=-1, int d9=-1, int d10=-1, int d11=-1, int d12=-1, int d13=-1, int d14=-1);
  import void PortesPrisonFermeesManuel(int d1, int x1, int y1, couleur c1, sens s1, int d2=-1, int x2=-1, int y2=-1, couleur c2=-1, sens s2=-1);
  import void PortesPrisonOuvertesManuel(int d1, int x1, int y1, couleur c1, sens s1, int d2=-1, int x2=-1, int y2=-1, couleur c2=-1, sens s2=-1);
  import void PortesStandardsFermeesManuel(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void PortesStandardsOuvertesManuel(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void CellulesBlancFermeesManuel(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void CellulesVioletFermeesManuel(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void PionExitManuel(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void SalleCachee(int d1, int x1, int y1, sens s1, bool obj1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, bool obj2=-1);
  import void PionDepart(int n1, sens s1, int n2=-1, sens s2=-1, int n3=-1, sens s3=-1, int n4=-1, sens s4=-1, int n5=-1, sens s5=-1, int n6=-1, sens s6=-1, int n7=-1, sens s7=-1);
  import void PlacementBarricades(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void PortesCouleursFermeesManuel(int d1, int x1, int y1, couleur c1, sens s1, int d2=-1, int x2=-1, int y2=-1, couleur c2=-1, sens s2=-1);
  import void Tentes(int sprite1, int d1, int n1, sens s1, int sprite2=-1, int d2=-1, int n2=-1, sens s2=-1, int sprite3=-1, int d3=-1, int n3=-1, sens s3=-1);
  import function IndicateursInvasionS3(int zone, int numero1, int numero2=-1, int numero3=-1, int numero4=-1, int numero5=-1, int numero6=-1);
  import void ObjectifsCouleur(int d1, int x1, int y1, couleur c1, int d2=-1, int x2=-1, int y2=-1, couleur c2=-1, int d3=-1, int x3=-1, int y3=-1, couleur c3=-1);
  import void InverserPortes(int p1, int p2=-1, int p3=-1, int p4=-1, int p5=-1, int p6=-1, int p7=-1, int p8=-1, int p9=-1, int p10=-1, int p11=-1, int p12=-1, int p13=-1, int p14=-1);
  import void PionExit(int n1, sens s1, int n2=-1, sens s2=-1, int n3=-1, sens s3=-1, int n4=-1, sens s4=-1, int n5=-1, sens s5=-1, int n6=-1, sens s6=-1, int n7=-1, sens s7=-1);
  import void SASManuel(int d, int x, int y, int face, sens s);
  import void SAS(int d, int face, sens s);
  import void PionsDeclencheurs(int d1, int d2=-1, int d3=-1, int d4=-1, int d5=-1, int d6=-1, int d7=-1, int d8=-1, int d9=-1, int d10=-1, int d11=-1, int d12=-1, int d13=-1, int d14=-1);
  import void VehiculesRue(int proba, int n1, sens s1, int n2=-1, sens s2=-1, int n3=-1, sens s3=-1, int n4=-1, sens s4=-1, int n5=-1, sens s5=-1, int n6=-1, sens s6=-1);
  import void VehiculesGarage(int proba, int n1, sens s1, int n2=-1, sens s2=-1, int n3=-1, sens s3=-1, int n4=-1, sens s4=-1, int n5=-1, sens s5=-1, int n6=-1, sens s6=-1);
  import void HelicoptereRue(int proba, int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1);
  import void HelicoptereHeliport(int proba, int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1);
  import void ZonesInvasionAlea(int n1, sens s1, int n2=-1, sens s2=-1, int n3=-1, sens s3=-1, int n4=-1, sens s4=-1, int n5=-1, sens s5=-1, int n6=-1, sens s6=-1, int n7=-1, sens s7=-1);
  import void ZonesInvasionAleaManuel(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void ZonesInvasionRougesFixesManuel(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void PionDepartManuel(int d1, int x1, int y1, int d2=-1, int x2=-1, int y2=-1, int d3=-1, int x3=-1, int y3=-1, int d4=-1, int x4=-1, int y4=-1);
  import void PionsRecherche(int d1, int x1, int y1, int d2=-1, int x2=-1, int y2=-1, int d3=-1, int x3=-1, int y3=-1, int d4=-1, int x4=-1, int y4=-1);
  import void ZonesInvasionRouges(int n1, sens s1, int n2=-1, sens s2=-1, int n3=-1, sens s3=-1, int n4=-1, sens s4=-1, int n5=-1, sens s5=-1, int n6=-1, sens s6=-1, int n7=-1, sens s7=-1);
  import void ZonesInvasionRougesManuel(int d1, int x1, int y1, sens s1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, int d3=-1, int x3=-1, int y3=-1, sens s3=-1);
  import void ZonesInvasionRougesFixes(int n1, sens s1, int n2=-1, sens s2=-1, int n3=-1, sens s3=-1, int n4=-1, sens s4=-1, int n5=-1, sens s5=-1, int n6=-1, sens s6=-1, int n7=-1, sens s7=-1);
  import void ZonesInvasionCouleur(int n1, couleur c1, sens s1, int n2=-1, couleur c2=-1, sens s2=-1, int n3=-1, couleur c3=-1, sens s3=-1, int n4=-1, couleur c4=-1, sens s4=-1);
  import void ZonesInvasionCouleurManuel(int d1, int x1, int y1, couleur c1, sens s1, int d2=-1, int x2=-1, int y2=-1, couleur c2=-1, sens s2=-1);
  import void PortesExtStandardsFermees(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void PortesExtStandardsOuvertes(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void PortesIntStandardsFermees(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void PortesIntStandardsOuvertes(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void CellulesIntVioletFermees(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void CellulesIntBlancFermees(int d1, int n1, int d2=-1, int n2=-1, int d3=-1, int n3=-1, int d4=-1, int n4=-1, int d5=-1, int n5=-1, int d6=-1, int n6=-1, int d7=-1, int n7=-1);
  import void PortesPrisonIntFermees(int d1, int n1, couleur c1, int d2=-1, int n2=-1, couleur c2=-1, int d3=-1, int n3=-1, couleur c3=-1, int d4=-1, int n4=-1, couleur c4=-1);
  import void PortesPrisonIntOuvertes(int d1, int n1, couleur c1, int d2=-1, int n2=-1, couleur c2=-1, int d3=-1, int n3=-1, couleur c3=-1, int d4=-1, int n4=-1, couleur c4=-1);
  import void PortesPrisonExtFermees(int d1, int n1, couleur c1, int d2=-1, int n2=-1, couleur c2=-1, int d3=-1, int n3=-1, couleur c3=-1, int d4=-1, int n4=-1, couleur c4=-1);
  import void PortesIntCouleursFermees(int d1, int n1, couleur c1, int d2=-1, int n2=-1, couleur c2=-1, int d3=-1, int n3=-1, couleur c3=-1, int d4=-1, int n4=-1, couleur c4=-1);
  import void PortesExtCouleursFermees(int d1, int n1, couleur c1, int d2=-1, int n2=-1, couleur c2=-1, int d3=-1, int n3=-1, couleur c3=-1, int d4=-1, int n4=-1, couleur c4=-1);
  import void Mirador(int d1, int x1, int y1, sens s1, bool fouille1, int d2=-1, int x2=-1, int y2=-1, sens s2=-1, bool fouille2=-1);
  import void Pionapparition(int numero1, int d1, int x1, int y1, int numero2=-1, int d2=-1, int x2=-1, int y2=-1, int numero3=-1, int d3=-1, int x3=-1, int y3=-1);
  import void PionDepartManuel(int d1, int x1, int y1, int d2=-1, int x2=-1, int y2=-1, int d3=-1, int x3=-1, int y3=-1, int d4=-1, int x4=-1, int y4=-1);
  import void LienPionsSpeciauxBatiment(int numerobatiment, int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1, int n7=-1, int n8=-1, int n9=-1, int n10=-1, int n11=-1, int n12=-1, int n13=-1);
  import void FormationBatiment(int numero, int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1, int n7=-1, int n8=-1, int n9=-1, int n10=-1, int n11=-1, int n12=-1, int n13=-1);
  import void FormationBatimentInterrupteur(couleur c, int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1, int n7=-1, int n8=-1, int n9=-1, int n10=-1, int n11=-1, int n12=-1, int n13=-1);
  import void PlacementPionsFouilles(int d);
  import void PlacementObjectifs(int d);
  import void PlacementObjectifSpecialManuel(int d, int x, int y);
  import void GenerationBatimentManuel(int n1, int n2=-1, int n3=-1, int n4=-1, int n5=-1, int n6=-1, int n7=-1, int n8=-1, int n9=-1, int n10=-1, int n11=-1, int n12=-1, int n13=-1, int n14=-1);
  import void PionOuvertureBatimentSemiManuel(int numerobatiment1, int z1, int numerobatiment2=-1, int z2=-1, int numerobatiment3=-1, int z3=-1, int numerobatiment4=-1, int z4=-1, int numerobatiment5=-1, int z5=-1, int numerobatiment6=-1, int z6=-1, int numerobatiment7=-1, int z7=-1);
  import void PionOuvertureBatiment(int n1, int d1, int n2=-1, int d2=-1, int n3=-1, int d3=-1, int n4=-1, int d4=-1, int n5=-1, int d5=-1, int n6=-1, int d6=-1, int n7=-1, int d7=-1);
  import void PionOuvertureBatimentManuel(int numerobatiment1, int d1, int x1, int y1, int numerobatiment2=-1, int d2=-1, int x2=-1, int y2=-1, int numerobatiment3=-1, int d3=-1, int x3=-1, int y3=-1);
  import void PlacementObjectifsManuel(int numero, types type1, int xtype1, int ytype1, types type2=-1, int xtype2=-1, int ytype2=-1, types type3=-1, int xtype3=-1, int ytype3=-1, types type4=-1, int xtype4=-1, int ytype4=-1);
  import void PlacementObjectifsSeulsManuel(int d1, int xtype1, int ytype1, int d2=-1, int xtype2=-1, int ytype2=-1, int d3=-1, int xtype3=-1, int ytype3=-1, int d4=-1, int xtype4=-1, int ytype4=-1);
 
 
};


I ask about it because I plan to add many maps in my game, and for now the total maps is 114, but I plan to add more and more... It won't reach 1000 maps anyway, but maybe...400 ? 500 ? Will it have performance issues ? Or any other issue ?