diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Quest.cpp | 8 | ||||
-rw-r--r-- | src/Texture.cpp | 12 | ||||
-rw-r--r-- | src/common.cpp | 26 | ||||
-rw-r--r-- | src/entities.cpp | 30 | ||||
-rw-r--r-- | src/gameplay.cpp | 24 | ||||
-rw-r--r-- | src/inventory.cpp | 30 | ||||
-rw-r--r-- | src/ui.cpp | 30 | ||||
-rw-r--r-- | src/world.cpp | 52 |
8 files changed, 82 insertions, 130 deletions
diff --git a/src/Quest.cpp b/src/Quest.cpp index 6789a05..bfa8966 100644 --- a/src/Quest.cpp +++ b/src/Quest.cpp @@ -16,16 +16,16 @@ const Quest QuestList[TOTAL_QUESTS]={ Quest::Quest(const char *t,const char *d,struct item_t r){
- title=(char *)calloc(safe_strlen(t),sizeof(char));
- desc=(char *)calloc(safe_strlen(d),sizeof(char));
+ title = new char[strlen(t)+1]; //(char *)calloc(safe_strlen(t),sizeof(char));
+ desc = new char[strlen(d)+1]; //(char *)calloc(safe_strlen(d),sizeof(char));
strcpy(title,t);
strcpy(desc,d);
memcpy(&reward,&r,sizeof(struct item_t));
}
Quest::~Quest(){
- free(title);
- free(desc);
+ delete[] title; //free(title);
+ delete[] desc; //free(desc);
memset(&reward,0,sizeof(struct item_t));
}
diff --git a/src/Texture.cpp b/src/Texture.cpp index 82baa71..8b40513 100644 --- a/src/Texture.cpp +++ b/src/Texture.cpp @@ -53,8 +53,8 @@ namespace Texture{ SDL_FreeSurface(image); // Free the surface - LoadedTexture[LoadedTextureCounter] = (struct texture_t *)malloc(sizeof(struct texture_t)); - LoadedTexture[LoadedTextureCounter]->name = (char *)malloc(safe_strlen(fileName)); + LoadedTexture[LoadedTextureCounter] = new struct texture_t; //(struct texture_t *)malloc(sizeof(struct texture_t)); + LoadedTexture[LoadedTextureCounter]->name = new char[strlen(fileName)+1]; //(char *)malloc(safe_strlen(fileName)); LoadedTexture[LoadedTextureCounter]->tex = object; strcpy(LoadedTexture[LoadedTextureCounter]->name,fileName); LoadedTextureCounter++; @@ -64,17 +64,17 @@ namespace Texture{ } Texturec::Texturec(uint amt, ...){ - image = new GLuint(amt); + texState = 0; + image = new GLuint[amt]; va_list fNames; va_start(fNames, amt); for(int i = 0; i < amt; i++){ - char* f = va_arg(fNames, char*); - image[i] = Texture::loadTexture(f); + image[i] = Texture::loadTexture(va_arg(fNames, char *)); } va_end(fNames); } -void Texturec::bind(int bn){ +void Texturec::bind(unsigned int bn){ texState = bn; glBindTexture(GL_TEXTURE_2D, image[texState]); } diff --git a/src/common.cpp b/src/common.cpp index f3c3999..a8a964e 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -32,29 +32,3 @@ void safeSetColorA(int r,int g,int b,int a){ if(a<0)a=0; glColor4ub(r,g,b,a); } - -//only trust the NSA -#define STRLEN_MIN 32 - -unsigned int safe_strlen(const char *s){ - unsigned int size=0; - while(s[size])size++; - if(size<STRLEN_MIN)return STRLEN_MIN; - else return size; -} - -void DrawCircle(float cx, float cy, float r, int num_segments) -{ - glBegin(GL_LINE_LOOP); - for(int ii = 0; ii < num_segments; ii++) - { - float theta = 2.0f * 3.1415926f * float(ii) / float(num_segments);//get the current angle - - float x = r * cosf(theta);//calculate the x component - float y = r * sinf(theta);//calculate the y component - - glVertex2f(x + cx, y + cy);//output vertex - - } - glEnd(); -}
\ No newline at end of file diff --git a/src/entities.cpp b/src/entities.cpp index 97b4d35..4e582c9 100644 --- a/src/entities.cpp +++ b/src/entities.cpp @@ -33,7 +33,7 @@ void Entity::spawn(float x, float y){ //spawns the entity you pass to it based o } } - name = (char*)malloc(16); + name = new char[16]; //(char*)malloc(16); getName(); } @@ -100,21 +100,13 @@ Mob::Mob(int sub){ inv = new Inventory(NPC_INV_SIZE); } -Object::Object(int id):identifier(id){ - type = OBJECTT; - alive = true; - near = false; - width = HLINE * 8; - height = HLINE * 8; - - maxHealth = health = 1; - //tex = new Texturec(1, item[id].textureLoc); - - questObject = false; - pickupDialog="\0"; -} - -Object::Object(int id, bool qo, char *pd):identifier(id),questObject(qo),pickupDialog(pd){ +Object::Object(ITEM_ID id, bool qo, const char *pd){ + identifier = id; + questObject = qo; + + pickupDialog = new char[strlen(pd)+1]; + strcpy(pickupDialog,pd); + type = OBJECTT; alive = true; near = false; @@ -122,7 +114,7 @@ Object::Object(int id, bool qo, char *pd):identifier(id),questObject(qo),pickupD height = HLINE * 8; maxHealth = health = 1; - //tex = new Texturec(1, item[id].textureLoc); + tex = new Texturec(1,getItemTexturePath(id)); } @@ -218,7 +210,7 @@ NOPE: void Entity::getName(){ rewind(names); - char buf,*bufs = (char *)malloc(16); + char buf,*bufs = new char[16]; //(char *)malloc(16); int tempNum,max = 0; for(;!feof(names);max++){ fgets(bufs,16,(FILE*)names); @@ -245,7 +237,7 @@ void Entity::getName(){ bufs[strlen(bufs)-1] = '\0'; strcpy(name,bufs); } - free(bufs); + delete[] bufs; //free(bufs); } void Player::interact(){ //the function that will cause the player to search for things to interact with diff --git a/src/gameplay.cpp b/src/gameplay.cpp index 6e85b6d..2fd7424 100644 --- a/src/gameplay.cpp +++ b/src/gameplay.cpp @@ -97,28 +97,12 @@ void initEverything(void){ /* * World creation: */ + World *test=new World(); World *playerSpawnHill=new World(); - /* - * Load the saved world if it exists, otherwise generate a new one. - */ - - /*FILE *worldLoad; - if((worldLoad=fopen("world.dat","r"))){ - std::cout<<"Yes"<<std::endl; - char *buf; - unsigned int size; - fseek(worldLoad,0,SEEK_END); - size=ftell(worldLoad); - rewind(worldLoad); - buf=(char *)malloc(size); - fread(buf,1,size,worldLoad); - test->load(buf); - }else{*/ - test->generate(SCREEN_WIDTH*2); - test->addHole(100,150); - //} + test->generate(SCREEN_WIDTH*2); + test->addHole(100,150); test->setBackground(BG_FOREST); test->addLayer(400); @@ -160,7 +144,7 @@ void initEverything(void){ test->addMob(MS_RABBIT,200,100); test->addMob(MS_BIRD,-500,500); - currentWorld->addObject(SWORD_WOOD, false, NULL, 500,200); + currentWorld->addObject(SWORD_WOOD, false, "", 500,200); currentWorld->addObject(FLASHLIGHT, true, "This looks important, do you want to pick it up?",600,200); /*currentWorld->addObject(DEBUG_ITEM, 500,200); diff --git a/src/inventory.cpp b/src/inventory.cpp index 45d5bce..cd01c11 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -13,15 +13,38 @@ static Item item[5]= { void itemDraw(Player *p,ITEM_ID id); +char *getItemTexturePath(ITEM_ID id){ + return item[id].textureLoc; +} + +Item::Item(ITEM_ID i, const char *n, ITEM_TYPE t, float w, float h, int m, const char *tl){ + id = i; + type = t; + width = w; + height = h; + maxStackSize = m; + count = 0; + + name = new char[strlen(n)+1]; //(char*)calloc(strlen(n ),sizeof(char)); + textureLoc = new char[strlen(tl)+1]; //(char*)calloc(strlen(tl),sizeof(char)); + + strcpy(name,n); + strcpy(textureLoc,tl); + + tex= new Texturec(1,textureLoc); +} + Inventory::Inventory(unsigned int s){ sel=0; size=s; - inv=(struct item_t *)calloc(size,sizeof(struct item_t)); + inv = new struct item_t[size]; //(struct item_t *)calloc(size,sizeof(struct item_t)); + memset(inv,0,size*sizeof(struct item_t)); tossd=false; } Inventory::~Inventory(void){ - free(item); + delete[] inv; + //free(item); } void Inventory::setSelection(unsigned int s){ @@ -64,8 +87,6 @@ void Inventory::draw(void){ ui::putText(offset.x-SCREEN_WIDTH/2,480,"%d",sel); unsigned int i=0; float y,xoff; - - static int numSlot = 7; static std::vector<int>dfp(numSlot); static std::vector<Ray>iray(numSlot); @@ -158,6 +179,7 @@ void Inventory::draw(void){ i++; } }*/ + if(inv[sel].count)itemDraw(player,inv[sel].id); } @@ -132,7 +132,7 @@ namespace ui { * Pre-render 'all' the characters. */ - glDeleteTextures(93,ftex); // Delete any already-rendered textures + glDeleteTextures(93,ftex); // delete[] any already-rendered textures glGenTextures(93,ftex); // Generate new texture name/locations? for(i=33;i<126;i++){ @@ -163,7 +163,7 @@ namespace ui { * making it white-on-black. */ - buf=(char *)malloc(ftf->glyph->bitmap.width*ftf->glyph->bitmap.rows*4); + buf = new char[ftf->glyph->bitmap.width * ftf->glyph->bitmap.rows * 4]; //(char *)malloc(ftf->glyph->bitmap.width*ftf->glyph->bitmap.rows*4); for(j=0;j<ftf->glyph->bitmap.width*ftf->glyph->bitmap.rows;j++){ buf[j*4 ]=fontColor[0]; @@ -181,7 +181,7 @@ namespace ui { glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,ftf->glyph->bitmap.width,ftf->glyph->bitmap.rows,0,GL_RGBA,GL_UNSIGNED_BYTE,buf); - free(buf); + delete[] buf; //free(buf); } } @@ -302,7 +302,10 @@ namespace ui { * Create a well-sized buffer if we haven't yet. */ - if(!ret) ret=(char *)calloc(512,sizeof(char)); + if(!ret){ + ret = new char[512]; //(char *)calloc(512,sizeof(char)); + memset(ret,0,512*sizeof(char)); + } /* * Reset values if a new string is being passed. @@ -343,7 +346,8 @@ namespace ui { * Create a wimpy buffer. */ - buf=(char *)calloc(128,sizeof(char)); + buf = new char[128]; //(char *)calloc(128,sizeof(char)); + memset(buf,0,128*sizeof(char)); /* * Handle the formatted string, printing it to the buffer. @@ -358,7 +362,7 @@ namespace ui { */ width=putString(x,y,buf); - free(buf); + delete[] buf; //free(buf); return width; } @@ -372,7 +376,7 @@ namespace ui { * Set up the text buffer. */ - if(!dialogBoxText) dialogBoxText=(char *)malloc(512); + if(!dialogBoxText) dialogBoxText = new char[512]; //(char *)malloc(512); memset(dialogBoxText,0,512); /* @@ -394,7 +398,7 @@ namespace ui { while(dialogOptCount){ if(dialogOptText[dialogOptCount]) - free(dialogOptText[dialogOptCount]); + delete[] dialogOptText[dialogOptCount]; //free(dialogOptText[dialogOptCount]); dialogOptCount--; }; dialogOptChosen=0; @@ -402,7 +406,7 @@ namespace ui { sopt=strtok(opt,":"); while(sopt != NULL){ - dialogOptText[dialogOptCount]=(char *)malloc(strlen(sopt)); + dialogOptText[dialogOptCount] = new char[strlen(sopt)+1]; //(char *)malloc(strlen(sopt)); strcpy(dialogOptText[dialogOptCount++],sopt); sopt=strtok(NULL,":"); } @@ -416,19 +420,19 @@ namespace ui { } void importantText(const char *text,...){ va_list textArgs; - char *ttext; + char *ttext,*rtext; if(!player->ground)return; va_start(textArgs,text); - ttext=(char *)calloc(512,sizeof(char)); + ttext = new char[512]; //(char *)calloc(512,sizeof(char)); + memset(ttext,0,512*sizeof(char)); vsnprintf(ttext,512,text,textArgs); va_end(textArgs); setFontSize(24); - char *rtext; rtext=typeOut(ttext); putString(offset.x-SCREEN_WIDTH/2, offset.y+fontSize, rtext); - free(ttext); + delete[] ttext; //free(ttext); } void draw(void){ unsigned char i; diff --git a/src/world.cpp b/src/world.cpp index 6f31d6d..c977c7f 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -43,34 +43,6 @@ float worldGetYBase(World *w){ return /*base*/ GEN_MIN; } -struct wSavePack { - int x_start; - unsigned int lineCount; -} __attribute__ ((packed)); - -char *World::save(unsigned int *ssize){ - struct wSavePack *sp; - unsigned int size; - char *buf; - size=sizeof(struct wSavePack) + lineCount * sizeof(struct line_t); - buf=(char *)malloc(size); - sp=(struct wSavePack *)buf; - sp->x_start=x_start; - sp->lineCount=lineCount; - memcpy(buf+sizeof(struct wSavePack),line,lineCount * sizeof(struct line_t)); - *ssize=size; - return buf; -} - -void World::load(char *buf){ - struct wSavePack *sp; - sp=(struct wSavePack *)buf; - x_start=sp->x_start; - lineCount=sp->lineCount; - line=(struct line_t *)calloc(lineCount,sizeof(struct line_t)); - memcpy(line,buf+sizeof(struct wSavePack),lineCount * sizeof(struct line_t)); -} - void World::setBackground(WORLD_BG_TYPE bgt){ switch(bgt){ default: @@ -95,7 +67,8 @@ World::World(void){ toLeft = toRight = NULL; - star = (vec2 *)calloc(100,sizeof(vec2)); + star = new vec2[100]; //(vec2 *)calloc(100,sizeof(vec2)); + memset(star,0,100*sizeof(vec2)); } void World::generate(unsigned int width){ // Generates the world and sets all variables contained in the World class. @@ -118,7 +91,8 @@ void World::generate(unsigned int width){ // Generates the world and sets all va * Allocate enough memory for the world to be stored. */ - line=(struct line_t *)calloc(lineCount,sizeof(struct line_t)); + line = new struct line_t[lineCount]; //(struct line_t *)calloc(lineCount,sizeof(struct line_t)); + memset(line,0,lineCount*sizeof(struct line_t)); /* * Set an initial y to base generation off of, as generation references previous lines. @@ -203,7 +177,8 @@ void World::generateFunc(unsigned int width,float(*func)(float)){ unsigned int i; if((lineCount = width) <= 0) abort(); - line=(struct line_t *)calloc(lineCount,sizeof(struct line_t)); + line = new struct line_t[lineCount]; //(struct line_t *)calloc(lineCount,sizeof(struct line_t)); + memset(line,0,lineCount*sizeof(struct line_t)); for(i=0;i<lineCount;i++){ line[i].y=func(i); if(line[i].y<0)line[i].y=0; @@ -222,19 +197,19 @@ void World::generateFunc(unsigned int width,float(*func)(float)){ } World::~World(void){ - free(line); + delete[] line; } void World::update(Player *p,unsigned int delta){ p->loc.y+= p->vel.y *delta; p->loc.x+=(p->vel.x*p->speed)*delta; - + for(auto &e : entity){ if(e->type != STRUCTURET) e->loc.x += e->vel.x * delta; e->loc.y += e->vel.y * delta; if(e->vel.x < 0)e->left = true; - else if(e->vel.x > 0)e->left = false; + else if(e->vel.x > 0)e->left = false; } } @@ -760,7 +735,7 @@ void World::addNPC(float x,float y){ entity.push_back(npc.back()); } -void World::addObject(int i, bool q, char *p, float x, float y){ +void World::addObject(ITEM_ID i, bool q, const char *p, float x, float y){ object.push_back(new Object(i,q, p)); object.back()->spawn(x,y); @@ -768,7 +743,7 @@ void World::addObject(int i, bool q, char *p, float x, float y){ } /*void World::removeObject(Object i){ - object.delete(i); + object.delete[](i); }*/ /* @@ -861,7 +836,7 @@ IndoorWorld::IndoorWorld(void){ } IndoorWorld::~IndoorWorld(void){ - free(line); + delete[] line; //free(line); } void IndoorWorld::generate(unsigned int width){ // Generates a flat area of width 'width' @@ -869,7 +844,8 @@ void IndoorWorld::generate(unsigned int width){ // Generates a flat area of wid lineCount=width+GEN_INC; // Sets line count to the desired width plus GEN_INC to remove incorrect line calculations. if(lineCount<=0)abort(); - line=(struct line_t *)calloc(lineCount,sizeof(struct line_t)); // Allocate memory for the array 'line' + line = new struct line_t[lineCount]; //(struct line_t *)calloc(lineCount,sizeof(struct line_t)); // Allocate memory for the array 'line' + memset(line,0,lineCount*sizeof(struct line_t)); for(i=0;i<lineCount;i++){ // Indoor areas don't have to be directly on the ground (i.e. 0)... line[i].y=INDOOR_FLOOR_HEIGHT; |