rexim / beatwave Goto Github PK
View Code? Open in Web Editor NEWA musical puzzle game
License: MIT License
A musical puzzle game
License: MIT License
@IngvarJackal pointed out that building instructions only for NixOS makes the project look like it works only on NixOS. We need to make the instructions more general.
Something similar to the Aseprite's approach: https://github.com/aseprite/aseprite/tree/e8ecbbb4d7f6cda65440943e720901e670aab244/third_party
Areas that you can go to only if you have a certain color. The player can change his/her own color after a certain action.
It will give us more possibilities for describing musical puzzles.
cc @Minoru
Extract tunnel into an entity and implement the entire wall hitting process with communication between Player
and Tunnel
Extracted from #10
When the player hits the wall play death animation.
It should have a dedicated folder. Similar to core
, beatwave
, etc. And should never depend on SFML!
Use case:
AnimatedGroup<float, sf::Vector2f, sf::Color>
circle(10.0f, sf::Vector2f(100.0f, 100.0f), sf::Color::Red);
circle.get<0>().animate(from(10.0f).to(20.0f).during(1000));
circle.get<2>().animate(from(sf::Color::Red).to(sf::Color::Blue).during(1000));
circle.tick(100); // ticks for all of the values in the group
It will allow the following things:
class Circle: public AnimatedGroup<float, sf::Vector2f, sf::Color>
{
public:
enum Property
{
Radius = 0,
Position,
Color
};
void render(sf::RenderTarget *renderTarget)
{
auto radius = get<Radius>();
sf::CircleShape circle(radius);
circle.setFillColor(get<Color>());
circle.setPosition(get<Position>() - sf::Vector2f(radius, radius));
renderTarget->draw(circle)
}
};
Circle circle(10.0f, sf::Vector2f(100.0f, 100.0f), sf::Color::Red);
circle.get<Circle::Radius>().animate(from(10.0f).to(20.0f).during(1000));
circle.render(renderTarget);
It should be similar to AnimatedGroup::tick(). It should invoke Animated<T>::stop()
for each of the object in the group.
The player should die on hitting the wall
Suggested by @Minoru
Clang provide more meaningful compilation messages than gcc
It should be always be either
from(a).to(b).during(t)
or
from(a).by(da).during(t)
The current implementation allow to change to order of the arguments. We need to make it strict by separating them into different classes. We need at least two new classes: ToBy<T>
and During<T>
.
from(a: T): ToBy<T>
ToBy<T>::to(a: T): During<T>
ToBy<T>::by(da: T): During<T>
During<T>::during(t: int32_t): AnimationPtr<T>
Split in #138
Design a level with a simple drum sequence using only tunnel turns. Adjust all the transition times as needed.
Suggested by @ForNeVeR
Why not? It's simpler and shorter.
Extracted from #10
Add splat effect to death animation. Simply some random drops flying away from the center of the player.
Right now it can only invoke Animated<T>::tick()
. Make it take an std::function
and allow it to do what it wants with the animated object.
Extracted from #42
src/
foldersrc/
a include rootG
Player is moved to the beginning of the level hits the wall again and dies again
The player state should be reset without dying in the middle of the process
We need a better design for describing states and transitions
Because a plain linear transition is boring sometimes.
In LinearAnimationBuilder the operator LinearAnimation<T>*
returns a heap allocated object which isn't deleted hence causing a memory leak.
raw pointers donot represent ownership and by giving away the ownership there is a leak.
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-raw
use std::unique_ptr
instead.
Why the state of Animation
class returns by value but not reference?
class Animation
{
virtual State getCurrentState() const = 0; // <<
};
Close #6
There should be an automatic build (and, in future, test) process. Travis, for example.
Suggested by @keddelzz
begin(...)
.then(...)
.then(...)
.then(...)
.end()
begin(t: T): SeqBlock<T>
SeqBlock<T>::then(a: AnimationPtr<T>): SeqBlock<T>
SeqBlock<T>::end(): AnimationPtr<T>
Derived from #57 (comment)
See https://github.com/voldyman/mdown/blob/master/.dir-locals.el#L14 for a reference.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.