fossasia / flappy-svg

Flappy Bird in SVG. Play it at http://fossasia.github.io/flappy-svg/
Other
1.6k stars 157 forks source link

Restructure backgrounds to levels #90

Open niccokunzmann opened 8 years ago

niccokunzmann commented 8 years ago

Each level has

In a level.js file:

Add methods:

Add functions:

The idea is to create good code. This is the draft and it may need to change once started.

Comment if you would like to work on this.

SilentFlame commented 8 years ago

@niccokunzmann I can give a try.

niccokunzmann commented 8 years ago

@SilentFlame Sure, you are welcome. You do not have to do everything at once. You can split it up into several pull-requests.

hkveeranki commented 8 years ago

i am interested in working on this. I have a doubt . In order to add this we need to change some part of code in otherfiles as well right. like loading backgrounds and stuff

niccokunzmann commented 8 years ago

Yes. It is a refactoring that touches a lot. We will gain in the long run. You can start it by creating the object with the interface mentioned above. The methods can be filled step by step and it does not need to be you who does everything.

Some reading to the why: https://en.wikipedia.org/wiki/Technical_debt

hkveeranki commented 7 years ago

@niccokunzmann These levels corresponds to game levels right ?

Also

Level.show() Level.start() Level.stop() Level.hide()

What does they do? I assume show and hides shows and hides the obstacles and backgrounds. Am I right? What about the other two ?

niccokunzmann commented 7 years ago

In the beginning, we can choose levels: Gotham or desert. Show and hide allow to show these levels. start() and stop() are used for playing them.

niccokunzmann commented 7 years ago

Now that I read your code, I know more what I am aiming to.

Currently, the data (not functionality) for a level is spread across these files:

If we can put this all together in one file, we can add new levels more easily.

var level_specifications = [
    {
        "name" : "Desert",
        "backgrounds" : [
            {
                "layer" : "DayAndNight",
                "velocity" : -20
            },
            {
                "layer" : "background",
                "velocity" : -7
            },
            {
                "layer" : "SunAndMoon",
                "velocity" : 1
            },
            {
                "layer" : "sky",
                "velocity" : ???
            }
        ],
        "obstacles" : [
            {
                "layer" : "cactus",
                "velocity" : -7
            }
        ]
    },
    {
        "name" : Gotham",
        "backgrounds" : [
            {
                "layer" : "Gotham",
                "velocity" : -7
            }
        ],
        "obstacles" : [
            {
                "layer" : "Gotham_obstacles",
                "velocity" : -7
            }
        ]
    }
]

character_specifications = [
    "bird", // we can add more parameters like gravity and flap speed
    "bat",
    "alien",
    "flappydino",
    "helicopter"
] 
niccokunzmann commented 7 years ago

In future, if it is possible to add a new background to the svg file and then edit this specification and that is all, this is a huge relief and gives us a lot of freedom in the functionality. It would also make it easier to split up the svg file into several smaller svg files without touching this specification.

hkveeranki commented 7 years ago

@niccokunzmann I made a change to the level specification thing to make it look some what clear. Please Have a look and comment on the status.

niccokunzmann commented 7 years ago

@harry-7 I commented. I hope my absence does not discourage you. I was working on this: https://www.youtube.com/watch?v=38JN2JdNnMY&feature=youtu.be

hkveeranki commented 7 years ago

@niccokunzmann Yeah never mind. The video was cool :). Even though I did not understand it completely. It was cool.

hkveeranki commented 7 years ago

@niccokunzmann In the above checklist I think we need to couple of changes.

  • [ ] getAllLevels()

This is not needed anymore .

And except level.start() and level.stop() all the remaining are implemented may be you can check them. What do you say ?

niccokunzmann commented 7 years ago

I will check them as soon as they are used in the program and replaced the old functionality. This is as soon as the functionality is not in these files any more.

hkveeranki commented 7 years ago

hey @niccokunzmann . Can I take this up ? Or is the GCI thing still going on ?

niccokunzmann commented 7 years ago

@harry-7 sure you can take this up, regardless of GCI going on or not.

hkveeranki commented 6 years ago

@niccokunzmann what is the idea behind level.start() and level.stop() methods? as in what work needs to be done by them?