Welcome to Stratos!
typedef struct{ int ID; SpriteSet *sset; int health; int score; float startx; float starty; float velocity; int total_waypoints; WayPointData waypoints[N]; int total_shots; ShotData shots[N]; int powerup_id; int bullet_id;}EnemyData;
Enemy(EnemyData *edata):GameEntity(edata->sset,edata->startx,edata->starty),data(edata)
int load_enemy_data(char *path){ char image_path[30]; int col,rx,ry,total; std::ifstream infile(path); ... infile >> image_path; infile >> col >> rx >> ry >> total; ... EnemyDataList[n_ED].sset = new SpriteSet(image_path, col, rx, ry, total); infile.close(); ...}
std::cout << EnemyDataList[0].sset->columns << std::endl;
#include <SDL.h>#include "Entities.h"#include <fstream>#include <list>using std::list;list <EnemyData*> EnemyDataList;list <Enemy> EnemyList;EnemyData* ID2ED(int ID){ list<EnemyData*>::iterator it; it = EnemyDataList.begin(); while((*it)->ID!=ID && it!=EnemyDataList.end()){ //std::cout << it->ID << std::endl; ++it; } if((*it)->ID==ID){ return *it; } else return NULL;}/*int ID2ED(int ID){ int i; for(i=0;i<n_ED;i++){ if(EnemyDataList[i].ID==ID){ return i; } } if(i==n_ED){ return NULL; }}*/void load_enemy_data(char *path){ EnemyData *edata=new EnemyData; char image_path[30]; int col,rx,ry,total; int i; std::ifstream infile(path); if (!infile) { std::cout << "Problema al obrir l'arxiu " << path <<"."<<std::endl; //return 0; } infile >> edata->ID; infile >> image_path; infile >> col >> rx >> ry >> total; infile >> edata->health; infile >> edata->score; infile >> edata->powerup_id; infile >> edata->startx; infile >> edata->starty; infile >> edata->velocity; infile >> edata->total_waypoints; for(i=0;i< edata->total_waypoints;i++){ infile >> edata->waypoints[i].x >> edata->waypoints[i].y; } infile >> edata->total_shots; for(i=0;i< edata->total_shots;i++){ infile >> edata->shots[i].time >> edata->shots[i].dx >> edata->shots[i].dy >> edata->shots[i].lifetime; } infile >> edata->bullet_id; edata->sset = new SpriteSet(image_path, col, rx, ry, total); EnemyDataList.push_back(edata); infile.close(); std::cout << "Enemic amb ID: \"" << edata->ID << "\" carregat."<<std::endl; //return 1;}int main(){ EnemyData *edata; load_enemy_data("DataTest"); edata = ID2ED(3); std::cout << "edata: " << edata->health << std::endl; //Si quito esta linea, no me da error. std::cout << EnemyList.empty()<< std::endl; EnemyDataList.clear(); EnemyList.clear(); return 0;}
edata->sset = new SpriteSet(image_path, col, rx, ry, total);
EnemyData *edata = new edata; edata->xxx = efefe; list<EnemyData*>->push( edata )
list<EnemyData> enemy_data enemy_data.push_back( EnemyData() ); EnemyData& edata = enemy_data.back(); edata.xxx = efefe;