Exemplo n.º 1
0
void InsertMission(CampaignOptions *co, Mission *mission, int idx)
{
	if (mission == NULL)
	{
		Mission defaultMission;
		MissionInit(&defaultMission);
		defaultMission.Size = Vec2iNew(48, 48);
		mission = &defaultMission;
	}
	CArrayInsert(&co->Setting.Missions, idx, mission);
}
Exemplo n.º 2
0
void HighScoresAdd(const int s)
{
	// Find the right position to add the score
	// Scores are in descending order
	HighScore hsNew;
	hsNew.Score = s;
	hsNew.Time = time(NULL);
	bool inserted = false;
	for (int i = 0; i < (int)HighScores.size; i++)
	{
		const HighScore *hs = CArrayGet(&HighScores, i);
		if (hs->Score <= s)
		{
			CArrayInsert(&HighScores, i, &hsNew);
			inserted = true;
			break;
		}
	}
	if (!inserted)
	{
		CArrayPushBack(&HighScores, &hsNew);
	}

	// Save to file
	char buf[MAX_PATH];
	get_user_config_file(buf, MAX_PATH, HIGH_SCORE_FILE);
	if (strlen(buf) == 0)
	{
		printf("Error: cannot find config file path\n");
		return;
	}
	FILE *f = fopen(buf, "w");
	if (f == NULL)
	{
		printf("Error: cannot open config file %s\n", buf);
		return;
	}
	for (int i = 0; i < MIN((int)HighScores.size, MAX_HIGH_SCORES); i++)
	{
		const HighScore *hs = CArrayGet(&HighScores, i);
		struct tm *ptm = gmtime(&hs->Time);
		strftime(buf, sizeof buf, "%Y-%m-%d %H:%M:%S", ptm);
		fprintf(f, "%d %s\n", hs->Score, buf);
	}
	fclose(f);
}
Exemplo n.º 3
0
void InsertMission(CampaignOptions *co, Mission *mission, int idx)
{
	Mission defaultMission;
	if (mission == NULL)
	{
		MissionInit(&defaultMission);
		defaultMission.Size = Vec2iNew(48, 48);
		// Set some default values for the mission
		defaultMission.u.Classic.CorridorWidth = 1;
		defaultMission.u.Classic.Rooms.Min =
			defaultMission.u.Classic.Rooms.Max = 5;
		defaultMission.u.Classic.Rooms.WallLength = 1;
		defaultMission.u.Classic.Rooms.WallPad = 1;
		defaultMission.u.Classic.Doors.Min =
			defaultMission.u.Classic.Doors.Max = 1;
		defaultMission.u.Classic.Pillars.Min =
			defaultMission.u.Classic.Pillars.Max = 1;
		mission = &defaultMission;
	}
	CArrayInsert(&co->Setting.Missions, idx, mission);
}
Exemplo n.º 4
0
void InsertMission(CampaignOptions *co, Mission *mission, int idx)
{
	Mission m;
	if (mission == NULL)
	{
		MissionInit(&m);
		m.Size = svec2i(48, 48);
		// Set some default values for the mission
		m.u.Classic.CorridorWidth = 1;
		m.u.Classic.Rooms.Min = m.u.Classic.Rooms.Max = 5;
		m.u.Classic.Rooms.WallLength = 1;
		m.u.Classic.Rooms.WallPad = 1;
		m.u.Classic.Doors.Min = m.u.Classic.Doors.Max = 1;
		m.u.Classic.Pillars.Min = m.u.Classic.Pillars.Max = 1;
	}
	else
	{
		memset(&m, 0, sizeof m);
		MissionCopy(&m, mission);
	}
	CArrayInsert(&co->Setting.Missions, idx, &m);
}
Exemplo n.º 5
0
static void AddGraphicsMode(GraphicsDevice *device, const int w, const int h)
{
    // Don't add if mode already exists
    if (FindValidMode(device, w, h) != -1)
    {
        return;
    }

    const int size = w * h;
    int i;
    for (i = 0; i < (int)device->validModes.size; i++)
    {
        // Ordered by actual resolution ascending and scale descending
        const Vec2i *mode = CArrayGet(&device->validModes, i);
        const int actualResolution = mode->x * mode->y;
        if (actualResolution >= size)
        {
            break;
        }
    }
    Vec2i mode = Vec2iNew(w, h);
    CArrayInsert(&device->validModes, i, &mode);
}