void XWing::Draw(Core::Graphics& g) { g; if(!isDead) { const unsigned int NUM_POINTS = sizeof(XWingPoints) / sizeof(*XWingPoints); for(unsigned int i = 0;i < NUM_POINTS - 1;i++) { Vector3D currentPoint = Vector3D(XWingPoints[i].x, XWingPoints[i].y) * scalar; Vector3D nextPoint = Vector3D(XWingPoints[(i+1) % NUM_POINTS].x, XWingPoints[(i+1) % NUM_POINTS].y) * scalar; const Vector3D& p1 = matrix * currentPoint + position; const Vector3D& p2 = matrix * nextPoint + position; g.DrawLine(p1.x, p1.y, p2.x, p2.y); } for(unsigned int i = NUM_POINTS - 1;i > 0;i--) { Vector3D currentPoint = Vector3D(-XWingPoints[i].x, XWingPoints[i].y) * scalar; Vector3D nextPoint = Vector3D(-XWingPoints[(i-1) % NUM_POINTS].x, XWingPoints[(i-1) % NUM_POINTS].y) * scalar; const Vector3D& p1 = matrix * currentPoint + position; const Vector3D& p2 = matrix * nextPoint + position; g.DrawLine(p1.x, p1.y, p2.x, p2.y); } if(state == GAME) { hb.Draw(g); } } }
void Upgrade::DrawDiagonalBar(Core::Graphics& graphics, float thickness, Vector2D endPosition, Vector2D startPosition) { for(int i=0; i<thickness; i++) { Vector2D start(startPosition.x, startPosition.y + i); Vector2D end(endPosition.x, endPosition.y + i); graphics.DrawLine(start.x, start.y, end.x, end.y); } }
void Upgrade::DrawGraphicPoints(Core::Graphics& graphics, Vector2D* points, int numPoints) { for(int i=0; i<numPoints; i++) { if(i+1 < numPoints) { Vector2D start = points[i]+position; Vector2D end = points[i+1]+position; graphics.DrawLine(start.x, start.y, end.x, end.y); } else { Vector2D start = points[i]+position; Vector2D end = points[0]+position; graphics.DrawLine(start.x, start.y, end.x, end.y); } } }
void Upgrade::DrawVerticalBar(Core::Graphics& graphics, float thickness, float size, Vector2D startPosition) { for(int i=0; i<thickness; i++) { Vector2D start(startPosition.x + i, startPosition.y); Vector2D end(startPosition.x + i, startPosition.y+size); graphics.DrawLine(start.x, start.y, end.x, end.y); } }
void Upgrade::viewText(Core::Graphics& graphics) { graphics.SetColor(RGB(6, 196, 130)); graphics.DrawLine(position.x + (float)BOX_SIZE/2, position.y + (float)BOX_SIZE/4, position.x + (float)BOX_SIZE/2+50.0f, position.y - 200.0f); graphics.DrawLine(position.x + (float)BOX_SIZE/2+50.0f, position.y - 200.0f, position.x+(float)BOX_SIZE/2+400.0f, position.y-200.0f); if(type == armor) { graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-180.0f), "The armor upgrade increases the rate"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-160.0f), "at which your armor regens out of combat."); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-140.0f), "Your ship regens no armor until the first"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-120.0f), "upgrade has been purchased. The ship is"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-100.0f), "'out of combat' when you haven't taken"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-80.0f), "damage in over five seconds."); } else if(type == fuel) { graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-180.0f), "The fuel upgrade increases the overall"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-160.0f), "efficiency of your spacecraft. What this"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-140.0f), "acutally means is that your fuel doesn't"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-120.0f), "drain like a Hummer's anymore. You've"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-100.0f), "gotta love that one mile to the gallon."); } else if(type == health) { graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-180.0f), "The repair upgrade increases the rate"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-160.0f), "at which these small sort-of space wrenches"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-140.0f), "spawn that increase your ship's health"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-120.0f), "when picked up. The first upgrade causes"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-100.0f), "the wrenches to start spawning whilst"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-80.0f), "continual upgrades decrease the spawn time."); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-60.0f), "Spawn times (seconds): 60/45/30/20/15. "); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-40.0f), "WARNING: The spawn time resets when "); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-20.0f), "you purchase this upgrade to the new time."); } else if(type == bullet) { graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-180.0f), "The bullet upgrade increases the damage "); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-160.0f), "that your bullets deal to targets. Oh "); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-140.0f), "yeah by the way the enemies' health scale"); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-120.0f), "as the time goes on so this upgrade might be "); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-100.0f), "a good idea, just saying."); graphics.DrawString(int(position.x + (float)BOX_SIZE/2+100.0f), int(position.y-80.0f), "Damage: 1(no upgrades)/2/3/5/8/12"); } }
void Walls::draw(Core::Graphics& g) { g.SetColor(RGB(255, 100, 255)); for(unsigned int i = 0; i< NUM_WALL_POINTS; i++) { const Vector3D& w1 = *wallShape[i]; const Vector3D& w2 = *wallShape[(i+1) % NUM_WALL_POINTS]; g.DrawLine(w1.x, w1.y, w2.x, w2.y); } }
void Grid::draw(Core::Graphics& g) { for(int i = 0; i<numRows; i++) { for(int j = 0; j<numColumns; j++) { cells[i][j].draw(g); } } if(enemies.numActiveTroops==0) { g.SetColor(RGB(50,255,50)); } else g.SetColor(RGB(200,50,50)); g.DrawString((int)(cells[9][0].position.x+(cells[9][0].width/2))-30,(int)(cells[9][0].position.y+(cells[9][0].height/2))-10, "COMPILE"); g.DrawLine(cells[9][0].position.x, cells[9][0].position.y, cells[9][0].position.x+cells[9][0].width, cells[9][0].position.y); g.DrawLine(cells[9][0].position.x+cells[9][0].width, cells[9][0].position.y, cells[9][0].position.x+cells[9][0].width, cells[9][0].position.y+cells[9][0].height); enemies.draw(g, Vector3D(100,100)); }
void Lerper::Draw(Core::Graphics& graphics) { const unsigned int NUM_LINES = sizeof(Lerp) / sizeof(*Lerp); graphics.SetColor(RGB(255,100,0)); for(unsigned int i = 0; i < NUM_LINES; i++) { const Vector2D& first = Lerp[i] + position; const Vector2D& second = Lerp[(i+1) % NUM_LINES] + position; graphics.DrawLine(first.vector_x, first.vector_y, second.vector_x, second.vector_y); } const unsigned int LERP_NUM_LINES = sizeof(LerpLines) / sizeof(*LerpLines); graphics.SetColor(RGB(255,100,100)); for(unsigned int i = 0; i < LERP_NUM_LINES; i++) { const Vector2D& first = LerpLines[i]; const Vector2D& second = LerpLines[(i+1) % LERP_NUM_LINES]; graphics.DrawLine(first.vector_x, first.vector_y, second.vector_x, second.vector_y); } }
void EnemyShip::draw(Core::Graphics& g) { const int numShippoints= sizeof(lerper)/sizeof(*lerper); Matrix3 rotato=rotato.rotate(angle); g.SetColor(RGB(200,100,100)); if(!dead) { for(int i=0;i<numShippoints;i++) { const Vector2d& s1=rotato*lerper[i]+position; const Vector2d& s2=rotato*lerper[(i+1)%numShippoints]+position; g.DrawLine(s1.x,s1.y,s2.x,s2.y); } } }
void Bullet::draw(Core::Graphics& g) { position = position + (velocity * Dt); if((position.X < 0 || position.X > 1000) && (position.Y > 1900 || position.Y < 0)) { canBeDrawn = false; } if(canBeDrawn) { for(unsigned int i = 0; i < bulletShape.numOfPoints; i++) { const Vector2& first = position + (transformationMatrix * bulletShape.shapePoints[i]); const Vector2& second = position + (transformationMatrix *bulletShape.shapePoints[(i + 1) % bulletShape.numOfPoints]); g.DrawLine(first.X, first.Y, second.X, second.Y); } } }
void Upgrade::DrawUpgrade(Core::Graphics& graphics, Vector2D mouse, float thickness) { myColor = (CheckMouse(mouse))? RGB(134, 134, 134): RGB(94,94,94); if(upgradeCooldown < .5) { upgradeCooldown += .016f; } graphics.SetColor(myColor); for(int i=0; i<BOX_SIZE; i++) { Vector2D start(position.x + i, position.y); Vector2D end(position.x + i, position.y+BOX_SIZE); graphics.DrawLine(start.x, start.y, end.x, end.y); } if(CheckMouse(mouse)) { viewText(graphics); if(Core::Input::IsPressed(Core::Input::BUTTON_LEFT)&&upgradeCooldown >= .5f && myCash.getCash() >= upgradeCost && upgradeCount < 5) { upgradeCooldown = 0; myCash.decreaseCash(upgradeCost); upgradeCount++; } } SetUpgradeCost(); DrawGraphic(graphics); graphics.SetColor(RGB(255,255,255)); if(upgradeCount > 4) { graphics.SetColor(RGB(255,0,0)); } //Draws $ DrawHorizontalBar(graphics, thickness, Letter_Size, Vector2D(costPosition.x, costPosition.y+thickness/2)); DrawVerticalBar(graphics, thickness, (Letter_Size-3*thickness)/2, Vector2D(costPosition.x, costPosition.y + thickness)); DrawHorizontalBar(graphics, thickness, Letter_Size, Vector2D(costPosition.x, costPosition.y+thickness+((Letter_Size-3*thickness)/2))); DrawVerticalBar(graphics, thickness,(Letter_Size-3*thickness)/2, Vector2D(costPosition.x+(Letter_Size-thickness), costPosition.y + thickness*2+((Letter_Size-3*thickness)/2))); DrawHorizontalBar(graphics, thickness, Letter_Size, Vector2D(costPosition.x, costPosition.y+2*thickness + (2*((Letter_Size-3*thickness)/2)-thickness/2))); DrawVerticalBar(graphics, thickness, Letter_Size, Vector2D(costPosition.x+(Letter_Size/2.5f), costPosition.y)); //Draws Cost DrawLetters(graphics, thickness); }