bool LoadImages() { background.load(currentLocation->getName()); background.loadGLTextures(); int r=254, g=0, b=254, frameCount=12, frame=0; // r,g,b is background color to be filtered, frameCount and frame number mario1sprite=new CBaseSprite(frameCount, background.getViewportWidth(), background.getViewportHeight()); mario1sprite->loadFrame(frame, "Gerad - Walk (Right)1.bmp",r, g, b); mario1sprite->loadFrame(frame+1, "Gerad - Walk (Right)2.bmp",r, g, b); mario1sprite->loadFrame(frame+2, "Gerad - Walk (Right)3.bmp", r, g, b); mario1sprite->loadFrame(frame+3, "Gerad - Walk (Left)1.bmp", r, g, b); mario1sprite->loadFrame(frame+4, "Gerad - Walk (Left)2.bmp", r, g, b); mario1sprite->loadFrame(frame+5, "Gerad - Walk (Left)3.bmp", r, g, b); mario1sprite->loadFrame(frame+6, "Gerad - Walk (Front)1.bmp", r, g, b); mario1sprite->loadFrame(frame+7, "Gerad - Walk (Front)2.bmp", r, g, b); mario1sprite->loadFrame(frame+8, "Gerad - Walk (Front)3.bmp", r, g, b); mario1sprite->loadFrame(frame+9, "Gerad - Walk (Back)1.bmp", r, g, b); mario1sprite->loadFrame(frame+10, "Gerad - Walk (Back)2.bmp", r, g, b); mario1sprite->loadFrame(frame+11, "Gerad - Walk (Back)3.bmp", r, g, b); mario1sprite->loadGLTextures(); InventorySprite = new CBaseSprite(1, background.getViewportWidth(), background.getViewportHeight()); InventorySprite->loadFrame(frame, "bckgnd1.bmp", r, g, b); InventorySprite->loadGLTextures(); NPC1Sprite = new CBaseSprite(1, background.getViewportWidth(), background.getViewportHeight()); NPC1Sprite->loadFrame(frame, "Scholar1 (Front).bmp", r, g, b); NPC1Sprite->loadGLTextures(); NPC2Sprite = new CBaseSprite(1, background.getViewportWidth(), background.getViewportHeight()); NPC2Sprite->loadFrame(frame, "Old Woman (Front).bmp", r, g, b); NPC2Sprite->loadGLTextures(); TextboxSprite = new CBaseSprite(1, background.getViewportWidth(), background.getViewportHeight()); TextboxSprite->loadFrame(frame, "textbox.bmp", r, g, b); TextboxSprite->loadGLTextures(); return true; }
bool GeradMoveLeft(float &x, float &y) { x -= Gerad.GetSpeed(); if(Timer->elapsed(walkTimer, STOPTIME)) { Gerad.Setxy(x, y); walkTimer = Timer->time(); } for(int i = 0;i < currentLocation->ObjectNum;i++) { if(currentLocation->objects[i].IsWithin(x, y)) { x += Gerad.GetSpeed(); Gerad.SetStopStatus(); Gerad.Setxy(x, y); return true; } } if(x <= 0) if(currentLocation->left != NULL) { currentLocation = currentLocation->left; x = 462; background.load(currentLocation->getName()); background.loadGLTextures(); } else {x = 0; Gerad.SetStopStatus();} if(Timer->elapsed(walkTimer, STOPTIME)) { Gerad.Setxy(x, y); walkTimer = Timer->time(); } return true; }
bool ProcessFrame() { if(InMenu) { return true; } float x, y; Gerad.Getxy(x, y); if(Gerad.GetWalk()) { if(InInterior) { if(CheckForExit(x, y)) { int x, y; exitLocation->interiors[currentInterior].getxy(x, y); y += 20; Gerad.Setxy(x, y); currentLocation = exitLocation; Gerad.SetFront(); background.load(currentLocation->getName()); background.loadGLTextures(); InInterior = false; return true; } } interiorLoop(x, y); if(Gerad.GetRight()) { return GeradMoveRight(x, y); } else if(Gerad.GetBack()) { return GeradMoveBack(x, y); } else if(Gerad.GetFront()) { return GeradMoveFront(x, y); } else if(Gerad.GetLeft()) { return GeradMoveLeft(x, y); } } return true; }
bool GeradMoveBack(float &x, float &y) { y -= Gerad.GetSpeed(); if(Timer->elapsed(walkTimer, STOPTIME)) { Gerad.Setxy(x, y); walkTimer = Timer->time(); } for(int i = 0;i < currentLocation->ObjectNum;i++) { if(currentLocation->objects[i].IsWithin(x, y)) { y += Gerad.GetSpeed(); Gerad.SetStopStatus(); Gerad.Setxy(x, y); return true; } } if(y <= 0) { if(currentLocation->top != NULL) { currentLocation = currentLocation->top; if(topInterior)InInterior = true; y = 462; background.load(currentLocation->getName()); background.loadGLTextures(); } else { y = 0; Gerad.SetStopStatus(); } } if(Timer->elapsed(walkTimer, STOPTIME)) { Gerad.Setxy(x, y); walkTimer = Timer->time(); } return true; }
void interiorLoop(float x, float y) { for(int i = 0; i < currentLocation->InteriorNum; i++) { if(checkInterior(i)) { InInterior = true; currentInterior = i; currentLocation->interiors[i].getstartxy(x, y); y += 20; Gerad.Setxy(x, y); currentLocation->interiors[i].setdirection(); currentLocation->interiors[i].exit = currentLocation; exitLocation = currentLocation; currentLocation = currentLocation->interiors[i].getLocation(); background.load(exitLocation->interiors[i].getLocation()->getName()); background.loadGLTextures(); return; } } }