summaryrefslogtreecommitdiffstats
path: root/dev/a2-carsoccer/car_soccer.h
diff options
context:
space:
mode:
authorMatt Strapp <matt@mattstrapp.net>2021-09-24 10:05:55 -0500
committerMatt Strapp <matt@mattstrapp.net>2021-09-24 10:05:55 -0500
commit458496b2db6d67736fd1ffc18c6e51a7a4e1180c (patch)
tree3d6ee4e37a48d71a6ac781cbd93a6d6dcb234f98 /dev/a2-carsoccer/car_soccer.h
parentPushed feedback file submission-w1.1 (diff)
parentpublish a2 (diff)
downloadcsci4611-458496b2db6d67736fd1ffc18c6e51a7a4e1180c.tar
csci4611-458496b2db6d67736fd1ffc18c6e51a7a4e1180c.tar.gz
csci4611-458496b2db6d67736fd1ffc18c6e51a7a4e1180c.tar.bz2
csci4611-458496b2db6d67736fd1ffc18c6e51a7a4e1180c.tar.lz
csci4611-458496b2db6d67736fd1ffc18c6e51a7a4e1180c.tar.xz
csci4611-458496b2db6d67736fd1ffc18c6e51a7a4e1180c.tar.zst
csci4611-458496b2db6d67736fd1ffc18c6e51a7a4e1180c.zip
Merge branch 'support-code' of github.umn.edu:umn-csci-4611-f21/shared-upstream
Diffstat (limited to 'dev/a2-carsoccer/car_soccer.h')
-rw-r--r--dev/a2-carsoccer/car_soccer.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/dev/a2-carsoccer/car_soccer.h b/dev/a2-carsoccer/car_soccer.h
new file mode 100644
index 0000000..9982238
--- /dev/null
+++ b/dev/a2-carsoccer/car_soccer.h
@@ -0,0 +1,84 @@
+/** CSci-4611 Assignment 2: Car Soccer
+ */
+
+#ifndef CAR_SOCCER_H_
+#define CAR_SOCCER_H_
+
+#include <mingfx.h>
+using namespace mingfx;
+
+#include "ball.h"
+#include "car.h"
+
+
+// The main class for the Car Soccer application
+class CarSoccer : public GraphicsApp {
+public:
+ CarSoccer();
+ virtual ~CarSoccer();
+
+ /// Called whenever the mouse moves
+ void OnMouseMove(const Point2& pos, const Vector2& delta);
+
+ /// This is called when special keys like SPACEBAR are pressed
+ void OnSpecialKeyDown(int key, int scancode, int modifiers);
+
+ /// This is called once each frame. dt is "delta time", the time elapsed
+ /// since the last call.
+ void UpdateSimulation(double dt);
+
+ /// This is called when it is time to initialize graphics objects, like
+ /// texture files.
+ void InitOpenGL();
+
+ /// This is called once each frame, and you should draw the scene inside
+ /// this function.
+ void DrawUsingOpenGL();
+
+ /// This is a little utility function that is helpful. It treats the
+ /// arrow keys like a joystick and returns the direction you are pressing
+ /// as a 2D vector, taking into account the fact that you might be holding
+ /// down more than one key at a time.
+ Vector2 joystick_direction();
+
+ // Feel free to add more functions here as needed.
+
+
+private:
+
+ // Simulation objects/parameters:
+
+ // We suggest you start with the Car and Ball objects provided, adding new
+ // member variables to those classes if you need to. You'll probably want
+ // to store some other data for the simulation here too, like some value
+ // for gravity.
+ Car car_;
+ Ball ball_;
+
+
+ // Support for drawing some simple shapes:
+ QuickShapes quickShapes_;
+
+ // Images to use as textures:
+ Texture2D fieldTex_;
+ Texture2D crowdTex_;
+
+ // Control the computer graphics camera (we'll learn about this in a few weeks):
+ Matrix4 modelMatrix_;
+ Matrix4 viewMatrix_;
+ Matrix4 projMatrix_;
+
+ // A list of paths to search for data files (images):
+ std::vector<std::string> searchPath_;
+
+ // Set this to true if you want to use the mouse to control the car rather than the keyboard
+ bool use_mouse_;
+
+ // Mouse position in Normalized Device Coordinates,
+ // meaning -1 to +1 in both X and Y. (0,0) is the
+ // center of the screen
+ Point2 mouse_pos_;
+};
+
+
+#endif