CSC3224_Computer_Games_Development / Game / MovingCamera.h
MovingCamera.h
Raw
#pragma once
#include "../GameEngine/Engine_Messaging_System/EngineMessageSystem.h"
#include "../GameEngine/Engine_Messaging_System/MessageSystemEvent.h"
#include "../GameEngine/Engine_Messages/MessageObserver.h"
#include "../GameEngine/Engine_Messages/MessageHandler.h"
#include "../Box2D/Box2D/Box2D/Dynamics/b2WorldCallbacks.h"
#include "../Box2D/Box2D/Box2D/Dynamics/Contacts/b2Contact.h"
#include "../GameEngine/Engine_Text/Text.h"
#include "../GameEngine/Engine_Graphics/Scene.h"
#include "../GameEngine/Engine_Physics/Entity.h"
#include "../GameEngine/Engine_Physics/RigidBodyPhysics.h"
#include "../GameEngine/Engine_Core/BaseGameEvents.h"
#include "../GameEngine/Engine_Audio/AudioSoundEffect.h"
#include "../GameEngine/Engine_Common/Common.h"
#include <iostream>

#define PIXELS 20.f

class MovingCamera : public EngineMessageSystem

{
public:
	//MovingCamera();
	MovingCamera(Scene & w, sf::RenderWindow * window, Json::Value platformConfig);
	~MovingCamera();
	void moveCamera();
	void recieveMessage(const SystemMessage & m);
	void play(const sf::Time& elapsedTime) override;
	void recieveEngineMessage(const SystemMessage& inputSystemMessage) override;
	
	sf::View fixed;
	sf::View standard;
	bool overlayClosed = false;
	bool toggleSplit = false; 
	bool moved = false; 
	sf::View right;
	sf::View left;
	sf::View minimap;
protected:
	sf::RenderWindow* window;
	Entity* playerEntity;
	const float jumpVel = 15.0;
	const float moveVel = 8;
	float desiredVel = 0;

	sf::View camera;
	const float delayInMilliseconds = 2000;
	float currentdelay = 0;
	const float moveSpeed = 1 / PIXELS;
	Json::Value platformConfig;
	bool loose = false;
	std::deque<b2Body*> platformBuffer;

	bool jump = false;
	bool ground = false;

	const float maxVerticalDistance = 75.f / PIXELS;
	const float minVerticalDistance = 65.f / PIXELS;
	const float maxHorixzontalDistance = 80.f / PIXELS;
	const float minHorixzontalDistance = 30.f / PIXELS;

	bool checkIfBelowView(float y) const {
		auto bottom = camera.getCenter().y + (camera.getSize().y / 2);
		return (y - bottom) > 0;
	}
};