// Mission Screen Initialization logic void InitMissionScreen(void) { framesCounter = 0; finishScreen = 0; fadeButton = 0.80f; texBackground = LoadTexture("resources/textures/mission_background.png"); texBackline = LoadTexture("resources/textures/mission_backline.png"); sourceRecBackLine = (Rectangle){0,0,GetScreenWidth(), texBackline.height}; destRecBackLine = (Rectangle){0,0,sourceRecBackLine.width, sourceRecBackLine.height}; fadeBackLine = 0; fxTransmit = LoadSound("resources/audio/fx_message.ogg"); musMission = LoadMusicStream("resources/audio/music_mission.ogg"); PlayMusicStream(musMission); // Initialize missions missions = LoadMissions("resources/missions.txt"); missionMaxLength = strlen(missions[currentMission].brief); // Insert line breaks every MAX_LINE_CHAR int currentLine = 1; int i = currentLine * MAX_LINE_CHAR; while (i < missionMaxLength) { if (missions[currentMission].brief[i] == ' ') { missions[currentMission].brief[i] = '\n'; currentLine++; i = currentLine*MAX_LINE_CHAR; } else i++; } missionSize = 30; missionLenght = 0; missionSpeed = 1; numberColor = RAYWHITE; missionColor = LIGHTGRAY; keywordColor = (Color){198, 49, 60, 255}; //RED numberPosition = (Vector2){150, 185}; missionPosition = (Vector2){numberPosition.x, numberPosition.y + 60}; keywordPosition = (Vector2){missionPosition.x, missionPosition.y + MeasureTextEx(fontMission, missions[currentMission].brief, missionSize, 0).y + 60}; startWritting = false; writeNumber = false; writeMission = false; writeKeyword = false; writeEnd = false; writtingMission = false; showNumberWaitFrames = 30; showMissionWaitFrames = 60; showKeywordWaitFrames = 60; blinkKeyWord = true; blinkFrames = 15; PlaySound(fxTransmit); }
int MapNewLoadArchive(const char *filename, CampaignSetting *c) { LOG(LM_MAP, LL_DEBUG, "Loading archive map %s", filename); int err = 0; json_t *root = ReadArchiveJSON(filename, "campaign.json"); if (root == NULL) { err = -1; goto bail; } int version; LoadInt(&version, root, "Version"); if (version > MAP_VERSION || version <= 2) { err = -1; goto bail; } MapNewLoadCampaignJSON(root, c); json_free_value(&root); // Unload previous custom data SoundClear(&gSoundDevice.customSounds); PicManagerClearCustom(&gPicManager); ParticleClassesClear(&gParticleClasses.CustomClasses); AmmoClassesClear(&gAmmo.CustomAmmo); CharacterClassesClear(&gCharacterClasses.CustomClasses); BulletClassesClear(&gBulletClasses.CustomClasses); WeaponClassesClear(&gGunDescriptions.CustomGuns); PickupClassesClear(&gPickupClasses.CustomClasses); MapObjectsClear(&gMapObjects.CustomClasses); // Load any custom data LoadArchiveSounds(&gSoundDevice, filename, "sounds"); LoadArchivePics(&gPicManager, filename, "graphics"); root = ReadArchiveJSON(filename, "particles.json"); if (root != NULL) { ParticleClassesLoadJSON(&gParticleClasses.CustomClasses, root); } root = ReadArchiveJSON(filename, "character_classes.json"); if (root != NULL) { CharacterClassesLoadJSON( &gCharacterClasses.CustomClasses, root); } root = ReadArchiveJSON(filename, "bullets.json"); if (root != NULL) { BulletLoadJSON( &gBulletClasses, &gBulletClasses.CustomClasses, root); } root = ReadArchiveJSON(filename, "ammo.json"); if (root != NULL) { AmmoLoadJSON(&gAmmo.CustomAmmo, root); json_free_value(&root); } root = ReadArchiveJSON(filename, "guns.json"); if (root != NULL) { WeaponLoadJSON( &gGunDescriptions, &gGunDescriptions.CustomGuns, root); json_free_value(&root); } BulletLoadWeapons(&gBulletClasses); root = ReadArchiveJSON(filename, "pickups.json"); if (root != NULL) { PickupClassesLoadJSON(&gPickupClasses.CustomClasses, root); } PickupClassesLoadAmmo(&gPickupClasses.CustomClasses, &gAmmo.CustomAmmo); PickupClassesLoadGuns( &gPickupClasses.CustomClasses, &gGunDescriptions.CustomGuns); root = ReadArchiveJSON(filename, "map_objects.json"); if (root != NULL) { MapObjectsLoadJSON(&gMapObjects.CustomClasses, root); } MapObjectsLoadAmmoAndGunSpawners(&gMapObjects, &gAmmo, &gGunDescriptions); root = ReadArchiveJSON(filename, "missions.json"); if (root == NULL) { err = -1; goto bail; } LoadMissions( &c->Missions, json_find_first_label(root, "Missions")->child, version); json_free_value(&root); // Note: some campaigns don't have characters (e.g. dogfights) root = ReadArchiveJSON(filename, "characters.json"); if (root != NULL) { LoadCharacters( &c->characters, json_find_first_label(root, "Characters")->child, version); } bail: json_free_value(&root); return err; }
int MapNewLoad(const char *filename, CampaignSetting *c) { int err = 0; debug(D_NORMAL, "Loading map %s\n", filename); if (IsCampaignOldFile(filename)) { CampaignSettingOld cOld; memset(&cOld, 0, sizeof cOld); err = LoadCampaignOld(filename, &cOld); if (!err) { ConvertCampaignSetting(c, &cOld); } CFREE(cOld.missions); CFREE(cOld.characters); return err; } if (strcmp(StrGetFileExt(filename), "cdogscpn") == 0 || strcmp(StrGetFileExt(filename), "CDOGSCPN") == 0) { return MapNewLoadArchive(filename, c); } // try to load the new map format json_t *root = NULL; int version; FILE *f = fopen(filename, "r"); if (f == NULL) { debug(D_NORMAL, "MapNewLoad - invalid path!\n"); err = -1; goto bail; } if (json_stream_parse(f, &root) != JSON_OK) { printf("Error parsing campaign '%s'\n", filename); err = -1; goto bail; } LoadInt(&version, root, "Version"); if (version > 2 || version <= 0) { assert(0 && "not implemented or unknown campaign"); err = -1; goto bail; } MapNewLoadCampaignJSON(root, c); LoadMissions(&c->Missions, json_find_first_label(root, "Missions")->child, version); CharacterLoadJSON(&c->characters, root, version); bail: json_free_value(&root); if (f != NULL) { fclose(f); } return err; }