ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18gs

Dependencies:   mbed

Committer:
el18gs
Date:
Tue May 26 12:17:52 2020 +0000
Revision:
16:3b298bea3a70
Parent:
8:4220d116f17c
Added ghost feed mechanism

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 8:4220d116f17c 7 Ghost::Ghost(const std::string path, const std::string root, SDFileSystem &sd)
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 16:3b298bea3a70 18 _root = "/sd/ghosts/";
el18gs 3:9d811414d35e 19
el18gs 3:9d811414d35e 20 // Connections to SD card holder on K64F (SPI interface)
el18gs 8:4220d116f17c 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 8:4220d116f17c 32 listdir(path, sd);
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 8:4220d116f17c 68 Ghost::Ghost(int num, int nameNumber, const std::string root, SDFileSystem &sd)
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 16:3b298bea3a70 79 _root = "/sd/ghosts/";
el18gs 8:4220d116f17c 80 _uid = gen_uid(sd);
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 8:4220d116f17c 144 void Ghost::listdir(std::string path, SDFileSystem &sd)
el18gs 3:9d811414d35e 145 {
el18gs 3:9d811414d35e 146 printf("Listing directory: %s\n", path.c_str());
el18gs 3:9d811414d35e 147 DIR *d;
el18gs 3:9d811414d35e 148 struct dirent *p;
el18gs 3:9d811414d35e 149
el18gs 3:9d811414d35e 150 d = opendir(path.c_str());
el18gs 3:9d811414d35e 151 if (d != NULL) {
el18gs 3:9d811414d35e 152 while ((p = readdir(d)) != NULL) {
el18gs 3:9d811414d35e 153 printf(" - %s\n", p->d_name);
el18gs 3:9d811414d35e 154 }
el18gs 3:9d811414d35e 155 } else {
el18gs 3:9d811414d35e 156 printf("Could not open directory!\n");
el18gs 3:9d811414d35e 157 }
el18gs 3:9d811414d35e 158 closedir(d);
el18gs 3:9d811414d35e 159 }
el18gs 3:9d811414d35e 160
el18gs 8:4220d116f17c 161 void Ghost::save(SDFileSystem &sd)
el18gs 3:9d811414d35e 162 {
el18gs 3:9d811414d35e 163 FILE *fp; // this is our file pointer
el18gs 3:9d811414d35e 164
el18gs 16:3b298bea3a70 165 std::string filepath = "";
el18gs 16:3b298bea3a70 166 printf("%s\n", _root.c_str());
el18gs 3:9d811414d35e 167 filepath.append(_root);
el18gs 3:9d811414d35e 168
el18gs 3:9d811414d35e 169 char buf[10];
el18gs 3:9d811414d35e 170 sprintf(buf, "%d", _uid);
el18gs 3:9d811414d35e 171
el18gs 3:9d811414d35e 172 filepath.append(buf);
el18gs 3:9d811414d35e 173 filepath.append(_suffix);
el18gs 3:9d811414d35e 174
el18gs 3:9d811414d35e 175 fp = fopen(filepath.c_str(), "w");
el18gs 3:9d811414d35e 176
el18gs 3:9d811414d35e 177 if (fp == NULL) { // if it can't open the file then print error message
el18gs 3:9d811414d35e 178 printf("Error! Unable to open file!\n");
el18gs 16:3b298bea3a70 179 printf(filepath.c_str());
el18gs 16:3b298bea3a70 180 printf("\n");
el18gs 3:9d811414d35e 181 } else { // opened file so can write
el18gs 3:9d811414d35e 182 fprintf(fp, "/Type\n");
el18gs 3:9d811414d35e 183 fprintf(fp, "%s\n", get_type_string().c_str());
el18gs 3:9d811414d35e 184 fprintf(fp, "/Name\n");
el18gs 3:9d811414d35e 185 fprintf(fp, "%s\n", get_name().c_str());
el18gs 3:9d811414d35e 186 fprintf(fp, "/Attack\n");
el18gs 3:9d811414d35e 187 fprintf(fp, "%d\n", get_attack());
el18gs 3:9d811414d35e 188 fprintf(fp, "/Defense\n");
el18gs 3:9d811414d35e 189 fprintf(fp, "%d\n", get_defense());
el18gs 3:9d811414d35e 190 fprintf(fp, "/Level\n");
el18gs 3:9d811414d35e 191 fprintf(fp, "%d\n", get_level());
el18gs 3:9d811414d35e 192 fprintf(fp, "/XP\n");
el18gs 3:9d811414d35e 193 fprintf(fp, "%d\n", get_xp());
el18gs 3:9d811414d35e 194 fprintf(fp, "/Value\n");
el18gs 3:9d811414d35e 195 fprintf(fp, "%d\n", get_value());
el18gs 3:9d811414d35e 196 fprintf(fp, "/HP_Max\n");
el18gs 3:9d811414d35e 197 fprintf(fp, "%d\n", get_hp_max());
el18gs 3:9d811414d35e 198 fprintf(fp, "/HP\n");
el18gs 3:9d811414d35e 199 fprintf(fp, "%d\n", get_hp());
el18gs 3:9d811414d35e 200 fprintf(fp, "/UID\n");
el18gs 3:9d811414d35e 201 fprintf(fp, "%d\n", get_uid());
el18gs 3:9d811414d35e 202 fclose(fp); // ensure you close the file after writing
el18gs 3:9d811414d35e 203 }
el18gs 3:9d811414d35e 204 }
el18gs 3:9d811414d35e 205
el18gs 8:4220d116f17c 206 int Ghost::sell(SDFileSystem &sd)
el18gs 3:9d811414d35e 207 {
el18gs 3:9d811414d35e 208
el18gs 3:9d811414d35e 209 std::string filepath = "";
el18gs 3:9d811414d35e 210
el18gs 3:9d811414d35e 211 filepath.append(_root);
el18gs 3:9d811414d35e 212
el18gs 3:9d811414d35e 213 char buf[10];
el18gs 3:9d811414d35e 214 sprintf(buf, "%d", _uid);
el18gs 3:9d811414d35e 215
el18gs 3:9d811414d35e 216 filepath.append(buf);
el18gs 3:9d811414d35e 217 filepath.append(_suffix);
el18gs 3:9d811414d35e 218
el18gs 8:4220d116f17c 219 delete_file(filepath.c_str(), sd);
el18gs 3:9d811414d35e 220
el18gs 3:9d811414d35e 221 return _value;
el18gs 3:9d811414d35e 222 };
el18gs 3:9d811414d35e 223
el18gs 8:4220d116f17c 224 void Ghost::feed(int ammount, SDFileSystem &sd)
el18gs 3:9d811414d35e 225 {
el18gs 16:3b298bea3a70 226 printf("feeding ghost\n");
el18gs 3:9d811414d35e 227 _xp = _xp + ammount;
el18gs 3:9d811414d35e 228
el18gs 3:9d811414d35e 229 int new_level = 0;
el18gs 3:9d811414d35e 230
el18gs 3:9d811414d35e 231 if(_xp > 1200) {
el18gs 3:9d811414d35e 232 new_level = 10;
el18gs 3:9d811414d35e 233 } else if(_xp > 600) {
el18gs 3:9d811414d35e 234 new_level = 9;
el18gs 3:9d811414d35e 235 } else if(_xp > 300) {
el18gs 3:9d811414d35e 236 new_level = 8;
el18gs 3:9d811414d35e 237 } else if(_xp > 150) {
el18gs 3:9d811414d35e 238 new_level = 7;
el18gs 3:9d811414d35e 239 } else if(_xp > 75) {
el18gs 3:9d811414d35e 240 new_level = 6;
el18gs 3:9d811414d35e 241 } else if(_xp > 38) {
el18gs 3:9d811414d35e 242 new_level = 5;
el18gs 3:9d811414d35e 243 } else if(_xp > 19) {
el18gs 3:9d811414d35e 244 new_level = 4;
el18gs 3:9d811414d35e 245 } else if(_xp > 10) {
el18gs 3:9d811414d35e 246 new_level = 3;
el18gs 3:9d811414d35e 247 } else if(_xp > 5) {
el18gs 3:9d811414d35e 248 new_level = 2;
el18gs 3:9d811414d35e 249 } else {
el18gs 3:9d811414d35e 250 new_level = 1;
el18gs 3:9d811414d35e 251 }
el18gs 3:9d811414d35e 252
el18gs 3:9d811414d35e 253 if(new_level > _level) {
el18gs 3:9d811414d35e 254 int difference = new_level - _level;
el18gs 3:9d811414d35e 255 for(int i = 0; i < difference; i++) {
el18gs 3:9d811414d35e 256 _attack++;
el18gs 3:9d811414d35e 257 _defense++;
el18gs 3:9d811414d35e 258 _level++;
el18gs 3:9d811414d35e 259 _hp_max++;
el18gs 3:9d811414d35e 260 _hp = _hp_max;
el18gs 3:9d811414d35e 261 _value = _attack + _defense + _hp_max;
el18gs 3:9d811414d35e 262 }
el18gs 3:9d811414d35e 263 }
el18gs 3:9d811414d35e 264
el18gs 16:3b298bea3a70 265 _level = new_level;
el18gs 16:3b298bea3a70 266
el18gs 8:4220d116f17c 267 save(sd);
el18gs 3:9d811414d35e 268 }
el18gs 3:9d811414d35e 269
el18gs 3:9d811414d35e 270 void Ghost::print_all(void)
el18gs 3:9d811414d35e 271 {
el18gs 3:9d811414d35e 272 printf("\n Print out for Ghost: %s\n", get_name().c_str());
el18gs 3:9d811414d35e 273 printf("--------------------");
el18gs 3:9d811414d35e 274 printf("\n");
el18gs 3:9d811414d35e 275 printf("Type: %s\n", get_type_string().c_str());
el18gs 3:9d811414d35e 276 printf("Attack: %d\n", get_attack());
el18gs 3:9d811414d35e 277 printf("Defense: %d\n", get_defense());
el18gs 3:9d811414d35e 278 printf("Level: %d\n", get_level());
el18gs 3:9d811414d35e 279 printf("XP: %d\n", get_xp());
el18gs 3:9d811414d35e 280 printf("Value: %d\n", get_value());
el18gs 3:9d811414d35e 281 printf("HP Max: %d\n", get_hp_max());
el18gs 3:9d811414d35e 282 printf("HP: %d\n", get_hp());
el18gs 3:9d811414d35e 283 printf("UID: %d\n", get_uid());
el18gs 3:9d811414d35e 284 }
el18gs 3:9d811414d35e 285
el18gs 3:9d811414d35e 286 Type Ghost::get_type_enum(void)
el18gs 3:9d811414d35e 287 {
el18gs 3:9d811414d35e 288 return _type;
el18gs 3:9d811414d35e 289 }
el18gs 3:9d811414d35e 290
el18gs 3:9d811414d35e 291 std::string Ghost::get_type_string(void)
el18gs 3:9d811414d35e 292 {
el18gs 3:9d811414d35e 293 return type_to_string(_type);
el18gs 3:9d811414d35e 294 }
el18gs 3:9d811414d35e 295
el18gs 3:9d811414d35e 296 std::string Ghost::get_name(void)
el18gs 3:9d811414d35e 297 {
el18gs 3:9d811414d35e 298 return _name;
el18gs 3:9d811414d35e 299 }
el18gs 3:9d811414d35e 300
el18gs 3:9d811414d35e 301 int Ghost::get_attack(void)
el18gs 3:9d811414d35e 302 {
el18gs 3:9d811414d35e 303 return _attack;
el18gs 3:9d811414d35e 304 }
el18gs 3:9d811414d35e 305
el18gs 3:9d811414d35e 306 int Ghost::get_defense(void)
el18gs 3:9d811414d35e 307 {
el18gs 3:9d811414d35e 308 return _defense;
el18gs 3:9d811414d35e 309 }
el18gs 3:9d811414d35e 310
el18gs 3:9d811414d35e 311 int Ghost::get_level(void)
el18gs 3:9d811414d35e 312 {
el18gs 3:9d811414d35e 313 return _level;
el18gs 3:9d811414d35e 314 }
el18gs 3:9d811414d35e 315
el18gs 3:9d811414d35e 316 int Ghost::get_xp(void)
el18gs 3:9d811414d35e 317 {
el18gs 3:9d811414d35e 318 return _xp;
el18gs 3:9d811414d35e 319 }
el18gs 3:9d811414d35e 320
el18gs 3:9d811414d35e 321 int Ghost::get_value(void)
el18gs 3:9d811414d35e 322 {
el18gs 3:9d811414d35e 323 return _value;
el18gs 3:9d811414d35e 324 }
el18gs 3:9d811414d35e 325
el18gs 3:9d811414d35e 326 int Ghost::get_hp_max(void)
el18gs 3:9d811414d35e 327 {
el18gs 3:9d811414d35e 328 return _hp_max;
el18gs 3:9d811414d35e 329 }
el18gs 3:9d811414d35e 330
el18gs 3:9d811414d35e 331 int Ghost::get_hp(void)
el18gs 3:9d811414d35e 332 {
el18gs 3:9d811414d35e 333 return _hp;
el18gs 3:9d811414d35e 334 }
el18gs 3:9d811414d35e 335
el18gs 3:9d811414d35e 336 int Ghost::get_uid(void)
el18gs 3:9d811414d35e 337 {
el18gs 3:9d811414d35e 338 return _uid;
el18gs 3:9d811414d35e 339 }
el18gs 3:9d811414d35e 340
el18gs 8:4220d116f17c 341 int Ghost::gen_uid(SDFileSystem &sd)
el18gs 3:9d811414d35e 342 {
el18gs 3:9d811414d35e 343 std::string path = "/sd/ghosts";
el18gs 3:9d811414d35e 344 printf("Listing directory: %s\n", path.c_str());
el18gs 3:9d811414d35e 345 DIR *d;
el18gs 3:9d811414d35e 346 struct dirent *p;
el18gs 3:9d811414d35e 347
el18gs 3:9d811414d35e 348 stringvec files;
el18gs 3:9d811414d35e 349
el18gs 3:9d811414d35e 350 d = opendir(path.c_str());
el18gs 3:9d811414d35e 351 if (d != NULL) {
el18gs 3:9d811414d35e 352 while ((p = readdir(d)) != NULL) {
el18gs 3:9d811414d35e 353 files.push_back(p->d_name);
el18gs 3:9d811414d35e 354 }
el18gs 3:9d811414d35e 355 } else {
el18gs 3:9d811414d35e 356 printf("Could not open directory!\n");
el18gs 3:9d811414d35e 357 }
el18gs 3:9d811414d35e 358 closedir(d);
el18gs 3:9d811414d35e 359
el18gs 3:9d811414d35e 360 stringvec correct_files;
el18gs 3:9d811414d35e 361
el18gs 3:9d811414d35e 362 for(int i = 0; i < files.size(); i++) {
el18gs 3:9d811414d35e 363 if(hasEnding(files[i], ".ghost")) {
el18gs 3:9d811414d35e 364 correct_files.push_back(files[i]);
el18gs 3:9d811414d35e 365 }
el18gs 3:9d811414d35e 366 }
el18gs 3:9d811414d35e 367
el18gs 3:9d811414d35e 368 std::vector<int> used_ids;
el18gs 3:9d811414d35e 369
el18gs 3:9d811414d35e 370 for(int i = 0; i < correct_files.size(); i++) {
el18gs 3:9d811414d35e 371 std::string temp = correct_files[i].substr(0, correct_files[i].length() - 6);
el18gs 3:9d811414d35e 372 int x;
el18gs 3:9d811414d35e 373 sscanf(temp.c_str(), "%d", &x);
el18gs 3:9d811414d35e 374 used_ids.push_back(x);
el18gs 3:9d811414d35e 375 }
el18gs 3:9d811414d35e 376 int max = -1;
el18gs 3:9d811414d35e 377 for(int i = 0; i < used_ids.size(); i++) {
el18gs 3:9d811414d35e 378 if(used_ids[i] > max) {
el18gs 3:9d811414d35e 379 max = used_ids[i];
el18gs 3:9d811414d35e 380 }
el18gs 3:9d811414d35e 381 }
el18gs 3:9d811414d35e 382
el18gs 3:9d811414d35e 383 max++;
el18gs 3:9d811414d35e 384 return max;
el18gs 3:9d811414d35e 385
el18gs 3:9d811414d35e 386 }
el18gs 3:9d811414d35e 387
el18gs 3:9d811414d35e 388 bool Ghost::hasEnding (std::string const &fullString, std::string const &ending)
el18gs 3:9d811414d35e 389 {
el18gs 3:9d811414d35e 390 if (fullString.length() >= ending.length()) {
el18gs 3:9d811414d35e 391 return (0 == fullString.compare (fullString.length() - ending.length(), ending.length(), ending));
el18gs 3:9d811414d35e 392 } else {
el18gs 3:9d811414d35e 393 return false;
el18gs 3:9d811414d35e 394 }
el18gs 3:9d811414d35e 395 }
el18gs 3:9d811414d35e 396
el18gs 3:9d811414d35e 397 std::string Ghost::type_to_string(Type type)
el18gs 3:9d811414d35e 398 {
el18gs 3:9d811414d35e 399 if(type == BASIC) {
el18gs 3:9d811414d35e 400 return "BASIC";
el18gs 3:9d811414d35e 401 } else if (type == ECTO) {
el18gs 3:9d811414d35e 402 return "ECTOPLASM";
el18gs 3:9d811414d35e 403 } else if (type == POLTER) {
el18gs 3:9d811414d35e 404 return "POLTERGIEST";
el18gs 3:9d811414d35e 405 } else if (type == ORB) {
el18gs 3:9d811414d35e 406 return "ORB";
el18gs 3:9d811414d35e 407 } else if (type == FUNNEL) {
el18gs 3:9d811414d35e 408 return "FUNNEL";
el18gs 3:9d811414d35e 409 } else {
el18gs 3:9d811414d35e 410 return "NULL";
el18gs 3:9d811414d35e 411 }
el18gs 3:9d811414d35e 412 }
el18gs 3:9d811414d35e 413
el18gs 3:9d811414d35e 414 Type Ghost::string_to_type(std::string type)
el18gs 3:9d811414d35e 415 {
el18gs 3:9d811414d35e 416 if(type == "BASIC") {
el18gs 3:9d811414d35e 417 return BASIC;
el18gs 3:9d811414d35e 418 } else if (type == "ECTOPLASM") {
el18gs 3:9d811414d35e 419 return ECTO;
el18gs 3:9d811414d35e 420 } else if (type == "POLTERGIEST") {
el18gs 3:9d811414d35e 421 return POLTER;
el18gs 3:9d811414d35e 422 } else if (type == "ORB") {
el18gs 3:9d811414d35e 423 return ORB;
el18gs 3:9d811414d35e 424 } else if (type == "FUNNEL") {
el18gs 3:9d811414d35e 425 return FUNNEL;
el18gs 3:9d811414d35e 426 } else {
el18gs 3:9d811414d35e 427 return BASIC;
el18gs 3:9d811414d35e 428 }
el18gs 3:9d811414d35e 429 }
el18gs 3:9d811414d35e 430
el18gs 3:9d811414d35e 431
el18gs 8:4220d116f17c 432 void Ghost::delete_file(const char filename[], SDFileSystem &sd)
el18gs 3:9d811414d35e 433 {
el18gs 3:9d811414d35e 434 printf("Deleting file '%s'...\n", filename);
el18gs 3:9d811414d35e 435 FILE *fp = fopen(filename, "r"); // try and open file
el18gs 3:9d811414d35e 436 if (fp != NULL) { // if it does open...
el18gs 3:9d811414d35e 437 fclose(fp); // close it
el18gs 3:9d811414d35e 438 remove(filename); // and then delete
el18gs 3:9d811414d35e 439 printf("Done!\n");
el18gs 3:9d811414d35e 440 } else {
el18gs 3:9d811414d35e 441 printf("could not find file '%s', could not delete \n", filename);
el18gs 3:9d811414d35e 442 }
el18gs 3:9d811414d35e 443 // if we can't open it, it doesn't exist and so we can't delete it
el18gs 3:9d811414d35e 444 }
el18gs 3:9d811414d35e 445
el18gs 3:9d811414d35e 446
el18gs 3:9d811414d35e 447
el18gs 3:9d811414d35e 448