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); }
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); }
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); }
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); }
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); }