diff options
Diffstat (limited to 'src/GameInitDispose.cpp')
| -rw-r--r-- | src/GameInitDispose.cpp | 443 |
1 files changed, 105 insertions, 338 deletions
diff --git a/src/GameInitDispose.cpp b/src/GameInitDispose.cpp index 51c8b13..76721ee 100644 --- a/src/GameInitDispose.cpp +++ b/src/GameInitDispose.cpp @@ -36,7 +36,7 @@ extern Sprites sprites; extern Decals decals; extern Model skeletonmodels[10]; -extern Model gunmodels[10]; +extern Model gunmodels[11]; extern Costume costume[10]; extern Animation animation[30]; extern bool visions; @@ -61,31 +61,7 @@ void resizeWindow(Game* game, int width, int height) glViewport(0, 0, width, height); } -Game* makeGame(Config config, Scores scores) -{ - auto game = new Game(); - game->screenwidth = config.width; - game->screenheight = config.height; - blood = config.blood; - - game->musictoggle = config.music; - - game->mouse_sensitivity = config.mouse_sensitivity; - keymap = config.key; - - game->levels = config.levels.ptr; - game->nummissions = config.levels.len; - game->debug = config.debug; - - game->highscore = scores.high_score; - game->beatgame = scores.completed; - game->disttest = true; - game->cubetest = true; - setMenu(game, true); - return game; -} - -void LoadSounds(bool musictoggle) +void loadSounds(bool musictoggle) { gSampleSet[footstepsound + 0] = loadSound("footstep/0.ogg"); gSampleSet[footstepsound + 1] = loadSound("footstep/1.ogg"); @@ -187,6 +163,83 @@ void LoadSounds(bool musictoggle) } } +void loadModels(Game* game) +{ + game->blocks[0] = loadModel("blocks/0.off"); + game->blocks[1] = loadModel("blocks/1.off"); + game->blocks[2] = loadModel("blocks/2.off"); + game->blocks[3] = loadModel("blocks/3.off"); + game->sidewalkcollide = loadModel("collide/sidewalk.off"); + game->blockwalls[0] = loadModel("collide/blocks/walls/0.off"); + game->blockwalls[1] = loadModel("collide/blocks/walls/1.off"); + game->blockwalls[2] = loadModel("collide/blocks/walls/2.off"); + game->blockwalls[3] = loadModel("collide/blocks/walls/3.off"); + game->blockroofs[0] = loadModel("collide/blocks/roofs/0.off"); + game->blockroofs[1] = loadModel("collide/blocks/roofs/1.off"); + game->blockroofs[2] = loadModel("collide/blocks/roofs/2.off"); + game->blockroofs[3] = loadModel("collide/blocks/roofs/3.off"); + game->blockcollide[0] = loadModel("collide/blocks/0.off"); + game->blockcollide[1] = loadModel("collide/blocks/1.off"); + game->blockcollide[2] = loadModel("collide/blocks/2.off"); + game->blockcollide[3] = loadModel("collide/blocks/3.off"); + game->blocksimplecollide[0] = loadModel("collide/blocks/simple/0.off"); + game->blocksimplecollide[1] = loadModel("collide/blocks/simple/1.off"); + game->blocksimplecollide[2] = loadModel("collide/blocks/simple/2.off"); + game->blocksimplecollide[3] = loadModel("collide/blocks/simple/3.off"); + game->blockocclude = loadModel("blocks/occlude.off"); + game->blocksimple = loadModel("blocks/simple.off"); + game->street = loadModel("streets/small.off"); + game->Bigstreet = loadModel("streets/big.off"); + + skeletonmodels[0] = loadModel("skeleton/head.off"); + skeletonmodels[1] = loadModel("skeleton/chest.off"); + skeletonmodels[2] = loadModel("skeleton/abdomen.off"); + skeletonmodels[3] = loadModel("skeleton/arm.off"); + skeletonmodels[4] = loadModel("skeleton/forearm.off"); + skeletonmodels[5] = loadModel("skeleton/hand.off"); + skeletonmodels[6] = loadModel("skeleton/thigh.off"); + skeletonmodels[7] = loadModel("skeleton/leg.off"); + skeletonmodels[8] = loadModel("skeleton/foot.off"); + skeletonmodels[9] = loadModel("skeleton/shades.off"); + + gunmodels[sniperriflemodel] = loadModel("guns/sniper-rifle.off"); + gunmodels[assaultriflemodel] = loadModel("guns/assault-rifle.off"); + gunmodels[handgunbasemodel] = loadModel("guns/handgun-big-base.off"); + gunmodels[handgunslidemodel] = loadModel("guns/handgun-big-slide.off"); + gunmodels[handgun2basemodel] = loadModel("guns/handgun-small-base.off"); + gunmodels[handgun2slidemodel] = loadModel("guns/handgun-small-slide.off"); + gunmodels[grenadebasemodel] = loadModel("grenade/base.off"); + gunmodels[grenadepinmodel] = loadModel("grenade/pin.off"); + gunmodels[grenadespoonmodel] = loadModel("grenade/spoon.off"); + gunmodels[knifemodel] = loadModel("knife.off"); + gunmodels[shotgunmodel] = loadModel("guns/shotgun.off"); +} + +Game* makeGame(Config config, Scores scores) +{ + auto game = new Game(); + loadModels(game); // FIXME: free models + game->screenwidth = config.width; + game->screenheight = config.height; + blood = config.blood; + + game->musictoggle = config.music; + + game->mouse_sensitivity = config.mouse_sensitivity; + keymap = config.key; + + game->levels = config.levels.ptr; + game->nummissions = config.levels.len; + game->debug = config.debug; + + game->highscore = scores.high_score; + game->beatgame = scores.completed; + game->disttest = true; + game->cubetest = true; + setMenu(game, true); + return game; +} + void initGame(Game* game) { //Set up rain and snow @@ -253,9 +306,7 @@ void initGame(Game* game) if (!game->initialized) { soundscalefactor = 10; - - // Sounds - LoadSounds(game->musictoggle); + loadSounds(game->musictoggle); //Play correct song if (environment == rainy_environment) @@ -276,36 +327,6 @@ void initGame(Game* game) alSourcef(sound_source, AL_MAX_GAIN, 1); } - // Setup block models - if (!game->initialized) { - game->blocks[0].load("blocks/0.off"); - game->blocks[1].load("blocks/1.off"); - game->blocks[2].load("blocks/2.off"); - game->blocks[3].load("blocks/3.off"); - game->sidewalkcollide.load("collide/sidewalk.off"); - game->blockwalls[0].load("collide/blocks/walls/0.off"); - game->blockwalls[1].load("collide/blocks/walls/1.off"); - game->blockwalls[2].load("collide/blocks/walls/2.off"); - game->blockwalls[3].load("collide/blocks/walls/3.off"); - game->blockroofs[0].load("collide/blocks/roofs/0.off"); - game->blockroofs[1].load("collide/blocks/roofs/1.off"); - game->blockroofs[2].load("collide/blocks/roofs/2.off"); - game->blockroofs[3].load("collide/blocks/roofs/3.off"); - game->blockcollide[0].load("collide/blocks/0.off"); - game->blockcollide[1].load("collide/blocks/1.off"); - game->blockcollide[2].load("collide/blocks/2.off"); - game->blockcollide[3].load("collide/blocks/3.off"); - game->blocksimplecollide[0].load("collide/blocks/simple/0.off"); - game->blocksimplecollide[1].load("collide/blocks/simple/1.off"); - game->blocksimplecollide[2].load("collide/blocks/simple/2.off"); - game->blocksimplecollide[3].load("collide/blocks/simple/3.off"); - game->blockocclude.load("blocks/occlude.off"); - game->blocksimple.load("blocks/simple.off"); - game->street.load("streets/small.off"); - game->Bigstreet.load("streets/big.off"); - game->path.load("streets/path.off"); - } - auto& vip = game->person[game->numpeople = 1]; vip.type = viptype; vip.whichgun = nogun; @@ -319,15 +340,11 @@ void initGame(Game* game) / block_spacing; vip.whichblocky = (bodyguard.playercoords.z + block_spacing / 2) / block_spacing; - vip.oldoldoldpathnum = vip.oldoldpathnum - = vip.oldpathnum = vip.pathnum = -1; - - while (vip.pathnum < 0 || vip.pathnum == 1 - || vip.pathnum >= game->path.vertexNum) - vip.pathnum = randUint(game->path.vertexNum); + vip.oldoldoldpathnum = vip.oldoldpathnum = vip.oldpathnum = -1; - vip.pathtarget.x = game->path.vertex[vip.pathnum].x; - vip.pathtarget.z = game->path.vertex[vip.pathnum].z; + vip.pathnum = randUint(8); + vip.pathtarget.x = DIRECTIONS[vip.pathnum].x; + vip.pathtarget.z = DIRECTIONS[vip.pathnum].z; vip.pathsize = 0.98f + 0.04f * randFloat(); vip.pathtarget *= vip.pathsize; vip.pathtarget.x += vip.whichblockx * block_spacing; @@ -360,33 +377,6 @@ void initGame(Game* game) game->citypeoplenum[i][j] = 0; } - if (!game->initialized) { - // Load person model - skeletonmodels[0].load("skeleton/head.off"); - skeletonmodels[1].load("skeleton/chest.off"); - skeletonmodels[2].load("skeleton/abdomen.off"); - skeletonmodels[3].load("skeleton/arm.off"); - skeletonmodels[4].load("skeleton/forearm.off"); - skeletonmodels[5].load("skeleton/hand.off"); - skeletonmodels[6].load("skeleton/thigh.off"); - skeletonmodels[7].load("skeleton/leg.off"); - skeletonmodels[8].load("skeleton/foot.off"); - skeletonmodels[9].load("skeleton/shades.off"); - - // Load weapon models - gunmodels[sniperriflemodel].load("guns/sniper-rifle.off"); - gunmodels[assaultriflemodel].load("guns/assault-rifle.off"); - gunmodels[handgunbasemodel].load("guns/handgun-big-base.off"); - gunmodels[handgunslidemodel].load("guns/handgun-big-slide.off"); - gunmodels[handgun2basemodel].load("guns/handgun-small-base.off"); - gunmodels[handgun2slidemodel].load("guns/handgun-small-slide.off"); - gunmodels[grenadebasemodel].load("grenade/base.off"); - gunmodels[grenadepinmodel].load("grenade/pin.off"); - gunmodels[grenadespoonmodel].load("grenade/spoon.off"); - gunmodels[knifemodel].load("knife.off"); - gunmodels[shotgunmodel].load("guns/shotgun.off"); - } - //Setup costumes float headcolor[3]; float footcolor[3]; @@ -423,506 +413,262 @@ void initGame(Game* game) } costume[policecostume].headcolor[0]=headcolor[0]; - costume[policecostume].headcolor[1]=headcolor[1]; - costume[policecostume].headcolor[2]=headcolor[2]; - costume[policecostume].handcolor[0]=handcolor[0]; - costume[policecostume].handcolor[1]=handcolor[1]; - costume[policecostume].handcolor[2]=handcolor[2]; - costume[policecostume].chestcolor[0]=topcolor[0]; - costume[policecostume].chestcolor[1]=topcolor[1]; - costume[policecostume].chestcolor[2]=topcolor[2]; - costume[policecostume].abdomencolor[0]=topcolor[0]; - costume[policecostume].abdomencolor[1]=topcolor[1]; - costume[policecostume].abdomencolor[2]=topcolor[2]; - costume[policecostume].upperarmcolor[0]=topcolor[0]; - costume[policecostume].upperarmcolor[1]=topcolor[1]; - costume[policecostume].upperarmcolor[2]=topcolor[2]; - costume[policecostume].lowerarmcolor[0]=topcolor[0]; - costume[policecostume].lowerarmcolor[1]=topcolor[1]; - costume[policecostume].lowerarmcolor[2]=topcolor[2]; - costume[policecostume].upperlegcolor[0]=bottomcolor[0]; - costume[policecostume].upperlegcolor[1]=bottomcolor[1]; - costume[policecostume].upperlegcolor[2]=bottomcolor[2]; - costume[policecostume].lowerlegcolor[0]=bottomcolor[0]; - costume[policecostume].lowerlegcolor[1]=bottomcolor[1]; - costume[policecostume].lowerlegcolor[2]=bottomcolor[2]; - costume[policecostume].footcolor[0]=footcolor[0]; - costume[policecostume].footcolor[1]=footcolor[1]; - costume[policecostume].footcolor[2]=footcolor[2]; //casual - topcolor[0]=(float)14/255; - topcolor[1]=(float)200/255; - topcolor[2]=(float)30/255; - bottomcolor[0]=(float)14/255; - bottomcolor[1]=(float)18/255; - bottomcolor[2]=(float)195/255; - costume[casualcostumes].headcolor[0]=headcolor[0]; - costume[casualcostumes].headcolor[1]=headcolor[1]; - costume[casualcostumes].headcolor[2]=headcolor[2]; - costume[casualcostumes].handcolor[0]=handcolor[0]; - costume[casualcostumes].handcolor[1]=handcolor[1]; - costume[casualcostumes].handcolor[2]=handcolor[2]; - costume[casualcostumes].chestcolor[0]=topcolor[0]; - costume[casualcostumes].chestcolor[1]=topcolor[1]; - costume[casualcostumes].chestcolor[2]=topcolor[2]; - costume[casualcostumes].abdomencolor[0]=topcolor[0]; - costume[casualcostumes].abdomencolor[1]=topcolor[1]; - costume[casualcostumes].abdomencolor[2]=topcolor[2]; - costume[casualcostumes].upperarmcolor[0]=topcolor[0]; - costume[casualcostumes].upperarmcolor[1]=topcolor[1]; - costume[casualcostumes].upperarmcolor[2]=topcolor[2]; - costume[casualcostumes].lowerarmcolor[0]=handcolor[0]; - costume[casualcostumes].lowerarmcolor[1]=handcolor[1]; - costume[casualcostumes].lowerarmcolor[2]=handcolor[2]; - costume[casualcostumes].upperlegcolor[0]=bottomcolor[0]; - costume[casualcostumes].upperlegcolor[1]=bottomcolor[1]; - costume[casualcostumes].upperlegcolor[2]=bottomcolor[2]; - costume[casualcostumes].lowerlegcolor[0]=bottomcolor[0]; - costume[casualcostumes].lowerlegcolor[1]=bottomcolor[1]; - costume[casualcostumes].lowerlegcolor[2]=bottomcolor[2]; - costume[casualcostumes].footcolor[0]=footcolor[0]; - costume[casualcostumes].footcolor[1]=footcolor[1]; - costume[casualcostumes].footcolor[2]=footcolor[2]; //casual 2 - topcolor[0]=(float)140/255; - topcolor[1]=(float)55/255; - topcolor[2]=(float)4/255; - bottomcolor[0]=(float)14/255; - bottomcolor[1]=(float)18/255; - bottomcolor[2]=(float)135/255; - costume[casualcostumes+1].headcolor[0]=headcolor[0]; - costume[casualcostumes+1].headcolor[1]=headcolor[1]; - costume[casualcostumes+1].headcolor[2]=headcolor[2]; - costume[casualcostumes+1].handcolor[0]=handcolor[0]; - costume[casualcostumes+1].handcolor[1]=handcolor[1]; - costume[casualcostumes+1].handcolor[2]=handcolor[2]; - costume[casualcostumes+1].chestcolor[0]=topcolor[0]; - costume[casualcostumes+1].chestcolor[1]=topcolor[1]; - costume[casualcostumes+1].chestcolor[2]=topcolor[2]; - costume[casualcostumes+1].abdomencolor[0]=topcolor[0]; - costume[casualcostumes+1].abdomencolor[1]=topcolor[1]; - costume[casualcostumes+1].abdomencolor[2]=topcolor[2]; - costume[casualcostumes+1].upperarmcolor[0]=topcolor[0]; - costume[casualcostumes+1].upperarmcolor[1]=topcolor[1]; - costume[casualcostumes+1].upperarmcolor[2]=topcolor[2]; - costume[casualcostumes+1].lowerarmcolor[0]=topcolor[0]; - costume[casualcostumes+1].lowerarmcolor[1]=topcolor[1]; - costume[casualcostumes+1].lowerarmcolor[2]=topcolor[2]; - costume[casualcostumes+1].upperlegcolor[0]=bottomcolor[0]; - costume[casualcostumes+1].upperlegcolor[1]=bottomcolor[1]; - costume[casualcostumes+1].upperlegcolor[2]=bottomcolor[2]; - costume[casualcostumes+1].lowerlegcolor[0]=bottomcolor[0]; - costume[casualcostumes+1].lowerlegcolor[1]=bottomcolor[1]; - costume[casualcostumes+1].lowerlegcolor[2]=bottomcolor[2]; - costume[casualcostumes+1].footcolor[0]=footcolor[0]; - costume[casualcostumes+1].footcolor[1]=footcolor[1]; - costume[casualcostumes+1].footcolor[2]=footcolor[2]; //casual 3 - topcolor[0]=(float)134/255; - topcolor[1]=(float)80/255; - topcolor[2]=(float)3/255; - bottomcolor[0]=(float)30/255; - bottomcolor[1]=(float)30/255; - bottomcolor[2]=(float)30/255; - footcolor[0]=(float)20/255; - footcolor[1]=(float)20/255; - footcolor[2]=(float)20/255; - costume[casualcostumes+2].headcolor[0]=headcolor[0]; - costume[casualcostumes+2].headcolor[1]=headcolor[1]; - costume[casualcostumes+2].headcolor[2]=headcolor[2]; - costume[casualcostumes+2].handcolor[0]=handcolor[0]; - costume[casualcostumes+2].handcolor[1]=handcolor[1]; - costume[casualcostumes+2].handcolor[2]=handcolor[2]; - costume[casualcostumes+2].chestcolor[0]=topcolor[0]; - costume[casualcostumes+2].chestcolor[1]=topcolor[1]; - costume[casualcostumes+2].chestcolor[2]=topcolor[2]; - costume[casualcostumes+2].abdomencolor[0]=topcolor[0]; - costume[casualcostumes+2].abdomencolor[1]=topcolor[1]; - costume[casualcostumes+2].abdomencolor[2]=topcolor[2]; - costume[casualcostumes+2].upperarmcolor[0]=topcolor[0]; - costume[casualcostumes+2].upperarmcolor[1]=topcolor[1]; - costume[casualcostumes+2].upperarmcolor[2]=topcolor[2]; - costume[casualcostumes+2].lowerarmcolor[0]=topcolor[0]; - costume[casualcostumes+2].lowerarmcolor[1]=topcolor[1]; - costume[casualcostumes+2].lowerarmcolor[2]=topcolor[2]; - costume[casualcostumes+2].upperlegcolor[0]=bottomcolor[0]; - costume[casualcostumes+2].upperlegcolor[1]=bottomcolor[1]; - costume[casualcostumes+2].upperlegcolor[2]=bottomcolor[2]; - costume[casualcostumes+2].lowerlegcolor[0]=bottomcolor[0]; - costume[casualcostumes+2].lowerlegcolor[1]=bottomcolor[1]; - costume[casualcostumes+2].lowerlegcolor[2]=bottomcolor[2]; - costume[casualcostumes+2].footcolor[0]=footcolor[0]; - costume[casualcostumes+2].footcolor[1]=footcolor[1]; - costume[casualcostumes+2].footcolor[2]=footcolor[2]; //casual 4 - topcolor[0]=(float)228/255; - topcolor[1]=(float)220/255; - topcolor[2]=(float)0/255; - bottomcolor[0]=(float)20/255; - bottomcolor[1]=(float)20/255; - bottomcolor[2]=(float)20/255; - footcolor[0]=(float)119/255; - footcolor[1]=(float)68/255; - footcolor[2]=(float)18/255; - costume[casualcostumes+3].headcolor[0]=headcolor[0]; - costume[casualcostumes+3].headcolor[1]=headcolor[1]; - costume[casualcostumes+3].headcolor[2]=headcolor[2]; - costume[casualcostumes+3].handcolor[0]=handcolor[0]; - costume[casualcostumes+3].handcolor[1]=handcolor[1]; - costume[casualcostumes+3].handcolor[2]=handcolor[2]; - costume[casualcostumes+3].chestcolor[0]=topcolor[0]; - costume[casualcostumes+3].chestcolor[1]=topcolor[1]; - costume[casualcostumes+3].chestcolor[2]=topcolor[2]; - costume[casualcostumes+3].abdomencolor[0]=topcolor[0]; - costume[casualcostumes+3].abdomencolor[1]=topcolor[1]; - costume[casualcostumes+3].abdomencolor[2]=topcolor[2]; - costume[casualcostumes+3].upperarmcolor[0]=topcolor[0]; - costume[casualcostumes+3].upperarmcolor[1]=topcolor[1]; - costume[casualcostumes+3].upperarmcolor[2]=topcolor[2]; - costume[casualcostumes+3].lowerarmcolor[0]=handcolor[0]; - costume[casualcostumes+3].lowerarmcolor[1]=handcolor[1]; - costume[casualcostumes+3].lowerarmcolor[2]=handcolor[2]; - costume[casualcostumes+3].upperlegcolor[0]=bottomcolor[0]; - costume[casualcostumes+3].upperlegcolor[1]=bottomcolor[1]; - costume[casualcostumes+3].upperlegcolor[2]=bottomcolor[2]; - costume[casualcostumes+3].lowerlegcolor[0]=bottomcolor[0]; - costume[casualcostumes+3].lowerlegcolor[1]=bottomcolor[1]; - costume[casualcostumes+3].lowerlegcolor[2]=bottomcolor[2]; - costume[casualcostumes+3].footcolor[0]=footcolor[0]; - costume[casualcostumes+3].footcolor[1]=footcolor[1]; - costume[casualcostumes+3].footcolor[2]=footcolor[2]; //vip topcolor[0]=(float)235/255; - topcolor[1]=(float)235/255; - topcolor[2]=(float)235/255; - bottomcolor[0]=(float)200/255; - bottomcolor[1]=(float)200/255; - bottomcolor[2]=(float)200/255; - footcolor[0]=(float)119/255; - footcolor[1]=(float)68/255; - footcolor[2]=(float)18/255; - headcolor[0]=(float)240/255; - headcolor[1]=(float)183/255; - headcolor[2]=(float)132/255; - footcolor[0]=(float)119/255; - footcolor[1]=(float)68/255; - footcolor[2]=(float)18/255; - handcolor[0]=(float)240/255; - handcolor[1]=(float)183/255; - handcolor[2]=(float)132/255; - costume[vipcostume].headcolor[0]=headcolor[0]; - costume[vipcostume].headcolor[1]=headcolor[1]; - costume[vipcostume].headcolor[2]=headcolor[2]; - costume[vipcostume].handcolor[0]=handcolor[0]; - costume[vipcostume].handcolor[1]=handcolor[1]; - costume[vipcostume].handcolor[2]=handcolor[2]; - costume[vipcostume].chestcolor[0]=topcolor[0]; - costume[vipcostume].chestcolor[1]=topcolor[1]; - costume[vipcostume].chestcolor[2]=topcolor[2]; - costume[vipcostume].abdomencolor[0]=topcolor[0]; - costume[vipcostume].abdomencolor[1]=topcolor[1]; - costume[vipcostume].abdomencolor[2]=topcolor[2]; - costume[vipcostume].upperarmcolor[0]=topcolor[0]; - costume[vipcostume].upperarmcolor[1]=topcolor[1]; - costume[vipcostume].upperarmcolor[2]=topcolor[2]; - costume[vipcostume].lowerarmcolor[0]=topcolor[0]; - costume[vipcostume].lowerarmcolor[1]=topcolor[1]; - costume[vipcostume].lowerarmcolor[2]=topcolor[2]; - costume[vipcostume].upperlegcolor[0]=bottomcolor[0]; - costume[vipcostume].upperlegcolor[1]=bottomcolor[1]; - costume[vipcostume].upperlegcolor[2]=bottomcolor[2]; - costume[vipcostume].lowerlegcolor[0]=bottomcolor[0]; - costume[vipcostume].lowerlegcolor[1]=bottomcolor[1]; - costume[vipcostume].lowerlegcolor[2]=bottomcolor[2]; - costume[vipcostume].footcolor[0]=footcolor[0]; - costume[vipcostume].footcolor[1]=footcolor[1]; - costume[vipcostume].footcolor[2]=footcolor[2]; //Bodyguard - topcolor[0]=(float)50/255; - topcolor[1]=(float)50/255; - topcolor[2]=(float)50/255; - bottomcolor[0]=(float)30/255; - bottomcolor[1]=(float)30/255; - bottomcolor[2]=(float)30/255; - footcolor[0]=(float)20/255; - footcolor[1]=(float)20/255; - footcolor[2]=(float)20/255; - costume[bodyguardcostume].headcolor[0]=headcolor[0]; - costume[bodyguardcostume].headcolor[1]=headcolor[1]; - costume[bodyguardcostume].headcolor[2]=headcolor[2]; - costume[bodyguardcostume].handcolor[0]=handcolor[0]; - costume[bodyguardcostume].handcolor[1]=handcolor[1]; - costume[bodyguardcostume].handcolor[2]=handcolor[2]; - costume[bodyguardcostume].chestcolor[0]=topcolor[0]; - costume[bodyguardcostume].chestcolor[1]=topcolor[1]; - costume[bodyguardcostume].chestcolor[2]=topcolor[2]; - costume[bodyguardcostume].abdomencolor[0]=topcolor[0]; - costume[bodyguardcostume].abdomencolor[1]=topcolor[1]; - costume[bodyguardcostume].abdomencolor[2]=topcolor[2]; - costume[bodyguardcostume].upperarmcolor[0]=topcolor[0]; - costume[bodyguardcostume].upperarmcolor[1]=topcolor[1]; - costume[bodyguardcostume].upperarmcolor[2]=topcolor[2]; - costume[bodyguardcostume].lowerarmcolor[0]=topcolor[0]; - costume[bodyguardcostume].lowerarmcolor[1]=topcolor[1]; - costume[bodyguardcostume].lowerarmcolor[2]=topcolor[2]; - costume[bodyguardcostume].upperlegcolor[0]=bottomcolor[0]; - costume[bodyguardcostume].upperlegcolor[1]=bottomcolor[1]; - costume[bodyguardcostume].upperlegcolor[2]=bottomcolor[2]; - costume[bodyguardcostume].lowerlegcolor[0]=bottomcolor[0]; - costume[bodyguardcostume].lowerlegcolor[1]=bottomcolor[1]; - costume[bodyguardcostume].lowerlegcolor[2]=bottomcolor[2]; - costume[bodyguardcostume].footcolor[0]=footcolor[0]; - costume[bodyguardcostume].footcolor[1]=footcolor[1]; - costume[bodyguardcostume].footcolor[2]=footcolor[2]; // Load animations @@ -1048,6 +794,26 @@ struct Scores getScores(Game* game) }; } +void destroyModels(Game* game) +{ + for (unsigned char i = 0; i < 4; ++i) { + destroyModel(game->blocks + i); + destroyModel(game->blockwalls + i); + destroyModel(game->blockroofs + i); + destroyModel(game->blockcollide + i); + destroyModel(game->blocksimplecollide + i); + } + destroyModel(&game->sidewalkcollide); + destroyModel(&game->blockocclude); + destroyModel(&game->blocksimple); + destroyModel(&game->street); + destroyModel(&game->Bigstreet); + for (unsigned char i = 0; i < 10; ++i) + destroyModel(skeletonmodels + i); + for (unsigned char i = 0; i < 11; ++i) + destroyModel(gunmodels + i); +} + void closeGame(Game* game) { const GLuint textures[] { @@ -1060,5 +826,6 @@ void closeGame(Game* game) glDeleteTextures(5, textures); alDeleteSources(33 + game->musictoggle * 4, gSourceID); alDeleteBuffers(33 + game->musictoggle * 4, gSampleSet); + destroyModels(game); destroyDecals(&decals); } |
