示例#1
0
// 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);
}
示例#2
0
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;
}
示例#3
0
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;
}