ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18gs

Dependencies:   mbed

Committer:
el18gs
Date:
Mon May 11 18:28:37 2020 +0000
Revision:
7:220d3ebf74cf
Parent:
3:9d811414d35e
Child:
8:4220d116f17c
Added additional details to the Enum Type 'Type' doccumentations;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el18gs 3:9d811414d35e 1 #include "Ghost.h"
el18gs 3:9d811414d35e 2 #include "mbed.h"
el18gs 3:9d811414d35e 3
el18gs 3:9d811414d35e 4 const string Ghost::_suffix = ".ghost";
el18gs 3:9d811414d35e 5
el18gs 3:9d811414d35e 6
el18gs 3:9d811414d35e 7 Ghost::Ghost(const std::string path, const std::string root)
el18gs 3:9d811414d35e 8 {
el18gs 3:9d811414d35e 9 string names[20] = {"Saul", "Airon", "Aiden", "Delic", "Airian",
el18gs 3:9d811414d35e 10 "Guya", "Tormey", "Muse", "Shayepe", "Lite",
el18gs 3:9d811414d35e 11 "Umber", "Haeven", "Elisum", "Fade", "Sentina",
el18gs 3:9d811414d35e 12 "Angis", "Lloial", "Aeren", "Angel", "Shayde"
el18gs 3:9d811414d35e 13 };
el18gs 3:9d811414d35e 14 for(int i = 0; i < 20; i++){
el18gs 3:9d811414d35e 15 _names.push_back(names[i]);
el18gs 3:9d811414d35e 16 }
el18gs 3:9d811414d35e 17
el18gs 3:9d811414d35e 18 _root = root;
el18gs 3:9d811414d35e 19
el18gs 3:9d811414d35e 20 // Connections to SD card holder on K64F (SPI interface)
el18gs 3:9d811414d35e 21 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
el18gs 3:9d811414d35e 22
el18gs 3:9d811414d35e 23 FILE *fp;
el18gs 3:9d811414d35e 24
el18gs 3:9d811414d35e 25 fp = fopen(path.c_str(), "r");
el18gs 3:9d811414d35e 26
el18gs 3:9d811414d35e 27 int lines=0; // going to store the number of lines in the file
el18gs 3:9d811414d35e 28 stringvec values;
el18gs 3:9d811414d35e 29
el18gs 3:9d811414d35e 30 if (fp == NULL) { // if it can't open the file then print error message
el18gs 3:9d811414d35e 31 printf("Error! Unable to open file: %s\n", path.c_str());
el18gs 3:9d811414d35e 32 listdir(path);
el18gs 3:9d811414d35e 33 } else {
el18gs 3:9d811414d35e 34 //Since we may not know the
el18gs 3:9d811414d35e 35 // number of lines in the files ahead of time, we'll first count them
el18gs 3:9d811414d35e 36 // * means scan but don't save
el18gs 3:9d811414d35e 37
el18gs 3:9d811414d35e 38 while (fscanf(fp, "%*s") != EOF) {
el18gs 3:9d811414d35e 39 lines++; // increment counter when read a line
el18gs 3:9d811414d35e 40 }
el18gs 3:9d811414d35e 41
el18gs 3:9d811414d35e 42 rewind(fp); // 'scrolled' to end of file, so go back to beginning
el18gs 3:9d811414d35e 43
el18gs 3:9d811414d35e 44 char buffer[15];
el18gs 3:9d811414d35e 45
el18gs 3:9d811414d35e 46 for(int i = 0; i < lines; i++) {
el18gs 3:9d811414d35e 47 fscanf(fp, "%s", buffer);
el18gs 3:9d811414d35e 48 if(buffer[0] != '/') {
el18gs 3:9d811414d35e 49 values.push_back(buffer);
el18gs 3:9d811414d35e 50 }
el18gs 3:9d811414d35e 51 }
el18gs 3:9d811414d35e 52
el18gs 3:9d811414d35e 53 _type = string_to_type(values[0]);
el18gs 3:9d811414d35e 54 _name = values[1];
el18gs 3:9d811414d35e 55 sscanf(values[2].c_str(), "%d", &_attack);
el18gs 3:9d811414d35e 56 sscanf(values[3].c_str(), "%d", &_defense);
el18gs 3:9d811414d35e 57 sscanf(values[4].c_str(), "%d", &_level);
el18gs 3:9d811414d35e 58 sscanf(values[5].c_str(), "%d", &_xp);
el18gs 3:9d811414d35e 59 sscanf(values[6].c_str(), "%d", &_value);
el18gs 3:9d811414d35e 60 sscanf(values[7].c_str(), "%d", &_hp_max);
el18gs 3:9d811414d35e 61 sscanf(values[8].c_str(), "%d", &_hp);
el18gs 3:9d811414d35e 62 sscanf(values[9].c_str(), "%d", &_uid);
el18gs 3:9d811414d35e 63
el18gs 3:9d811414d35e 64 fclose(fp);
el18gs 3:9d811414d35e 65 }
el18gs 3:9d811414d35e 66 }
el18gs 3:9d811414d35e 67
el18gs 3:9d811414d35e 68 Ghost::Ghost(int num, int nameNumber, const std::string root)
el18gs 3:9d811414d35e 69 {
el18gs 3:9d811414d35e 70 string names[20] = {"Saul", "Airon", "Aiden", "Delic", "Airian",
el18gs 3:9d811414d35e 71 "Guya", "Tormey", "Muse", "Shayepe", "Lite",
el18gs 3:9d811414d35e 72 "Umber", "Haeven", "Elisum", "Fade", "Sentina",
el18gs 3:9d811414d35e 73 "Angis", "Lloial", "Aeren", "Angel", "Shayde"
el18gs 3:9d811414d35e 74 };
el18gs 3:9d811414d35e 75
el18gs 3:9d811414d35e 76 for(int i = 0; i < 20; i++){
el18gs 3:9d811414d35e 77 _names.push_back(names[i]);
el18gs 3:9d811414d35e 78 }
el18gs 3:9d811414d35e 79 _root = root;
el18gs 3:9d811414d35e 80 _uid = gen_uid();
el18gs 3:9d811414d35e 81 int type = 0;
el18gs 7:220d3ebf74cf 82 if ((num > 0) && (num < 50)) {
el18gs 3:9d811414d35e 83 type = 0;
el18gs 7:220d3ebf74cf 84 } else if ((num >= 50) && (num < 70)) {
el18gs 3:9d811414d35e 85 type = 1;
el18gs 7:220d3ebf74cf 86 } else if ((num >= 70) && (num < 85)) {
el18gs 3:9d811414d35e 87 type = 2;
el18gs 7:220d3ebf74cf 88 } else if ((num >= 85) && (num < 95)) {
el18gs 3:9d811414d35e 89 type = 3;
el18gs 3:9d811414d35e 90 } else {
el18gs 3:9d811414d35e 91 type = 4;
el18gs 3:9d811414d35e 92 }
el18gs 3:9d811414d35e 93
el18gs 3:9d811414d35e 94 if(type == 0) {
el18gs 3:9d811414d35e 95 _attack = 10;
el18gs 3:9d811414d35e 96 _defense = 10;
el18gs 3:9d811414d35e 97 _level = 1;
el18gs 3:9d811414d35e 98 _xp = 0;
el18gs 3:9d811414d35e 99 _value = 10;
el18gs 3:9d811414d35e 100 _hp_max = 10;
el18gs 3:9d811414d35e 101 _hp = _hp_max;
el18gs 3:9d811414d35e 102 _type = BASIC;
el18gs 3:9d811414d35e 103 } else if(type == 1) {
el18gs 3:9d811414d35e 104 _attack = 15;
el18gs 3:9d811414d35e 105 _defense = 5;
el18gs 3:9d811414d35e 106 _level = 1;
el18gs 3:9d811414d35e 107 _xp = 0;
el18gs 3:9d811414d35e 108 _value = 15;
el18gs 3:9d811414d35e 109 _hp_max = 7;
el18gs 3:9d811414d35e 110 _hp = _hp_max;
el18gs 3:9d811414d35e 111 _type = ECTO;
el18gs 3:9d811414d35e 112 } else if(type == 2) {
el18gs 3:9d811414d35e 113 _attack = 5;
el18gs 3:9d811414d35e 114 _defense = 15;
el18gs 3:9d811414d35e 115 _level = 1;
el18gs 3:9d811414d35e 116 _xp = 0;
el18gs 3:9d811414d35e 117 _value = 15;
el18gs 3:9d811414d35e 118 _hp_max = 13;
el18gs 3:9d811414d35e 119 _hp = _hp_max;
el18gs 3:9d811414d35e 120 _type = POLTER;
el18gs 3:9d811414d35e 121 } else if(type == 3) {
el18gs 3:9d811414d35e 122 _attack = 15;
el18gs 3:9d811414d35e 123 _defense = 15;
el18gs 3:9d811414d35e 124 _level = 1;
el18gs 3:9d811414d35e 125 _xp = 0;
el18gs 3:9d811414d35e 126 _value = 20;
el18gs 3:9d811414d35e 127 _hp_max = 5;
el18gs 3:9d811414d35e 128 _hp = _hp_max;
el18gs 3:9d811414d35e 129 _type = ORB;
el18gs 3:9d811414d35e 130 } else if(type == 4) {
el18gs 3:9d811414d35e 131 _attack = 5;
el18gs 3:9d811414d35e 132 _defense = 5;
el18gs 3:9d811414d35e 133 _level = 10;
el18gs 3:9d811414d35e 134 _xp = 10;
el18gs 3:9d811414d35e 135 _value = 10;
el18gs 3:9d811414d35e 136 _hp_max = 20;
el18gs 3:9d811414d35e 137 _hp = _hp_max;
el18gs 3:9d811414d35e 138 _type = FUNNEL;
el18gs 3:9d811414d35e 139 }
el18gs 3:9d811414d35e 140
el18gs 3:9d811414d35e 141 _name = _names[nameNumber];
el18gs 3:9d811414d35e 142 }
el18gs 3:9d811414d35e 143
el18gs 3:9d811414d35e 144 void Ghost::listdir(std::string path)
el18gs 3:9d811414d35e 145 {
el18gs 3:9d811414d35e 146 // Connections to SD card holder on K64F (SPI interface)
el18gs 3:9d811414d35e 147 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
el18gs 3:9d811414d35e 148
el18gs 3:9d811414d35e 149 printf("Listing directory: %s\n", path.c_str());
el18gs 3:9d811414d35e 150 DIR *d;
el18gs 3:9d811414d35e 151 struct dirent *p;
el18gs 3:9d811414d35e 152
el18gs 3:9d811414d35e 153 d = opendir(path.c_str());
el18gs 3:9d811414d35e 154 if (d != NULL) {
el18gs 3:9d811414d35e 155 while ((p = readdir(d)) != NULL) {
el18gs 3:9d811414d35e 156 printf(" - %s\n", p->d_name);
el18gs 3:9d811414d35e 157 }
el18gs 3:9d811414d35e 158 } else {
el18gs 3:9d811414d35e 159 printf("Could not open directory!\n");
el18gs 3:9d811414d35e 160 }
el18gs 3:9d811414d35e 161 closedir(d);
el18gs 3:9d811414d35e 162 }
el18gs 3:9d811414d35e 163
el18gs 3:9d811414d35e 164 void Ghost::save(void)
el18gs 3:9d811414d35e 165 {
el18gs 3:9d811414d35e 166 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
el18gs 3:9d811414d35e 167 FILE *fp; // this is our file pointer
el18gs 3:9d811414d35e 168
el18gs 3:9d811414d35e 169 std::string filepath = "/sd";
el18gs 3:9d811414d35e 170
el18gs 3:9d811414d35e 171 filepath.append(_root);
el18gs 3:9d811414d35e 172
el18gs 3:9d811414d35e 173 char buf[10];
el18gs 3:9d811414d35e 174 sprintf(buf, "%d", _uid);
el18gs 3:9d811414d35e 175
el18gs 3:9d811414d35e 176 filepath.append(buf);
el18gs 3:9d811414d35e 177 filepath.append(_suffix);
el18gs 3:9d811414d35e 178
el18gs 3:9d811414d35e 179 fp = fopen(filepath.c_str(), "w");
el18gs 3:9d811414d35e 180
el18gs 3:9d811414d35e 181 if (fp == NULL) { // if it can't open the file then print error message
el18gs 3:9d811414d35e 182 printf("Error! Unable to open file!\n");
el18gs 3:9d811414d35e 183 } else { // opened file so can write
el18gs 3:9d811414d35e 184 fprintf(fp, "/Type\n");
el18gs 3:9d811414d35e 185 fprintf(fp, "%s\n", get_type_string().c_str());
el18gs 3:9d811414d35e 186 fprintf(fp, "/Name\n");
el18gs 3:9d811414d35e 187 fprintf(fp, "%s\n", get_name().c_str());
el18gs 3:9d811414d35e 188 fprintf(fp, "/Attack\n");
el18gs 3:9d811414d35e 189 fprintf(fp, "%d\n", get_attack());
el18gs 3:9d811414d35e 190 fprintf(fp, "/Defense\n");
el18gs 3:9d811414d35e 191 fprintf(fp, "%d\n", get_defense());
el18gs 3:9d811414d35e 192 fprintf(fp, "/Level\n");
el18gs 3:9d811414d35e 193 fprintf(fp, "%d\n", get_level());
el18gs 3:9d811414d35e 194 fprintf(fp, "/XP\n");
el18gs 3:9d811414d35e 195 fprintf(fp, "%d\n", get_xp());
el18gs 3:9d811414d35e 196 fprintf(fp, "/Value\n");
el18gs 3:9d811414d35e 197 fprintf(fp, "%d\n", get_value());
el18gs 3:9d811414d35e 198 fprintf(fp, "/HP_Max\n");
el18gs 3:9d811414d35e 199 fprintf(fp, "%d\n", get_hp_max());
el18gs 3:9d811414d35e 200 fprintf(fp, "/HP\n");
el18gs 3:9d811414d35e 201 fprintf(fp, "%d\n", get_hp());
el18gs 3:9d811414d35e 202 fprintf(fp, "/UID\n");
el18gs 3:9d811414d35e 203 fprintf(fp, "%d\n", get_uid());
el18gs 3:9d811414d35e 204 fclose(fp); // ensure you close the file after writing
el18gs 3:9d811414d35e 205 }
el18gs 3:9d811414d35e 206 }
el18gs 3:9d811414d35e 207
el18gs 3:9d811414d35e 208 int Ghost::sell(void)
el18gs 3:9d811414d35e 209 {
el18gs 3:9d811414d35e 210
el18gs 3:9d811414d35e 211 std::string filepath = "";
el18gs 3:9d811414d35e 212
el18gs 3:9d811414d35e 213 filepath.append(_root);
el18gs 3:9d811414d35e 214
el18gs 3:9d811414d35e 215 char buf[10];
el18gs 3:9d811414d35e 216 sprintf(buf, "%d", _uid);
el18gs 3:9d811414d35e 217
el18gs 3:9d811414d35e 218 filepath.append(buf);
el18gs 3:9d811414d35e 219 filepath.append(_suffix);
el18gs 3:9d811414d35e 220
el18gs 3:9d811414d35e 221 delete_file(filepath.c_str());
el18gs 3:9d811414d35e 222
el18gs 3:9d811414d35e 223 return _value;
el18gs 3:9d811414d35e 224 };
el18gs 3:9d811414d35e 225
el18gs 3:9d811414d35e 226 void Ghost::feed(int ammount)
el18gs 3:9d811414d35e 227 {
el18gs 3:9d811414d35e 228 _xp = _xp + ammount;
el18gs 3:9d811414d35e 229
el18gs 3:9d811414d35e 230 int new_level = 0;
el18gs 3:9d811414d35e 231
el18gs 3:9d811414d35e 232 if(_xp > 1200) {
el18gs 3:9d811414d35e 233 new_level = 10;
el18gs 3:9d811414d35e 234 } else if(_xp > 600) {
el18gs 3:9d811414d35e 235 new_level = 9;
el18gs 3:9d811414d35e 236 } else if(_xp > 300) {
el18gs 3:9d811414d35e 237 new_level = 8;
el18gs 3:9d811414d35e 238 } else if(_xp > 150) {
el18gs 3:9d811414d35e 239 new_level = 7;
el18gs 3:9d811414d35e 240 } else if(_xp > 75) {
el18gs 3:9d811414d35e 241 new_level = 6;
el18gs 3:9d811414d35e 242 } else if(_xp > 38) {
el18gs 3:9d811414d35e 243 new_level = 5;
el18gs 3:9d811414d35e 244 } else if(_xp > 19) {
el18gs 3:9d811414d35e 245 new_level = 4;
el18gs 3:9d811414d35e 246 } else if(_xp > 10) {
el18gs 3:9d811414d35e 247 new_level = 3;
el18gs 3:9d811414d35e 248 } else if(_xp > 5) {
el18gs 3:9d811414d35e 249 new_level = 2;
el18gs 3:9d811414d35e 250 } else {
el18gs 3:9d811414d35e 251 new_level = 1;
el18gs 3:9d811414d35e 252 }
el18gs 3:9d811414d35e 253
el18gs 3:9d811414d35e 254 if(new_level > _level) {
el18gs 3:9d811414d35e 255 int difference = new_level - _level;
el18gs 3:9d811414d35e 256 for(int i = 0; i < difference; i++) {
el18gs 3:9d811414d35e 257 _attack++;
el18gs 3:9d811414d35e 258 _defense++;
el18gs 3:9d811414d35e 259 _level++;
el18gs 3:9d811414d35e 260 _hp_max++;
el18gs 3:9d811414d35e 261 _hp = _hp_max;
el18gs 3:9d811414d35e 262 _value = _attack + _defense + _hp_max;
el18gs 3:9d811414d35e 263 }
el18gs 3:9d811414d35e 264 }
el18gs 3:9d811414d35e 265
el18gs 3:9d811414d35e 266 save();
el18gs 3:9d811414d35e 267 }
el18gs 3:9d811414d35e 268
el18gs 3:9d811414d35e 269 void Ghost::print_all(void)
el18gs 3:9d811414d35e 270 {
el18gs 3:9d811414d35e 271 printf("\n Print out for Ghost: %s\n", get_name().c_str());
el18gs 3:9d811414d35e 272 printf("--------------------");
el18gs 3:9d811414d35e 273 printf("\n");
el18gs 3:9d811414d35e 274 printf("Type: %s\n", get_type_string().c_str());
el18gs 3:9d811414d35e 275 printf("Attack: %d\n", get_attack());
el18gs 3:9d811414d35e 276 printf("Defense: %d\n", get_defense());
el18gs 3:9d811414d35e 277 printf("Level: %d\n", get_level());
el18gs 3:9d811414d35e 278 printf("XP: %d\n", get_xp());
el18gs 3:9d811414d35e 279 printf("Value: %d\n", get_value());
el18gs 3:9d811414d35e 280 printf("HP Max: %d\n", get_hp_max());
el18gs 3:9d811414d35e 281 printf("HP: %d\n", get_hp());
el18gs 3:9d811414d35e 282 printf("UID: %d\n", get_uid());
el18gs 3:9d811414d35e 283 }
el18gs 3:9d811414d35e 284
el18gs 3:9d811414d35e 285 Type Ghost::get_type_enum(void)
el18gs 3:9d811414d35e 286 {
el18gs 3:9d811414d35e 287 return _type;
el18gs 3:9d811414d35e 288 }
el18gs 3:9d811414d35e 289
el18gs 3:9d811414d35e 290 std::string Ghost::get_type_string(void)
el18gs 3:9d811414d35e 291 {
el18gs 3:9d811414d35e 292 return type_to_string(_type);
el18gs 3:9d811414d35e 293 }
el18gs 3:9d811414d35e 294
el18gs 3:9d811414d35e 295 std::string Ghost::get_name(void)
el18gs 3:9d811414d35e 296 {
el18gs 3:9d811414d35e 297 return _name;
el18gs 3:9d811414d35e 298 }
el18gs 3:9d811414d35e 299
el18gs 3:9d811414d35e 300 int Ghost::get_attack(void)
el18gs 3:9d811414d35e 301 {
el18gs 3:9d811414d35e 302 return _attack;
el18gs 3:9d811414d35e 303 }
el18gs 3:9d811414d35e 304
el18gs 3:9d811414d35e 305 int Ghost::get_defense(void)
el18gs 3:9d811414d35e 306 {
el18gs 3:9d811414d35e 307 return _defense;
el18gs 3:9d811414d35e 308 }
el18gs 3:9d811414d35e 309
el18gs 3:9d811414d35e 310 int Ghost::get_level(void)
el18gs 3:9d811414d35e 311 {
el18gs 3:9d811414d35e 312 return _level;
el18gs 3:9d811414d35e 313 }
el18gs 3:9d811414d35e 314
el18gs 3:9d811414d35e 315 int Ghost::get_xp(void)
el18gs 3:9d811414d35e 316 {
el18gs 3:9d811414d35e 317 return _xp;
el18gs 3:9d811414d35e 318 }
el18gs 3:9d811414d35e 319
el18gs 3:9d811414d35e 320 int Ghost::get_value(void)
el18gs 3:9d811414d35e 321 {
el18gs 3:9d811414d35e 322 return _value;
el18gs 3:9d811414d35e 323 }
el18gs 3:9d811414d35e 324
el18gs 3:9d811414d35e 325 int Ghost::get_hp_max(void)
el18gs 3:9d811414d35e 326 {
el18gs 3:9d811414d35e 327 return _hp_max;
el18gs 3:9d811414d35e 328 }
el18gs 3:9d811414d35e 329
el18gs 3:9d811414d35e 330 int Ghost::get_hp(void)
el18gs 3:9d811414d35e 331 {
el18gs 3:9d811414d35e 332 return _hp;
el18gs 3:9d811414d35e 333 }
el18gs 3:9d811414d35e 334
el18gs 3:9d811414d35e 335 int Ghost::get_uid(void)
el18gs 3:9d811414d35e 336 {
el18gs 3:9d811414d35e 337 return _uid;
el18gs 3:9d811414d35e 338 }
el18gs 3:9d811414d35e 339
el18gs 3:9d811414d35e 340 int Ghost::gen_uid(void)
el18gs 3:9d811414d35e 341 {
el18gs 3:9d811414d35e 342 // Connections to SD card holder on K64F (SPI interface)
el18gs 3:9d811414d35e 343 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
el18gs 3:9d811414d35e 344 std::string path = "/sd/ghosts";
el18gs 3:9d811414d35e 345 printf("Listing directory: %s\n", path.c_str());
el18gs 3:9d811414d35e 346 DIR *d;
el18gs 3:9d811414d35e 347 struct dirent *p;
el18gs 3:9d811414d35e 348
el18gs 3:9d811414d35e 349 stringvec files;
el18gs 3:9d811414d35e 350
el18gs 3:9d811414d35e 351 d = opendir(path.c_str());
el18gs 3:9d811414d35e 352 if (d != NULL) {
el18gs 3:9d811414d35e 353 while ((p = readdir(d)) != NULL) {
el18gs 3:9d811414d35e 354 files.push_back(p->d_name);
el18gs 3:9d811414d35e 355 }
el18gs 3:9d811414d35e 356 } else {
el18gs 3:9d811414d35e 357 printf("Could not open directory!\n");
el18gs 3:9d811414d35e 358 }
el18gs 3:9d811414d35e 359 closedir(d);
el18gs 3:9d811414d35e 360
el18gs 3:9d811414d35e 361 stringvec correct_files;
el18gs 3:9d811414d35e 362
el18gs 3:9d811414d35e 363 for(int i = 0; i < files.size(); i++) {
el18gs 3:9d811414d35e 364 if(hasEnding(files[i], ".ghost")) {
el18gs 3:9d811414d35e 365 correct_files.push_back(files[i]);
el18gs 3:9d811414d35e 366 }
el18gs 3:9d811414d35e 367 }
el18gs 3:9d811414d35e 368
el18gs 3:9d811414d35e 369 std::vector<int> used_ids;
el18gs 3:9d811414d35e 370
el18gs 3:9d811414d35e 371 for(int i = 0; i < correct_files.size(); i++) {
el18gs 3:9d811414d35e 372 std::string temp = correct_files[i].substr(0, correct_files[i].length() - 6);
el18gs 3:9d811414d35e 373 int x;
el18gs 3:9d811414d35e 374 sscanf(temp.c_str(), "%d", &x);
el18gs 3:9d811414d35e 375 used_ids.push_back(x);
el18gs 3:9d811414d35e 376 }
el18gs 3:9d811414d35e 377 int max = -1;
el18gs 3:9d811414d35e 378 for(int i = 0; i < used_ids.size(); i++) {
el18gs 3:9d811414d35e 379 if(used_ids[i] > max) {
el18gs 3:9d811414d35e 380 max = used_ids[i];
el18gs 3:9d811414d35e 381 }
el18gs 3:9d811414d35e 382 }
el18gs 3:9d811414d35e 383
el18gs 3:9d811414d35e 384 max++;
el18gs 3:9d811414d35e 385 return max;
el18gs 3:9d811414d35e 386
el18gs 3:9d811414d35e 387 }
el18gs 3:9d811414d35e 388
el18gs 3:9d811414d35e 389 bool Ghost::hasEnding (std::string const &fullString, std::string const &ending)
el18gs 3:9d811414d35e 390 {
el18gs 3:9d811414d35e 391 if (fullString.length() >= ending.length()) {
el18gs 3:9d811414d35e 392 return (0 == fullString.compare (fullString.length() - ending.length(), ending.length(), ending));
el18gs 3:9d811414d35e 393 } else {
el18gs 3:9d811414d35e 394 return false;
el18gs 3:9d811414d35e 395 }
el18gs 3:9d811414d35e 396 }
el18gs 3:9d811414d35e 397
el18gs 3:9d811414d35e 398 std::string Ghost::type_to_string(Type type)
el18gs 3:9d811414d35e 399 {
el18gs 3:9d811414d35e 400 if(type == BASIC) {
el18gs 3:9d811414d35e 401 return "BASIC";
el18gs 3:9d811414d35e 402 } else if (type == ECTO) {
el18gs 3:9d811414d35e 403 return "ECTOPLASM";
el18gs 3:9d811414d35e 404 } else if (type == POLTER) {
el18gs 3:9d811414d35e 405 return "POLTERGIEST";
el18gs 3:9d811414d35e 406 } else if (type == ORB) {
el18gs 3:9d811414d35e 407 return "ORB";
el18gs 3:9d811414d35e 408 } else if (type == FUNNEL) {
el18gs 3:9d811414d35e 409 return "FUNNEL";
el18gs 3:9d811414d35e 410 } else {
el18gs 3:9d811414d35e 411 return "NULL";
el18gs 3:9d811414d35e 412 }
el18gs 3:9d811414d35e 413 }
el18gs 3:9d811414d35e 414
el18gs 3:9d811414d35e 415 Type Ghost::string_to_type(std::string type)
el18gs 3:9d811414d35e 416 {
el18gs 3:9d811414d35e 417 if(type == "BASIC") {
el18gs 3:9d811414d35e 418 return BASIC;
el18gs 3:9d811414d35e 419 } else if (type == "ECTOPLASM") {
el18gs 3:9d811414d35e 420 return ECTO;
el18gs 3:9d811414d35e 421 } else if (type == "POLTERGIEST") {
el18gs 3:9d811414d35e 422 return POLTER;
el18gs 3:9d811414d35e 423 } else if (type == "ORB") {
el18gs 3:9d811414d35e 424 return ORB;
el18gs 3:9d811414d35e 425 } else if (type == "FUNNEL") {
el18gs 3:9d811414d35e 426 return FUNNEL;
el18gs 3:9d811414d35e 427 } else {
el18gs 3:9d811414d35e 428 return BASIC;
el18gs 3:9d811414d35e 429 }
el18gs 3:9d811414d35e 430 }
el18gs 3:9d811414d35e 431
el18gs 3:9d811414d35e 432
el18gs 3:9d811414d35e 433 void Ghost::delete_file(const char filename[])
el18gs 3:9d811414d35e 434 {
el18gs 3:9d811414d35e 435 // Connections to SD card holder on K64F (SPI interface)
el18gs 3:9d811414d35e 436 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
el18gs 3:9d811414d35e 437 printf("Deleting file '%s'...\n", filename);
el18gs 3:9d811414d35e 438 FILE *fp = fopen(filename, "r"); // try and open file
el18gs 3:9d811414d35e 439 if (fp != NULL) { // if it does open...
el18gs 3:9d811414d35e 440 fclose(fp); // close it
el18gs 3:9d811414d35e 441 remove(filename); // and then delete
el18gs 3:9d811414d35e 442 printf("Done!\n");
el18gs 3:9d811414d35e 443 } else {
el18gs 3:9d811414d35e 444 printf("could not find file '%s', could not delete \n", filename);
el18gs 3:9d811414d35e 445 }
el18gs 3:9d811414d35e 446 // if we can't open it, it doesn't exist and so we can't delete it
el18gs 3:9d811414d35e 447 }
el18gs 3:9d811414d35e 448
el18gs 3:9d811414d35e 449
el18gs 3:9d811414d35e 450
el18gs 3:9d811414d35e 451