Trying to create a fixed time slice system
This commit is contained in:
+2
-3
@@ -1,7 +1,7 @@
|
||||
#include "player.hpp"
|
||||
|
||||
#define ANIMATION_SPEED 100
|
||||
#define WALKING_SPEED 0.14
|
||||
#define WALKING_SPEED 140
|
||||
|
||||
Player::Player(SDL_Surface* s, int w, int h)
|
||||
: sprite(s, w, h)
|
||||
@@ -22,10 +22,9 @@ void Player::Update(int delta) {
|
||||
FaceDirection(Direction::EAST);
|
||||
}
|
||||
|
||||
constexpr double d = 1/sqrt(2);
|
||||
|
||||
if (motion.x != 0 && motion.y != 0) {
|
||||
sprite.SetInterval(ANIMATION_SPEED);
|
||||
constexpr double d = 1/sqrt(2);
|
||||
position += motion * d * delta;
|
||||
}
|
||||
else if (motion != 0) {
|
||||
|
||||
@@ -86,13 +86,13 @@ void SceneManager::LoadScene(SceneList sceneIndex) {
|
||||
|
||||
switch(sceneIndex) {
|
||||
//add scene creation calls here
|
||||
case SceneList::FIRST:
|
||||
#ifdef DEBUG
|
||||
case SceneList::TESTSYSTEMS:
|
||||
activeScene = new TestSystems(&configUtil, &surfaceMgr, &netUtil);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case SceneList::FIRST:
|
||||
case SceneList::SPLASH:
|
||||
activeScene = new Splash(&configUtil, &surfaceMgr);
|
||||
break;
|
||||
|
||||
+20
-4
@@ -4,6 +4,8 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
#include "splash.hpp"
|
||||
|
||||
//-------------------------
|
||||
//Public access members
|
||||
//-------------------------
|
||||
@@ -16,6 +18,20 @@ TestSystems::TestSystems(ConfigUtility* cUtil, SurfaceManager* sMgr, UDPNetworkU
|
||||
surfaceMgr = sMgr;
|
||||
netUtil = nUtil;
|
||||
|
||||
//subscene; load the resources
|
||||
Splash* splash = new Splash(configUtil, surfaceMgr);
|
||||
|
||||
while(splash->GetNextScene() == SceneList::CONTINUE) {
|
||||
//wipe the screen
|
||||
SDL_FillRect(splash->GetScreen(), 0, 0);
|
||||
//call each user defined function
|
||||
((BaseScene*)(splash))->RunFrame();
|
||||
//give the computer a break
|
||||
SDL_Delay(10);
|
||||
}
|
||||
delete splash;
|
||||
SetNextScene(SceneList::CONTINUE);
|
||||
|
||||
playerCounter = currentPlayer = 0;
|
||||
|
||||
playerMgr.New(playerCounter++, surfaceMgr->Get("elliot"));
|
||||
@@ -46,8 +62,8 @@ void TestSystems::FrameEnd() {
|
||||
}
|
||||
|
||||
void TestSystems::Update() {
|
||||
delta.Calculate();
|
||||
playerMgr.UpdateAll(delta.GetDelta());
|
||||
// Delta::Calculate();
|
||||
// playerMgr.UpdateAll(Delta::GetTime());
|
||||
}
|
||||
|
||||
string IToS(int i) {
|
||||
@@ -81,7 +97,7 @@ void TestSystems::MouseButtonUp(SDL_MouseButtonEvent const& button) {
|
||||
void TestSystems::KeyDown(SDL_KeyboardEvent const& key) {
|
||||
switch(key.keysym.sym) {
|
||||
case SDLK_ESCAPE:
|
||||
SetNextScene(SceneList::MAINMENU);
|
||||
QuitEvent();
|
||||
break;
|
||||
|
||||
case SDLK_w:
|
||||
@@ -164,5 +180,5 @@ void TestSystems::SwitchToPlayer(int index) {
|
||||
}
|
||||
|
||||
void TestSystems::SendMessage(std::string s) {
|
||||
//
|
||||
cout << s << endl;
|
||||
}
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "packet_list.hpp"
|
||||
|
||||
#include "player_manager.hpp"
|
||||
#include "delta.hpp"
|
||||
#include "frame_rate.hpp"
|
||||
#include "raster_font.hpp"
|
||||
|
||||
@@ -47,7 +46,6 @@ protected:
|
||||
|
||||
PlayerManager playerMgr;
|
||||
|
||||
Delta delta;
|
||||
FrameRate frameRate;
|
||||
RasterFont font;
|
||||
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
/* Copyright: (c) Kayne Ruse 2013
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*/
|
||||
#ifndef DELTA_HPP_
|
||||
#define DELTA_HPP_
|
||||
|
||||
#include <ctime>
|
||||
|
||||
class Delta {
|
||||
public:
|
||||
Delta() {
|
||||
time = tick = 0;
|
||||
}
|
||||
int Calculate() {
|
||||
int c = clock();
|
||||
time = c - tick;
|
||||
tick = c;
|
||||
return time;
|
||||
}
|
||||
int GetDelta() const {
|
||||
return time;
|
||||
};
|
||||
private:
|
||||
int time, tick;
|
||||
};
|
||||
|
||||
#endif
|
||||
+3
-1
@@ -2,4 +2,6 @@ Each client needs to know about each other client now.
|
||||
|
||||
|
||||
Have multiple players moving around the server at the same time
|
||||
keep the docs up to date!!!!!
|
||||
keep the docs up to date!!!!!
|
||||
|
||||
Player's internals a weird.
|
||||
@@ -13,7 +13,7 @@ struct ClientData {
|
||||
handle = h;
|
||||
avatar = a;
|
||||
}
|
||||
void Update(int delta) {
|
||||
void Update(double delta) {
|
||||
position += motion * delta;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,10 +54,10 @@ void ServerApplication::Proc() {
|
||||
}
|
||||
}
|
||||
//update the world
|
||||
delta.Calculate();
|
||||
for (auto it : clientMap) {
|
||||
it.second.Update(delta.GetDelta());
|
||||
}
|
||||
//TODO Delta::Calculate();
|
||||
// for (auto it : clientMap) {
|
||||
// it.second.Update(Delta::GetTime());
|
||||
// }
|
||||
|
||||
//handle output...
|
||||
//TODO...
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
#include "client_data.hpp"
|
||||
|
||||
#include "delta.hpp"
|
||||
#include "packet_list.hpp"
|
||||
#include "config_utility.hpp"
|
||||
#include "udp_network_utility.hpp"
|
||||
@@ -37,7 +36,6 @@ private:
|
||||
|
||||
//members
|
||||
bool running = false;
|
||||
Delta delta;
|
||||
std::map<int, ClientData> clientMap;
|
||||
int maxClients = SDLNET_MAX_UDPCHANNELS;
|
||||
int uniqueIndex = 0;
|
||||
|
||||
Reference in New Issue
Block a user