Made the starfield and black hole render in the client
This commit is contained in:
parent
093b3b901a
commit
177ce1a2aa
|
@ -3,6 +3,7 @@
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
#include <SDL2/SDL_image.h>
|
#include <SDL2/SDL_image.h>
|
||||||
#include <SDL2/SDL_timer.h>
|
#include <SDL2/SDL_timer.h>
|
||||||
|
#include <SDL2/SDL_ttf.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
@ -37,7 +38,7 @@ int main(int argc, char ** argv)
|
||||||
// Make the socket timeout:
|
// Make the socket timeout:
|
||||||
struct timeval read_timeout;
|
struct timeval read_timeout;
|
||||||
read_timeout.tv_sec = 0;
|
read_timeout.tv_sec = 0;
|
||||||
read_timeout.tv_usec = 16;
|
read_timeout.tv_usec = 8;
|
||||||
setsockopt(receiveSocket, SOL_SOCKET, SO_RCVTIMEO, &read_timeout, sizeof(read_timeout));
|
setsockopt(receiveSocket, SOL_SOCKET, SO_RCVTIMEO, &read_timeout, sizeof(read_timeout));
|
||||||
|
|
||||||
// Create and fill the information needed to bind to the socket:
|
// Create and fill the information needed to bind to the socket:
|
||||||
|
@ -92,7 +93,7 @@ int main(int argc, char ** argv)
|
||||||
|
|
||||||
// Load in all of our textures:
|
// Load in all of our textures:
|
||||||
SDL_Texture * idleTexture, * acceleratingTexture, * clockwiseTexture, * anticlockwiseTexture, * currentTexture,
|
SDL_Texture * idleTexture, * acceleratingTexture, * clockwiseTexture, * anticlockwiseTexture, * currentTexture,
|
||||||
* acceleratingTexture2;
|
* acceleratingTexture2, * blackHoleTexture;
|
||||||
|
|
||||||
idleTexture = IMG_LoadTexture(renderer, "./Images/Ship-Idle.png");
|
idleTexture = IMG_LoadTexture(renderer, "./Images/Ship-Idle.png");
|
||||||
clockwiseTexture = IMG_LoadTexture(renderer, "./Images/Ship-Clockwise.png");
|
clockwiseTexture = IMG_LoadTexture(renderer, "./Images/Ship-Clockwise.png");
|
||||||
|
@ -100,6 +101,20 @@ int main(int argc, char ** argv)
|
||||||
anticlockwiseTexture = IMG_LoadTexture(renderer, "./Images/Ship-Anticlockwise.png");
|
anticlockwiseTexture = IMG_LoadTexture(renderer, "./Images/Ship-Anticlockwise.png");
|
||||||
acceleratingTexture2 = IMG_LoadTexture(renderer, "./Images/Ship-Accelerating-Frame-2.png");
|
acceleratingTexture2 = IMG_LoadTexture(renderer, "./Images/Ship-Accelerating-Frame-2.png");
|
||||||
|
|
||||||
|
// Load the starfield texture:
|
||||||
|
SDL_Texture * starfieldTexture = IMG_LoadTexture(renderer, "./Images/Starfield.png");
|
||||||
|
SDL_Rect starfieldRect;
|
||||||
|
SDL_QueryTexture(starfieldTexture, NULL, NULL, NULL, &starfieldRect.h);
|
||||||
|
SDL_QueryTexture(starfieldTexture, NULL, NULL, &starfieldRect.w, NULL);
|
||||||
|
|
||||||
|
blackHoleTexture = IMG_LoadTexture(renderer, "./Images/Black-Hole.png");
|
||||||
|
SDL_Rect blackHoleRectangle;
|
||||||
|
blackHoleRectangle.x = 0;
|
||||||
|
blackHoleRectangle.y = 0;
|
||||||
|
SDL_QueryTexture(blackHoleTexture, NULL, NULL, NULL, &blackHoleRectangle.h);
|
||||||
|
SDL_QueryTexture(blackHoleTexture, NULL, NULL, &blackHoleRectangle.w, NULL);
|
||||||
|
|
||||||
|
|
||||||
// Enable resizing the window:
|
// Enable resizing the window:
|
||||||
SDL_SetWindowResizable(window, SDL_TRUE);
|
SDL_SetWindowResizable(window, SDL_TRUE);
|
||||||
ship Temp;
|
ship Temp;
|
||||||
|
@ -208,18 +223,32 @@ int main(int argc, char ** argv)
|
||||||
// Clear the screen, filling it with black:
|
// Clear the screen, filling it with black:
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer);
|
||||||
|
|
||||||
|
// Draw the starfield:
|
||||||
|
starfieldRect.x = -900 - (long)shipB.position.xComponent % 800 - (shipB.velocity.xComponent * 15);
|
||||||
|
starfieldRect.y = -900 - (long)shipB.position.yComponent % 800 - (shipB.velocity.yComponent * 15);
|
||||||
|
while(starfieldRect.x <= (width + 800))
|
||||||
|
{
|
||||||
|
while(starfieldRect.y <= (height + 800))
|
||||||
|
{
|
||||||
|
SDL_RenderCopy(renderer, starfieldTexture, NULL, &starfieldRect);
|
||||||
|
starfieldRect.y += 800;
|
||||||
|
}
|
||||||
|
starfieldRect.y = -900 - (long)shipB.position.yComponent % 800 - (shipB.velocity.yComponent * 15);
|
||||||
|
starfieldRect.x += 800;
|
||||||
|
}
|
||||||
|
|
||||||
// Draw the ship:
|
// Draw the ship:
|
||||||
SDL_RenderCopyEx(renderer, currentTexture, NULL, &shipA.rectangle,
|
SDL_RenderCopyEx(renderer, currentTexture, NULL, &shipA.rectangle,
|
||||||
angleBetweenVectors(&shipA.engine, &upVector) + 90, NULL, 0);
|
angleBetweenVectors(&shipA.engine, &upVector) + 90, NULL, 0);
|
||||||
SDL_RenderCopyEx(renderer, currentTexture, NULL, &shipB.rectangle,
|
SDL_RenderCopyEx(renderer, currentTexture, NULL, &shipB.rectangle,
|
||||||
angleBetweenVectors(&shipB.engine, &upVector) + 90, NULL, 0);
|
angleBetweenVectors(&shipB.engine, &upVector) + 90, NULL, 0);
|
||||||
|
|
||||||
// Set the colour to yellow:
|
// Calculate the position of the black hole on screen and render it:
|
||||||
SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255);
|
blackHoleRectangle.x = ((long)(starPositionX - shipB.position.xComponent - (blackHoleRectangle.w / 2)) + width/2)
|
||||||
|
- (shipB.velocity.xComponent * 15);
|
||||||
// Draw a circle as the star:
|
blackHoleRectangle.y = ((long)(starPositionY - shipB.position.yComponent - (blackHoleRectangle.h / 2)) + height/2)
|
||||||
DrawCircle(renderer, (long)(starPositionX - shipB.position.xComponent) + width/2 - (shipB.velocity.xComponent * 15),
|
- (shipB.velocity.yComponent * 15);
|
||||||
(long)(starPositionY - shipB.position.yComponent) + height/2 - (shipB.velocity.yComponent * 15), 50);
|
SDL_RenderCopy(renderer, blackHoleTexture, NULL, &blackHoleRectangle);
|
||||||
|
|
||||||
// Present the rendered graphics:
|
// Present the rendered graphics:
|
||||||
SDL_RenderPresent(renderer);
|
SDL_RenderPresent(renderer);
|
||||||
|
@ -230,5 +259,5 @@ int main(int argc, char ** argv)
|
||||||
}
|
}
|
||||||
// ========================================================================================================
|
// ========================================================================================================
|
||||||
// Local Variables:
|
// Local Variables:
|
||||||
// compile-command: "gcc `sdl2-config --libs --cflags` Spacewar-Client.c spacewarPlayer.c -lSDL2_image -lm -o 'Spacewar Client!'"
|
// compile-command: "gcc `sdl2-config --libs --cflags` Spacewar-Client.c spacewarPlayer.c -lSDL2_image -lSDL2_ttf -lm -o 'Spacewar Client!'"
|
||||||
// End:
|
// End:
|
||||||
|
|
Loading…
Reference in New Issue