| @@ -1,6 +1,6 @@ | |||
| # Makefile generated by smake. | |||
| PROJNAME = cpplat | |||
| PROJNAME = swan | |||
| PROJTYPE = exe | |||
| SRCS = src/Body.cc src/Chunk.cc src/Game.cc src/main.cc src/Player.cc src/WorldPlane.cc | |||
| @@ -1,3 +1,3 @@ | |||
| PROJNAME = cpplat | |||
| PROJNAME = swan | |||
| PKGS = sfml-all | |||
| LDFLAGS += -lstdc++ | |||
| @@ -1,5 +1,6 @@ | |||
| # Game Idea | |||
| # Game Idea: Swan | |||
| * Working title: Swan (maybe the final name should be 'Project: Swan'?) | |||
| * 2D tile-based platformer-esque game | |||
| * Circuit network shit | |||
| * Move along a third axis, the Z axis | |||
| @@ -1,5 +1,7 @@ | |||
| #include "Body.h" | |||
| namespace Swan { | |||
| void Body::friction(float coef) { | |||
| force_ += -vel_ * coef; | |||
| } | |||
| @@ -23,3 +25,5 @@ void Body::update(float dt) { | |||
| pos_ += vel_ * dt; | |||
| force_ = { 0, 0 }; | |||
| } | |||
| } | |||
| @@ -4,6 +4,8 @@ | |||
| #include "common.h" | |||
| namespace Swan { | |||
| class Body { | |||
| public: | |||
| Vec2 force_ = { 0, 0 }; | |||
| @@ -21,3 +23,5 @@ public: | |||
| void outline(Win &win); | |||
| void update(float dt); | |||
| }; | |||
| } | |||
| @@ -2,9 +2,13 @@ | |||
| #include <string.h> | |||
| namespace Swan { | |||
| void Chunk::clear() { | |||
| memset(tiles_, 0, sizeof(tiles_)); | |||
| } | |||
| void Chunk::draw(Win &win) { | |||
| } | |||
| } | |||
| @@ -3,6 +3,8 @@ | |||
| #include "common.h" | |||
| #include "Tile.h" | |||
| namespace Swan { | |||
| class Chunk { | |||
| public: | |||
| int x_; | |||
| @@ -12,3 +14,5 @@ public: | |||
| void clear(); | |||
| void draw(Win &win); | |||
| }; | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| #include "Game.h" | |||
| namespace Swan { | |||
| void Game::registerTile(std::string &name, Tile &tile) { | |||
| Tile::TileID id = registered_tiles_.size(); | |||
| registered_tiles_.push_back(tile); | |||
| @@ -28,3 +30,5 @@ void Game::tick() { | |||
| for (WorldPlane *plane: planes_) | |||
| plane->tick(); | |||
| } | |||
| } | |||
| @@ -9,6 +9,8 @@ | |||
| #include "Player.h" | |||
| #include "Tile.h" | |||
| namespace Swan { | |||
| class Game { | |||
| public: | |||
| Player *player_; | |||
| @@ -24,3 +26,5 @@ public: | |||
| void update(float dt); | |||
| void tick(); | |||
| }; | |||
| } | |||
| @@ -1,5 +1,12 @@ | |||
| #include "Player.h" | |||
| namespace Swan { | |||
| const float Player::force = 600; | |||
| const float Player::friction = 100; | |||
| const float Player::mass = 80; | |||
| const Vec2 Player::size = Vec2(1, 2); | |||
| using Keyboard = sf::Keyboard; | |||
| void Player::draw(Win &win) { | |||
| @@ -8,15 +15,17 @@ void Player::draw(Win &win) { | |||
| void Player::update(float dt) { | |||
| if (Keyboard::isKeyPressed(Keyboard::W) || Keyboard::isKeyPressed(Keyboard::Up)) | |||
| body_.force_.y -= force; | |||
| body_.force_ += Vec2(0, -force); | |||
| if (Keyboard::isKeyPressed(Keyboard::S) || Keyboard::isKeyPressed(Keyboard::Down)) | |||
| body_.force_.y += force; | |||
| body_.force_ += Vec2(0, force); | |||
| if (Keyboard::isKeyPressed(Keyboard::A) || Keyboard::isKeyPressed(Keyboard::Left)) | |||
| body_.force_.x -= force; | |||
| body_.force_ += Vec2(-force, 0); | |||
| if (Keyboard::isKeyPressed(Keyboard::D) || Keyboard::isKeyPressed(Keyboard::Right)) | |||
| body_.force_.x += force; | |||
| body_.force_ += Vec2(force, 0); | |||
| body_.friction(friction); | |||
| body_.gravity(); | |||
| body_.update(dt); | |||
| } | |||
| } | |||
| @@ -1,24 +1,25 @@ | |||
| #pragma once | |||
| #include <SFML/Graphics.hpp> | |||
| #include "common.h" | |||
| #include "Body.h" | |||
| namespace Swan { | |||
| class Player { | |||
| public: | |||
| Player(Vec2 pos): | |||
| body_(pos, Vec2(width, height), mass) {} | |||
| body_(pos, size, mass) {} | |||
| void draw(Win &win); | |||
| void update(float dt); | |||
| private: | |||
| static constexpr float force = 600; | |||
| static constexpr float friction = 100; | |||
| static constexpr float mass = 80; | |||
| static constexpr float width = 1; | |||
| static constexpr float height = 2; | |||
| static const float force; | |||
| static const float friction; | |||
| static const float mass; | |||
| static const Vec2 size; | |||
| Body body_; | |||
| }; | |||
| } | |||
| @@ -2,9 +2,13 @@ | |||
| #include <stdint.h> | |||
| namespace Swan { | |||
| class Tile { | |||
| public: | |||
| using TileID = uint16_t; | |||
| Tile(std::string name); | |||
| }; | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| #include "WorldPlane.h" | |||
| namespace Swan { | |||
| void WorldPlane::draw(Win &win) { | |||
| } | |||
| @@ -8,3 +10,5 @@ void WorldPlane::update(float dt) { | |||
| void WorldPlane::tick() { | |||
| } | |||
| } | |||
| @@ -5,6 +5,8 @@ | |||
| #include "common.h" | |||
| #include "Chunk.h" | |||
| namespace Swan { | |||
| class WorldPlane { | |||
| public: | |||
| std::vector<Chunk> chunks_; | |||
| @@ -17,3 +19,5 @@ public: | |||
| void update(float dt); | |||
| void tick(); | |||
| }; | |||
| } | |||
| @@ -3,10 +3,12 @@ | |||
| #include <SFML/System/Vector2.hpp> | |||
| #include <SFML/Graphics.hpp> | |||
| #define UNIT_SIZE 12.0 | |||
| #define TICK_RATE 20 | |||
| #define CHUNK_HEIGHT 32 | |||
| #define CHUNK_WIDTH 32 | |||
| namespace Swan { | |||
| static constexpr float UNIT_SIZE = 12; | |||
| static constexpr int TICK_RATE = 20; | |||
| static constexpr int CHUNK_HEIGHT = 32; | |||
| static constexpr int CHUNK_WIDTH = 32; | |||
| class Vec2: public sf::Vector2<float> { | |||
| public: | |||
| @@ -65,3 +67,5 @@ public: | |||
| window_.draw(drawable, transform_); | |||
| } | |||
| }; | |||
| } | |||
| @@ -6,14 +6,16 @@ | |||
| #include "Player.h" | |||
| #include "Game.h" | |||
| double getTime() { | |||
| using namespace Swan; | |||
| static double getTime() { | |||
| struct timespec ts; | |||
| clock_gettime(CLOCK_MONOTONIC, &ts); | |||
| return (double)ts.tv_sec + (double)ts.tv_nsec / 1000000000.0; | |||
| } | |||
| template<typename T> | |||
| void draw_ents(std::vector<T> ents) { | |||
| static void draw_ents(std::vector<T> ents) { | |||
| for (auto &ent: ents) | |||
| ent.draw(); | |||
| } | |||