Skip to content

Commit

Permalink
Add key mapping via symbolic tileset, close #30 and #11
Browse files Browse the repository at this point in the history
  • Loading branch information
VectorWolf committed Jul 6, 2019
1 parent 3ce6824 commit db778d1
Show file tree
Hide file tree
Showing 10 changed files with 340 additions and 33 deletions.
48 changes: 45 additions & 3 deletions data/events.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,57 @@
<tileset name="events_symbol" tilewidth="60" tileheight="60" tilecount="100" columns="10">
<image source="tilesets/symbol_numbers.png" width="600" height="600"/>
<tile id="0" type="AeMoveSustained">
<properties>
<property name="DIRECTION" value="UP"/>
<property name="NAME" value="MoveUp"/>
<property name="PRIORITY" value="LOW"/>
<property name="SIGNAL" value="STOP"/>
</properties>
</tile>
<tile id="1" type="AeMoveSustained">
<properties>
<property name="DIRECTION" value="DOWN"/>
<property name="NAME" value="MoveDown"/>
<property name="PRIORITY" value="LOW"/>
<property name="SIGNAL" value="STOP"/>
</properties>
</tile>
<tile id="2" type="AeMoveSustained">
<properties>
<property name="DIRECTION" value="RIGHT"/>
<property name="NAME" value="Moveleft"/>
<property name="NAME" value="MoveRight"/>
<property name="PRIORITY" value="LOW"/>
<property name="SIGNAL" value="STOP"/>
</properties>
</tile>
<tile id="1" type="AeMoveDirection">
<tile id="3" type="AeMoveSustained">
<properties>
<property name="DIRECTION" value="LEFT"/>
<property name="NAME" value="MoveLeft"/>
<property name="PRIORITY" value="LOW"/>
<property name="SIGNAL" value="STOP"/>
</properties>
</tile>
<tile id="4" type="AeMoveSustained">
<properties>
<property name="DIRECTION" value="CURRENT"/>
<property name="NAME" value="MoveLast"/>
<property name="SIGNAL" value="STOP"/>
</properties>
</tile>
<tile id="5" type="AeMoveDirection">
<properties>
<property name="DIRECTION" value="DOWN"/>
<property name="NAME" value="Movedown"/>
<property name="DURATION" value="150"/>
<property name="NAME" value="WalkDown"/>
<property name="PRIORITY" value="HIGH"/>
<property name="SIGNAL" value="STOP"/>
</properties>
</tile>
<tile id="10" type="AeMoveDirection">
<properties>
<property name="DIRECTION" value="RIGHT"/>
<property name="NAME" value="Rights"/>
</properties>
</tile>
</tileset>
17 changes: 17 additions & 0 deletions data/key_mapping.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,11 @@
</tile>
<tile id="14" type="KEY_MAPPING">
<properties>
<property name="DOWN" type="bool" value="true"/>
<property name="EVENT" value="MoveUp"/>
<property name="KEYPRESS" value="W"/>
<property name="SUSTAINED" type="bool" value="false"/>
<property name="UP" type="bool" value="false"/>
</properties>
</tile>
<tile id="15" type="KEY_MAPPING">
Expand Down Expand Up @@ -128,17 +132,25 @@
</tile>
<tile id="25" type="KEY_MAPPING">
<properties>
<property name="DOWN" type="bool" value="true"/>
<property name="EVENT" value="MoveLeft"/>
<property name="KEYPRESS" value="A"/>
</properties>
</tile>
<tile id="26" type="KEY_MAPPING">
<properties>
<property name="DOWN" type="bool" value="true"/>
<property name="EVENT" value="MoveDown"/>
<property name="KEYPRESS" value="S"/>
</properties>
</tile>
<tile id="27" type="KEY_MAPPING">
<properties>
<property name="DOWN" type="bool" value="true"/>
<property name="EVENT" value="MoveRight"/>
<property name="KEYPRESS" value="D"/>
<property name="SUSTAINED" type="bool" value="false"/>
<property name="UP" type="bool" value="false"/>
</properties>
</tile>
<tile id="28" type="KEY_MAPPING">
Expand Down Expand Up @@ -238,7 +250,9 @@
</tile>
<tile id="47" type="KEY_MAPPING">
<properties>
<property name="DOWN" type="bool" value="false"/>
<property name="KEYPRESS" value="?"/>
<property name="UP" type="bool" value="false"/>
</properties>
</tile>
<tile id="48" type="KEY_MAPPING">
Expand All @@ -258,6 +272,8 @@
</tile>
<tile id="51" type="KEY_MAPPING">
<properties>
<property name="DOWN" type="bool" value="true"/>
<property name="EVENT" value="MoveLast"/>
<property name="KEYPRESS" value="Space"/>
</properties>
</tile>
Expand Down Expand Up @@ -298,6 +314,7 @@
</tile>
<tile id="59" type="KEY_MAPPING">
<properties>
<property name="DOWN" type="bool" value="false"/>
<property name="KEYPRESS" value="Right"/>
</properties>
</tile>
Expand Down
27 changes: 25 additions & 2 deletions src/core/gameinfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,38 @@ bool GameInfo::fetch_player() {

/**
* @brief Updates the map
* @return @c bool false if quit
*/

void GameInfo::update() {
bool GameInfo::update() {

//Event handler
SDL_Event e;
while( SDL_PollEvent( &e ) != 0 ) {
//User requests quit
if( e.type == SDL_QUIT )
{
return false;
}
//User presses a key
else if( e.type == SDL_KEYDOWN && e.key.repeat == m_key_repeat) {
m_map.process_key_down(e);
}
else if( e.type == SDL_KEYUP && e.key.repeat == m_key_repeat) {
m_map.process_key_up(e);
}
}

m_map.process_keys_sustained();

if(m_cam_bound) {
m_camera.x = m_player->get_x_center() - (m_camera.w / 2);
m_camera.y = m_player->get_y_center() - (m_camera.h / 2);
}

m_map.update();
}
return true;
}

/**
* @brief Draws the current map in correlation to the camera to screen
Expand Down
3 changes: 2 additions & 1 deletion src/core/gameinfo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class GameInfo {
void close();

void render();
void update();
bool update();

bool load_map(std::string mapfile);
bool fetch_player();
Expand All @@ -47,6 +47,7 @@ class GameInfo {
Actor* m_player = nullptr;

bool m_cam_bound = true;
bool m_key_repeat = false;

private:
SDL_Window* m_window = nullptr;
Expand Down
18 changes: 10 additions & 8 deletions src/core/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,21 @@ int main()
std::cerr << "Map couldn't load\n";
}
else {
bool player_input = true;

if(!game.fetch_player()) {
std::cerr << "Could not fetch player. Input deactivated!\n";
player_input = false;
game.m_cam_bound = false;
}
//Event handler
SDL_Event e;
//SDL_Event e;

//Main loop flag
bool quit = false;
//bool quit = false;

//While application is running
while( !quit ){
while(game.update()) {
game.render();
/*
//Handle events on queue
while( SDL_PollEvent( &e ) != 0 ) {
//User requests quit
Expand Down Expand Up @@ -109,9 +111,9 @@ int main()
break;
}
}
}
game.update();
game.render();
}*/
//game.update();
//game.render();
}
}
return 0;
Expand Down
6 changes: 3 additions & 3 deletions src/event/ae_move_sustained.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,15 @@ EventSignal AeMoveSustained::process(Actor& actor) {
}
else {
//actor.animate(AnimationType::idle, m_direction);
actor.unblock_event(m_alias);
//actor.unblock_event(m_alias);
return EventSignal::end;
}
actor.block_event(m_alias);
//actor.block_event(m_alias);
//actor.set_cooldown(m_alias, 0.5);
return signal();
}
else {
actor.unblock_event(m_alias);
//actor.unblock_event(m_alias);
return EventSignal::end;
}
}
Expand Down
1 change: 1 addition & 0 deletions src/map/layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,7 @@ std::vector<Actor*> Layer::get_actors(std::string name, Direction direction, Ani
* @param x_max, y_max The maximum depth of intersection by axis
* @param base_map Reference on map instance used for looking up tiles by their gid
* @param collided A container to which colliding actors are added
* @param type The type of the hitbox
* @return @c bool which indicates collision
*/
bool Layer::collide(const SDL_Rect* rect, int& x_max, int& y_max, const MapData& base_map, std::vector<Actor*>& collided, std::string type){
Expand Down
Loading

0 comments on commit db778d1

Please sign in to comment.