示例#1
0
void read_from(ReadSource in, Level& level) {
    read(in, level.netRaceFlags);
    read(in, level.playerNum);
    read(in, level.player, kMaxPlayerNum);
    read(in, level.scoreStringResID);
    read(in, level.initialFirst);
    read(in, level.prologueID);
    read(in, level.initialNum);
    read(in, level.songID);
    read(in, level.conditionFirst);
    read(in, level.epilogueID);
    read(in, level.conditionNum);
    read(in, level.starMapH);
    read(in, level.briefPointFirst);
    read(in, level.starMapV);
    read(in, level.briefPointNum);
    level.parTime = game_ticks(secs(read<int16_t>(in)));
    in.shift(2);
    read(in, level.parKills);
    read(in, level.levelNameStrNum);
    read(in, level.parKillRatio);
    read(in, level.parLosses);
    int16_t start_time = read<int16_t>(in);
    level.startTime    = secs(start_time & kLevel_StartTimeMask);
    level.is_training  = start_time & kLevel_IsTraining_Bit;
}
示例#2
0
String DebriefingScreen::build_score_text(
        game_ticks your_time, game_ticks par_time, int your_loss, int par_loss, int your_kill,
        int par_kill) {
    Resource rsrc("text", "txt", 6000);
    String   text(utf8::decode(rsrc.data()));

    StringList strings(6000);

    const int your_mins  = duration_cast<secs>(your_time.time_since_epoch()).count() / 60;
    const int your_secs  = duration_cast<secs>(your_time.time_since_epoch()).count() % 60;
    const int par_mins   = duration_cast<secs>(par_time.time_since_epoch()).count() / 60;
    const int par_secs   = duration_cast<secs>(par_time.time_since_epoch()).count() % 60;
    const int your_score = score(your_time, par_time, your_loss, par_loss, your_kill, par_kill);
    const int par_score  = 100;

    string_replace(&text, strings.at(0), your_mins);
    string_replace(&text, strings.at(1), dec(your_secs, 2));
    if (par_time > game_ticks()) {
        string_replace(&text, strings.at(2), par_mins);
        String secs_string;
        print(secs_string, format(":{0}", dec(par_secs, 2)));
        string_replace(&text, strings.at(3), secs_string);
    } else {
        StringList data_strings(6002);
        string_replace(&text, strings.at(2), data_strings.at(8));  // = "N/A"
        string_replace(&text, strings.at(3), "");
    }
    string_replace(&text, strings.at(4), your_loss);
    string_replace(&text, strings.at(5), par_loss);
    string_replace(&text, strings.at(6), your_kill);
    string_replace(&text, strings.at(7), par_kill);
    string_replace(&text, strings.at(8), your_score);
    string_replace(&text, strings.at(9), par_score);
    return text;
}