| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- /*
- * This file is part of RuneOptimizer.
- *
- * RuneOptimizer is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation, either version 3 of the License, or (at your option)
- * any later version.
- *
- * RuneOptimizer is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * RuneOptimizer. If not, see <https://www.gnu.org/licenses/>.
- */
- /**
- * @file update.c
- *
- * Implementation of the update command.
- *
- * This file implements the update command declared in {@link update.h}.
- */
- #include <stdio.h>
- #include <string.h>
- #include "../runeoptimizer.h"
- #include "../error/error.h"
- #include "update.h"
- const int MAIN_STATS_VALUES[DIFFERENT_STATS][RUNE_MAX_STARS + 1][2] = {
- { //NULL (unused)
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0}
- },
- { //HP_FLAT
- {0, 0}, // 0 stars (unused)
- {580, 804}, // 1 stars
- {790, 1092}, // 2 stars
- {1000, 1380}, // 3 stars
- {1240, 1704}, // 4 stars
- {1530, 2088}, // 5 stars
- {1800, 2448} // 6 stars
- },
- { //HP_PERCENT
- {0, 0}, // 0 stars (unused)
- {13, 18}, // 1 stars
- {14, 19}, // 2 stars
- {28, 38}, // 3 stars
- {31, 43}, // 4 stars
- {37, 51}, // 5 stars
- {47, 63} // 6 stars
- },
- { //ATK_FLAT
- {0, 0}, // 0 stars (unused)
- {39, 54}, // 1 stars
- {53, 73}, // 2 stars
- {67, 92}, // 3 stars
- {82, 112}, // 4 stars
- {99, 135}, // 5 stars
- {118, 160}, // 6 stars
- },
- { //ATK_PERCENT
- {0, 0}, // 0 stars (unused)
- {13, 18}, // 1 stars
- {14, 19}, // 2 stars
- {28, 38}, // 3 stars
- {31, 43}, // 4 stars
- {37, 51}, // 5 stars
- {47, 63} // 6 stars
- },
- { //DEF_FLAT
- {0, 0}, // 0 stars (unused)
- {39, 54}, // 1 stars
- {53, 73}, // 2 stars
- {67, 92}, // 3 stars
- {82, 112}, // 4 stars
- {99, 135}, // 5 stars
- {118, 160}, // 6 stars
- },
- { //DEF_PERCENT
- {0, 0}, // 0 stars (unused)
- {13, 18}, // 1 stars
- {14, 19}, // 2 stars
- {28, 38}, // 3 stars
- {31, 43}, // 4 stars
- {37, 51}, // 5 stars
- {47, 63} // 6 stars
- },
- { //NULL (unused)
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0}
- },
- { //SPD
- {0, 0}, // 0 stars (unused)
- {13, 18}, // 1 stars
- {14, 19}, // 2 stars
- {18, 25}, // 3 stars
- {22, 30}, // 4 stars
- {29, 39}, // 5 stars
- {31, 42} // 6 stars
- },
- { //CRR
- {0, 0}, // 0 stars (unused)
- {13, 18}, // 1 stars
- {14, 19}, // 2 stars
- {27, 37}, // 3 stars
- {30, 41}, // 4 stars
- {34, 47}, // 5 stars
- {43, 58} // 6 stars
- },
- { //CRD
- {0, 0}, // 0 stars (unused)
- {14, 19}, // 1 stars
- {27, 37}, // 2 stars
- {32, 43}, // 3 stars
- {42, 57}, // 4 stars
- {48, 65}, // 5 stars
- {59, 80} // 6 stars
- },
- { //RES
- {0, 0}, // 0 stars (unused)
- {13, 18}, // 1 stars
- {14, 19}, // 2 stars
- {28, 38}, // 3 stars
- {32, 44}, // 4 stars
- {38, 51}, // 5 stars
- {48, 64} // 6 stars
- },
- { //ACC
- {0, 0}, // 0 stars (unused)
- {13, 18}, // 1 stars
- {14, 19}, // 2 stars
- {28, 38}, // 3 stars
- {32, 44}, // 4 stars
- {38, 51}, // 5 stars
- {48, 64} // 6 stars
- }
- };
- extern int update(int argc, char *argv[]){
- // Options
- unsigned char six_stars = FALSE;
- unsigned char with_runes = FALSE;
- unsigned char clear_teams = FALSE;
- unsigned char gui = FALSE;
- // One argument mandatory
- if (argc == 0){
- fprintf(
- stderr,
- "update command takes 1 or more arguments, %d supplied\n", argc - 3
- );
- return ERROR_INPUT_UPDATE_NO_ARGUMENTS;
- }
- // Parse options, skip first arg
- for (int i = 1; i < argc; i ++){
- if (strcmp("--six-stars", argv[i]) == 0 || strcmp("-s", argv[i]) == 0){
- six_stars = TRUE;
- }
- else if (
- strcmp("--with-runes", argv[i]) == 0 || strcmp("-r", argv[i]) == 0
- ){
- with_runes = TRUE;
- }
- else if (
- strcmp("--clear-teams", argv[i]) == 0 || strcmp("-t", argv[i]) == 0
- ){
- clear_teams = TRUE;
- }
- else if (
- strcmp("--gui", argv[i]) == 0 || strcmp("-g", argv[i]) == 0
- ){
- gui = TRUE;
- }
- }
- // First, test json
- if (strlen(argv[0]) > 5){
- char extension[6];
- strncpy(extension, argv[0] + strlen(argv[0]) - 5, 5);
- extension[5] = '\0';
- if (strcmp(extension, ".json") == 0){
- return update_json(
- argv[0], six_stars, with_runes, clear_teams, gui
- );
- }
- }
- // TODO: More ifs as more options are implemented...
- fprintf(stderr, "Unknwon source supplied: %s\n", argv[0]);
- return ERROR_INPUT_UPDATE_UNKNOWN_SOURCE;
- }
|