Jump to content
  • Advertisement
Sign in to follow this  
  • entries
    570
  • comments
    2427
  • views
    217357

4E4RTS: Coding gone wrong

Sign in to follow this  
Mushu

80 views

Okay, I'm running into some problems with this newly refactored map class; well, its pretty much the optimized render function.

I'm banging my head against a cement wall as I'm writing this


virtual void render(SDL_Surface* screen) {
for(int offsetX = (int)(m_offX / m_Objs.begin()->t_w); offsetX*m_Objs.begin()->t_w < m_cullX; offsetX++) {
if (offsetX > m_rows || offsetX < 0) continue;

for (int offsetY = (int)(m_offY / m_Objs.begin()->t_h); offsetY*m_Objs.begin()->t_h < m_cullY; offsetY++) {

if (offsetY > m_TileAtY || offsetY < 0) continue;

std::vector::iterator i = &m_Objs[offsetY*m_rows+offsetX];

desRect.x = offsetX * m_Objs.begin()->t_w + m_offX;
desRect.y = offsetY * m_Objs.begin()->t_h + m_offY;

srcRect.x = i->t_x; srcRect.y = i->t_y;
srcRect.w = i->t_w; srcRect.h = i->t_h;
SDL_BlitSurface(i->surf->surf,&srcRect,screen,&desRect);
}
}
}


Funnily enough, its doing weird stuff with the culling. As in, not what its supposed to be doing. Still trying to figure out what the hell I did last night. Grrr....
Sign in to follow this  


3 Comments


Recommended Comments

Yeah, that loop is b0rked.

Crap crap crap. Time to rewrite it.

Share this comment


Link to comment
Fixed it. Apparently, throughout the whole class, I mixed up the map offsets. Stupid stupid stupid. I remember thinking "wtf" when I wrote in the map scrolling and I had to multiply the scroll speed by -1.

NEVER HACK CODE.

Fixed render function:
virtual void render(SDL_Surface* screen) {

int offsetX, offsetY;
const int t_h = m_Objs.begin()->t_h, t_w = m_Objs.begin()->t_w;
cTile* i = NULL;

for (offsetY = m_offY/t_h; offsetY < (m_offY+m_cullY)/t_h+1; offsetY++) {
if (offsetY > m_TileAtY) break;
if (offsetY < 0) continue;

for (offsetX = m_offX/t_w; offsetX < (m_offX+m_cullX)/t_w+1; offsetX++) {
if (offsetX > m_rows || offsetX < 0) break;

i = getTile(offsetX, offsetY);

desRect.x = offsetX*t_w - m_offX;
desRect.y = offsetY*t_h - m_offY;

srcRect.x = i->t_x; srcRect.y = i->t_y;
srcRect.w = i->t_w; srcRect.h = i->t_h;

SDL_BlitSurface(i->surf->surf, &srcRect, screen, &desRect);

}
}
}


[grin]

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!