예제 #1
0
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;
}
예제 #2
0
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;
}
예제 #3
0
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;
}
예제 #4
0
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;
}
예제 #5
0
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;
			}
	}
}