diff --git a/11 - Animation Part 1/resources/Viking.json b/11 - Animation Part 1/resources/Viking.json new file mode 100644 index 0000000..8fe1f78 --- /dev/null +++ b/11 - Animation Part 1/resources/Viking.json @@ -0,0 +1,183 @@ +{"frames": [ + +{ + "filename": "attack_0.png", + "frame": {"x":0,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "attack_1.png", + "frame": {"x":200,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "attack_2.png", + "frame": {"x":400,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_0.png", + "frame": {"x":600,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_1.png", + "frame": {"x":800,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_2.png", + "frame": {"x":0,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_3.png", + "frame": {"x":200,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_0.png", + "frame": {"x":400,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_1.png", + "frame": {"x":600,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_2.png", + "frame": {"x":800,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_3.png", + "frame": {"x":0,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_4.png", + "frame": {"x":200,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_5.png", + "frame": {"x":400,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_0.png", + "frame": {"x":600,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_1.png", + "frame": {"x":800,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_2.png", + "frame": {"x":0,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_3.png", + "frame": {"x":200,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_4.png", + "frame": {"x":400,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_5.png", + "frame": {"x":600,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}], +"meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "1.0", + "image": "Viking.png", + "format": "RGBA8888", + "size": {"w":1000,"h":580}, + "scale": "1", + "smartupdate": "$TexturePacker:SmartUpdate:faeaa13596034d08083436ea66f24413:0d097659d4a2cf5e39f760e16f4e7ee1:d64eee29f56c425b737f70fc9128c68e$" +} +} diff --git a/12 - Animation Part 2/resources/Viking.json b/12 - Animation Part 2/resources/Viking.json new file mode 100644 index 0000000..8fe1f78 --- /dev/null +++ b/12 - Animation Part 2/resources/Viking.json @@ -0,0 +1,183 @@ +{"frames": [ + +{ + "filename": "attack_0.png", + "frame": {"x":0,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "attack_1.png", + "frame": {"x":200,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "attack_2.png", + "frame": {"x":400,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_0.png", + "frame": {"x":600,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_1.png", + "frame": {"x":800,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_2.png", + "frame": {"x":0,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_3.png", + "frame": {"x":200,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_0.png", + "frame": {"x":400,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_1.png", + "frame": {"x":600,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_2.png", + "frame": {"x":800,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_3.png", + "frame": {"x":0,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_4.png", + "frame": {"x":200,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_5.png", + "frame": {"x":400,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_0.png", + "frame": {"x":600,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_1.png", + "frame": {"x":800,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_2.png", + "frame": {"x":0,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_3.png", + "frame": {"x":200,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_4.png", + "frame": {"x":400,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_5.png", + "frame": {"x":600,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}], +"meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "1.0", + "image": "Viking.png", + "format": "RGBA8888", + "size": {"w":1000,"h":580}, + "scale": "1", + "smartupdate": "$TexturePacker:SmartUpdate:faeaa13596034d08083436ea66f24413:0d097659d4a2cf5e39f760e16f4e7ee1:d64eee29f56c425b737f70fc9128c68e$" +} +} diff --git a/12 - Animation Part 2/src/Animation.cpp b/12 - Animation Part 2/src/Animation.cpp index 53861f9..dcae251 100644 --- a/12 - Animation Part 2/src/Animation.cpp +++ b/12 - Animation Part 2/src/Animation.cpp @@ -59,6 +59,7 @@ void Animation::IncrementFrame() void Animation::Reset() { currentFrameIndex = 0; + currentFrameTime = 0.f; } void Animation::SetDirection(FacingDirection dir) diff --git a/13 - Tile Map Parser Part 1/resources/Viking.json b/13 - Tile Map Parser Part 1/resources/Viking.json new file mode 100644 index 0000000..8fe1f78 --- /dev/null +++ b/13 - Tile Map Parser Part 1/resources/Viking.json @@ -0,0 +1,183 @@ +{"frames": [ + +{ + "filename": "attack_0.png", + "frame": {"x":0,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "attack_1.png", + "frame": {"x":200,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "attack_2.png", + "frame": {"x":400,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_0.png", + "frame": {"x":600,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_1.png", + "frame": {"x":800,"y":0,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_2.png", + "frame": {"x":0,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "idle_3.png", + "frame": {"x":200,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_0.png", + "frame": {"x":400,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_1.png", + "frame": {"x":600,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_2.png", + "frame": {"x":800,"y":145,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_3.png", + "frame": {"x":0,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_4.png", + "frame": {"x":200,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "jump_5.png", + "frame": {"x":400,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_0.png", + "frame": {"x":600,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_1.png", + "frame": {"x":800,"y":290,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_2.png", + "frame": {"x":0,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_3.png", + "frame": {"x":200,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_4.png", + "frame": {"x":400,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "run_5.png", + "frame": {"x":600,"y":435,"w":200,"h":145}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":200,"h":145}, + "sourceSize": {"w":200,"h":145}, + "pivot": {"x":0.5,"y":0.5} +}], +"meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "1.0", + "image": "Viking.png", + "format": "RGBA8888", + "size": {"w":1000,"h":580}, + "scale": "1", + "smartupdate": "$TexturePacker:SmartUpdate:faeaa13596034d08083436ea66f24413:0d097659d4a2cf5e39f760e16f4e7ee1:d64eee29f56c425b737f70fc9128c68e$" +} +} diff --git a/13 - Tile Map Parser Part 1/src/Animation.cpp b/13 - Tile Map Parser Part 1/src/Animation.cpp index 53861f9..dcae251 100644 --- a/13 - Tile Map Parser Part 1/src/Animation.cpp +++ b/13 - Tile Map Parser Part 1/src/Animation.cpp @@ -59,6 +59,7 @@ void Animation::IncrementFrame() void Animation::Reset() { currentFrameIndex = 0; + currentFrameTime = 0.f; } void Animation::SetDirection(FacingDirection dir) diff --git a/Xcode Build/that game engine/that_game_engine/Animation.cpp b/Xcode Build/that game engine/that_game_engine/Animation.cpp index 53861f9..450e571 100644 --- a/Xcode Build/that game engine/that_game_engine/Animation.cpp +++ b/Xcode Build/that game engine/that_game_engine/Animation.cpp @@ -45,20 +45,13 @@ bool Animation::UpdateFrame(float deltaTime) void Animation::IncrementFrame() { - // check if we reached the last frame - if (currentFrameIndex == (frames.size() - 1)) - { - currentFrameIndex = 0; - } - else - { - currentFrameIndex++; - } + currentFrameIndex = (currentFrameIndex + 1) % frames.size(); } void Animation::Reset() { currentFrameIndex = 0; + currentFrameTime = 0.f; } void Animation::SetDirection(FacingDirection dir) diff --git a/Xcode Build/that game engine/that_game_engine/C_TileSprite.cpp b/Xcode Build/that game engine/that_game_engine/C_TileSprite.cpp index 06c223f..0d0a42b 100644 --- a/Xcode Build/that game engine/that_game_engine/C_TileSprite.cpp +++ b/Xcode Build/that game engine/that_game_engine/C_TileSprite.cpp @@ -35,19 +35,18 @@ void C_TileSprite::SetPosition(int x, int y) void C_TileSprite::Draw(Window& window) { + const int additionalToDraw = 2; + // Set up culling space + // In future we only want to perform these calculations once for all tiles. const sf::FloatRect viewSpace = window.GetViewSpace(); - const sf::Vector2i viewBegin(floor(viewSpace.left / size * scale), floor(viewSpace.top / size * scale)); - const sf::Vector2i viewEnd(ceil((viewSpace.left + viewSpace.width) / size * scale), ceil((viewSpace.top + viewSpace.height) / size * scale)); + const sf::Vector2i viewBegin(floor(viewSpace.left / (size * scale)), floor(viewSpace.top / (size * scale))); + const sf::Vector2i viewEnd(ceil((viewSpace.left + viewSpace.width) / (size * scale)), ceil((viewSpace.top + viewSpace.height) / (size * scale))); - if(x > viewBegin.x && x < viewEnd.x && - y > viewBegin.y && y < viewEnd.y) + if(x > viewBegin.x - additionalToDraw && x < viewEnd.x + additionalToDraw && + y > viewBegin.y - additionalToDraw && y < viewEnd.y + additionalToDraw) { window.Draw(sprite); } - else - { - int x; - } }