ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18gs

Dependencies:   mbed

Committer:
el18gs
Date:
Fri Mar 06 19:27:12 2020 +0000
Revision:
2:eaf245af2aae
Initial Commit

Who changed what in which revision?

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