summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Dilly <bdilly@profusion.mobi>2012-09-05 21:49:16 +0000
committerBruno Dilly <bdilly@profusion.mobi>2012-09-05 21:49:16 +0000
commitd121214123a62217313083a861fd6daf37661ff6 (patch)
tree412bbecbbd644ef133a59fd8f825f6c4bbc38645
efbb: Escape from Booty Bay
Escape from Booty Bay is a physics game that explore EPhysics amazing features. Please, try it and send me feedback. Bug reports and new levels are very welcome. SVN revision: 76207
-rw-r--r--.gitignore39
-rw-r--r--AUTHORS3
-rw-r--r--COPYING26
-rw-r--r--COPYING_ARTS70
-rw-r--r--COPYING_FONTS59
-rw-r--r--COPYING_SOUNDS25
-rw-r--r--ChangeLog0
-rw-r--r--INSTALL21
-rw-r--r--Makefile.am16
-rw-r--r--NEWS0
-rw-r--r--README10
-rw-r--r--TODO0
-rwxr-xr-xautogen.sh15
-rw-r--r--configure.ac166
-rw-r--r--data/Makefile.am3
-rw-r--r--data/ephysics_game.edjbin0 -> 41469 bytes
-rw-r--r--data/images/Makefile.am33
-rw-r--r--data/images/bg1_ground.pngbin0 -> 4176 bytes
-rw-r--r--data/images/bg1_mountains.pngbin0 -> 6980 bytes
-rw-r--r--data/images/bg1_sky.pngbin0 -> 21848 bytes
-rw-r--r--data/images/bg1_sun.pngbin0 -> 3121 bytes
-rw-r--r--data/images/bg1_trees.pngbin0 -> 21590 bytes
-rw-r--r--data/images/bg2_beach.pngbin0 -> 7921 bytes
-rw-r--r--data/images/bg2_sand.pngbin0 -> 3475 bytes
-rw-r--r--data/images/bg2_sky.pngbin0 -> 9507 bytes
-rw-r--r--data/images/bg3_fog.pngbin0 -> 5623 bytes
-rw-r--r--data/images/bg3_mountain.pngbin0 -> 8367 bytes
-rw-r--r--data/images/bg3_sea1.pngbin0 -> 2978 bytes
-rw-r--r--data/images/bg3_sea2.pngbin0 -> 2884 bytes
-rw-r--r--data/images/bg3_sea3.pngbin0 -> 3854 bytes
-rw-r--r--data/images/bg3_sea4.pngbin0 -> 3841 bytes
-rw-r--r--data/images/bg3_sky.pngbin0 -> 9062 bytes
-rw-r--r--data/images/bomb.pngbin0 -> 1716 bytes
-rw-r--r--data/images/boss.pngbin0 -> 6628 bytes
-rw-r--r--data/images/btn_level-1.pngbin0 -> 5289 bytes
-rw-r--r--data/images/pirate.pngbin0 -> 4811 bytes
-rw-r--r--data/images/stone_120_40.pngbin0 -> 2025 bytes
-rw-r--r--data/images/stone_40_120.pngbin0 -> 2108 bytes
-rw-r--r--data/images/stone_40_40.pngbin0 -> 1929 bytes
-rw-r--r--data/images/wood_120_20.pngbin0 -> 1854 bytes
-rw-r--r--data/images/wood_20_120.pngbin0 -> 1948 bytes
-rw-r--r--data/images/wood_20_40.pngbin0 -> 1659 bytes
-rw-r--r--data/images/wood_40_20.pngbin0 -> 1643 bytes
-rw-r--r--data/levels/Makefile.am23
-rw-r--r--data/levels/level00.cfg73
-rw-r--r--data/levels/level01.cfg99
-rw-r--r--data/levels/level02.cfg175
-rw-r--r--data/levels/level03.cfg263
-rw-r--r--data/levels/level04.cfg194
-rw-r--r--data/levels/level05.cfg264
-rw-r--r--data/levels/levels.list6
-rw-r--r--data/levels/levelskel.txt37
-rw-r--r--data/sound/Makefile.am12
-rw-r--r--data/sound/bars.wavbin0 -> 545324 bytes
-rw-r--r--data/sound/battle.wavbin0 -> 5349824 bytes
-rw-r--r--data/sound/button.wavbin0 -> 24796 bytes
-rw-r--r--data/sound/cannon.wavbin0 -> 1174492 bytes
-rw-r--r--data/sound/main.wavbin0 -> 6500940 bytes
-rw-r--r--data/sound/pop.wavbin0 -> 25094 bytes
-rw-r--r--data/theme/Makefile.am37
-rw-r--r--data/theme/ammo.edc77
-rw-r--r--data/theme/bar.edc98
-rw-r--r--data/theme/boom.edc179
-rw-r--r--data/theme/button.edc185
-rw-r--r--data/theme/cannon.edc639
-rw-r--r--data/theme/fonts/Makefile.am4
-rw-r--r--data/theme/fonts/Woodstamp.otfbin0 -> 37992 bytes
-rw-r--r--data/theme/gengrid.edc156
-rw-r--r--data/theme/images/Makefile.am45
-rw-r--r--data/theme/images/bar1_45_21.pngbin0 -> 1136 bytes
-rw-r--r--data/theme/images/bar2_22_26.pngbin0 -> 1154 bytes
-rw-r--r--data/theme/images/bar3_23_30.pngbin0 -> 1197 bytes
-rw-r--r--data/theme/images/bar4_25_35.pngbin0 -> 1257 bytes
-rw-r--r--data/theme/images/bar5_27_39.pngbin0 -> 1289 bytes
-rw-r--r--data/theme/images/bar6_29_43.pngbin0 -> 1316 bytes
-rw-r--r--data/theme/images/bar7_32_49.pngbin0 -> 1400 bytes
-rw-r--r--data/theme/images/bar8_36_49.pngbin0 -> 1246 bytes
-rw-r--r--data/theme/images/bar_border.pngbin0 -> 1907 bytes
-rw-r--r--data/theme/images/bars.pngbin0 -> 5768 bytes
-rw-r--r--data/theme/images/bg.pngbin0 -> 29400 bytes
-rw-r--r--data/theme/images/bomb.pngbin0 -> 1716 bytes
-rw-r--r--data/theme/images/bonus_bomb.pngbin0 -> 2887 bytes
-rw-r--r--data/theme/images/btn_back.pngbin0 -> 3718 bytes
-rw-r--r--data/theme/images/btn_back_pressed.pngbin0 -> 3789 bytes
-rw-r--r--data/theme/images/btn_forward.pngbin0 -> 4138 bytes
-rw-r--r--data/theme/images/btn_forward_pressed.pngbin0 -> 4227 bytes
-rw-r--r--data/theme/images/btn_level_disabled.pngbin0 -> 4473 bytes
-rw-r--r--data/theme/images/btn_regular.pngbin0 -> 3213 bytes
-rw-r--r--data/theme/images/btn_regular_pressed.pngbin0 -> 3212 bytes
-rw-r--r--data/theme/images/btn_retry.pngbin0 -> 3586 bytes
-rw-r--r--data/theme/images/btn_retry_pressed.pngbin0 -> 3582 bytes
-rw-r--r--data/theme/images/cannon_base.pngbin0 -> 3785 bytes
-rw-r--r--data/theme/images/cannon_body.pngbin0 -> 2871 bytes
-rw-r--r--data/theme/images/explosion.pngbin0 -> 4533 bytes
-rw-r--r--data/theme/images/flag.pngbin0 -> 5338 bytes
-rw-r--r--data/theme/images/logo.pngbin0 -> 147605 bytes
-rw-r--r--data/theme/images/pirate-ship.pngbin0 -> 25108 bytes
-rw-r--r--data/theme/images/prisonbar_100.pngbin0 -> 949 bytes
-rw-r--r--data/theme/images/prisonbar_120.pngbin0 -> 952 bytes
-rw-r--r--data/theme/images/prisonbar_80.pngbin0 -> 945 bytes
-rw-r--r--data/theme/images/retry_win_bg.jpgbin0 -> 2067 bytes
-rw-r--r--data/theme/images/sailback.pngbin0 -> 10390 bytes
-rw-r--r--data/theme/images/sailfront.pngbin0 -> 12366 bytes
-rw-r--r--data/theme/images/sea-1.pngbin0 -> 3153 bytes
-rw-r--r--data/theme/images/sea-2.pngbin0 -> 2577 bytes
-rw-r--r--data/theme/images/sea-3.pngbin0 -> 3284 bytes
-rw-r--r--data/theme/images/sea-4.pngbin0 -> 3605 bytes
-rw-r--r--data/theme/images/smoke_1.pngbin0 -> 2545 bytes
-rw-r--r--data/theme/images/smoke_2.pngbin0 -> 1872 bytes
-rw-r--r--data/theme/images/smoke_3.pngbin0 -> 1860 bytes
-rw-r--r--data/theme/images/sound_off.pngbin0 -> 1393 bytes
-rw-r--r--data/theme/images/sound_on.pngbin0 -> 2607 bytes
-rw-r--r--data/theme/images/total_bar.pngbin0 -> 207 bytes
-rw-r--r--data/theme/lvlsel_win.edc66
-rw-r--r--data/theme/main.edc83
-rw-r--r--data/theme/main_win.edc342
-rw-r--r--data/theme/objects.edc111
-rw-r--r--data/theme/options.edc127
-rw-r--r--data/theme/retry_win.edc431
-rw-r--r--data/theme/score.edc69
-rw-r--r--m4/ac_attribute.m447
-rw-r--r--m4/as-expand.m443
-rw-r--r--m4/efl_compiler_flag.m457
-rw-r--r--src/Makefile.am2
-rw-r--r--src/bin/.directory2
-rw-r--r--src/bin/Makefile.am51
-rw-r--r--src/bin/bg.c218
-rw-r--r--src/bin/bg.h23
-rw-r--r--src/bin/cannon.c267
-rw-r--r--src/bin/cannon.h34
-rw-r--r--src/bin/efbb.h82
-rw-r--r--src/bin/game_world.geneet43
-rw-r--r--src/bin/level_select_screen.c122
-rw-r--r--src/bin/level_select_screen.h19
-rw-r--r--src/bin/main.c1301
-rw-r--r--src/bin/main_screen.c60
-rw-r--r--src/bin/main_screen.h16
-rw-r--r--src/bin/score.c57
-rw-r--r--src/bin/score.h20
-rw-r--r--src/bin/sound.c238
-rw-r--r--src/bin/sound.h22
-rwxr-xr-xtools/levels_create.py252
142 files changed, 7257 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..51fdb48
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,39 @@
1*~
2*.o
3*.lo
4*.la
5.libs
6.deps
7Makefile
8Makefile.in
9*.so
10/aclocal.m4
11/autom4te.cache/
12/compile
13/config.cache
14/config.guess
15/config.h
16/config.h.in
17/config.log
18/config.status
19/config.sub
20/configure
21/depcomp
22/install-sh
23/libtool
24/ltmain.sh
25/missing
26/stamp-h1
27/ABOUT-NLS
28/config.cache-env
29m4/libtool.m4
30m4/ltoptions.m4
31m4/ltsugar.m4
32m4/ltversion.m4
33m4/lt~obsolete.m4
34src/bin/efbb
35src/bin/efbb_ql
36data/theme/efbb.edj
37data/levels/levels.eet
38src/bin/game_world.c
39src/bin/game_world.h
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..87e96f4
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,3 @@
1Bruno Dilly <bdilly@profusion.mobi>
2Marina Proni <marina.proni@profusion.mobi>
3Ricardo de Almeida Gonzaga <ricardo@profusion.mobi>
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..b2d224e
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,26 @@
1Copyright notice for Escape from Booty Bay:
2
3Copyright (C) 2012 Samsung Electronics and various contributors
4 (see AUTHORS).
5
6All rights reserved.
7
8Redistribution and use in source and binary forms, with or without
9modification, are permitted provided that the following conditions are met:
10
11 1. Redistributions of source code must retain the above copyright
12 notice, this list of conditions and the following disclaimer.
13 2. Redistributions in binary form must reproduce the above copyright
14 notice, this list of conditions and the following disclaimer in the
15 documentation and/or other materials provided with the distribution.
16
17THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
18INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
19FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
20COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
21INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/COPYING_ARTS b/COPYING_ARTS
new file mode 100644
index 0000000..001c873
--- /dev/null
+++ b/COPYING_ARTS
@@ -0,0 +1,70 @@
1Images were drawn by Marina Proni <marina.proni@profusion.mobi>
2and are licensed under Creative Commons Attribution-ShareAlike 3.0
3Unported License.
4
5===============================================================================
6
7Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
8
9
10THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
11
12BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
13
141. Definitions
15
16 a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
17 b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License.
18 c. "Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.
19 d. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
20 e. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
21 f. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
22 g. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
23 h. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
24 i. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
25 j. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
26 k. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
27
282. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
29
303. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
31
32 a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
33 b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
34 c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
35 d. to Distribute and Publicly Perform Adaptations.
36
37 e. For the avoidance of doubt:
38 i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
39 ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
40 iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
41
42The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
43
444. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
45
46 a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested.
47 b. You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
48 c. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
49 d. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
50
515. Representations, Warranties and Disclaimer
52
53UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
54
556. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
56
577. Termination
58
59 a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
60 b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
61
628. Miscellaneous
63
64 a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
65 b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
66 c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
67 d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
68 e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
69 f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
70
diff --git a/COPYING_FONTS b/COPYING_FONTS
new file mode 100644
index 0000000..6a4bc69
--- /dev/null
+++ b/COPYING_FONTS
@@ -0,0 +1,59 @@
1
2
3
4
5<<<<<<<<<<<<<<<< ENGLISH >>>>>>>>>>>>>>>>>
6
7Freewares EULA ( the End User License Agreement )This document is a legal agreement between you, the end user, and Flat-it type foundry.
8
9
10By using or installing Flat it type foundry Freewares ( Free typefaces, Free brushes and Screensavers ) , you agree to be bound by the terms of this Agreement.
11Freeware means that you can download it and use it for your commercial and non-commercial works for free.
12
13Here is a list of things you could do, Only if you want to:
14* Mail me about your works
15* Link http://flat-it.com/ Download our banners
16* Send me a sample of the work you did using Flat it type foundry Freewares
17* Mail me some print material you did using Flat it type foundry Freewares
18* Credit "Flat-it"on your work
19* Smile
20
21You may not redistribute without permission.
22
23
24DISCLAIMER
25Flat-it's freewares are provided to you free of charge.
26We give no warranty in relation to these freewares, and you use them at your own risk.
27Flat-it.com will not be liable for any damage to your system, any loss or corruption of any data or software, or any other loss or damage that you may suffer as a result of downloading or using these freewares, whether it results from our negligence or in any other way.
28
29
30
31
32
33
34
35
36
37<<<<<<<<<<<<<<<< JAPANESE >>>>>>>>>>>>>>>>>
38
39フリーウェア ライセンス
40
41Flat-itから入手したフリーウェア(フリーフォント、フリーブラシ、スクリーンセイバー)の使用は以下に示すライセンスに同意する必要があります。
42フリーウェアは商用、非商用(個人使用など)に関わらす無料でご利用いただけます。著作権はFlat-it(http://flat-it.com/)にあります。
43
44使用に際しては次のリストに従って下さい。
45
46* 気が向いたらメールなどで連絡を下さい。
47* 気が向いたらFlat-it(http://flat-it.com/)にリンクして下さい。
48* 気が向いたら使用した作品のサンプル(画像など)をお送りください。
49* 気が向いたら工業製品など商業使用の際は商品をひとつ下さい。
50* 気が向いたら"Flat-it"とクレジットを入れてください
51
52また、これらのフリーウェアを再配布する場合には許可が必要です。
53
54
55免責事項
56Flat-itはこれらフリーウェアに関してお客様が被ったいかなる損害についても、一切の責任を負わないものとします。お客様ご自身の責任でご利用下さい。
57Flat-itはこれらフリーウェアの利用によって生じたいかなる保証責任も負いません。
58
59info@flat-it.com \ No newline at end of file
diff --git a/COPYING_SOUNDS b/COPYING_SOUNDS
new file mode 100644
index 0000000..8ea5e7e
--- /dev/null
+++ b/COPYING_SOUNDS
@@ -0,0 +1,25 @@
1
2=======================================================================
3
4Sampling Plus 1.0 - http://creativecommons.org/licenses/sampling+/1.0/
5 - cannon.wav - http://www.freesound.org/people/man/sounds/14616/
6 by: man (?)
7
8Attribution 3.0 Unported (CC BY 3.0) - http://creativecommons.org/licenses/by/3.0/
9 - main.wav - http://dig.ccmixter.org/dig?dig-lic=safe&dig-query=reverie%20%28small%20theme%29
10 by: _ghost (?)
11 - button.wav - http://www.freesound.org/people/junggle/sounds/29301/
12 by: JaZzy JunGgle
13 - pop.wav - http://www.freesound.org/people/HerbertBoland/sounds/33369/
14 by: Herbert Boland
15
16Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0) - http://creativecommons.org/licenses/by-nc/3.0/
17 - bars.wav - http://www.freesound.org/people/m_O_m/sounds/103361/
18 by: Michael Manzke
19 with a small cut to reduce sample lenght
20
21Royalty Free License - https://www.partnersinrhyme.com/wmcstore/faq/License.html
22 - battle.wav - http://soundcloud.com/partnersinrhyme/battle-orchestra-loop
23 by: Mark Lewis
24
25=======================================================================
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ChangeLog
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..fcc5d97
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,21 @@
1Installation Instructions
2*************************
3
4$ ./autogen.sh [--prefix=DIR]
5$ make
6$ make install
7
8It depends on:
9 * evas
10 * ecore
11 * edje
12 * elementary
13 * ephysics
14 * libcanberra
15 * geneet
16 * etrophy
17
18geneet is a python script that can be found at:
19 http://git.profusion.mobi/~leandro/geneet.html
20
21etrophy is on PROTO/etrophy
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..d831bcb
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,16 @@
1ACLOCAL_AMFLAGS = -I m4
2
3SUBDIRS = src data
4
5MAINTAINERCLEANFILES = Makefile.in ABOUT-NLS INSTALL aclocal.m4 config.guess compile \
6 config.h.in config.rpath config.sub configure install-sh \
7 ltconfig ltmain.sh missing mkinstalldirs \
8 m4/lib-link.m4 m4/lib-prefix.m4 m4/lib-ld.m4 m4/lcmessage.m4 m4/libtool.m4 m4/ulonglong.m4 \
9 m4/inttypes-pri.m4 m4/progtest.m4 m4/uintmax_t.m4 m4/lt~obsolete.m4 m4/stdint_h.m4 m4/intdiv0.m4 \
10 m4/iconv.m4 m4/isc-posix.m4 m4/inttypes.m4 m4/ltsugar.m4 m4/glibc21.m4 m4/gettext.m4 m4/ltversion.m4 \
11 m4/codeset.m4 m4/inttypes_h.m4 m4/ltoptions.m4 m4/nls.m4 \
12 stamp-h.in acconfig.h depcomp
13
14EXTRA_DIST = README AUTHORS COPYING COPYING_ARTS
15
16DISTCHECK_CONFIGURE_FLAGS = --disable-quicklaunch
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/NEWS
diff --git a/README b/README
new file mode 100644
index 0000000..202de64
--- /dev/null
+++ b/README
@@ -0,0 +1,10 @@
1Escape from Booty Bay is a physics game that explore EPhysics amazing features.
2
3It's written using the Enlightenment Foundation Libraries (EFL).
4
5See INSTALL for help on how to install.
6See COPYING for software usage, modification and redistribution license.
7See COPYING_ARTS, COPYING_FONTS and COPYING_SOUNDS for other material
8licenses.
9
10New levels are easy to be designed and are very welcome! Contribute back!
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TODO
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..4f81706
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,15 @@
1#!/bin/sh
2
3rm -rf autom4te.cache
4rm -f aclocal.m4 ltmain.sh
5
6DIRNAME=`basename $PWD`
7
8find . -name Makefile -delete
9find . -name Makefile.in -delete
10
11autoreconf -f -i
12
13if [ -z "$NOCONFIGURE" ]; then
14 ./configure "$@"
15fi
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..653d5b5
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,166 @@
1##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
2##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
3m4_define([v_maj], [0])
4m4_define([v_min], [1])
5m4_define([v_mic], [0])
6m4_define([v_rev], m4_esyscmd([(svnversion "${SVN_REPO_PATH:-.}" | grep -v export || echo 0) | awk -F : '{printf("%s\n", $1);}' | tr -d ' :MSP\n']))
7m4_if(v_rev, [0], [m4_define([v_rev], m4_esyscmd([git log 2> /dev/null | (grep -m1 git-svn-id || echo 0) | sed -e 's/.*@\([0-9]*\).*/\1/' | tr -d '\n']))])
8##-- When released, remove the dnl on the below line
9m4_undefine([v_rev])
10##-- When doing snapshots - change soname. remove dnl on below line
11dnl m4_define([relname], [ver-pre-svn-07])
12dnl m4_define([v_rel], [-release relname])
13##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
14m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])], [m4_define([v_ver], [v_maj.v_min.v_mic])])
15m4_define([lt_rev], m4_eval(v_maj + v_min))
16m4_define([lt_cur], v_mic)
17m4_define([lt_age], v_min)
18##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
19##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
20
21AC_INIT([efbb], [v_ver-alpha], [enlightenment-devel@lists.sourceforge.net])
22AC_PREREQ([2.60])
23AC_CONFIG_SRCDIR([configure.ac])
24AC_CONFIG_MACRO_DIR([m4])
25AC_GNU_SOURCE
26AC_CANONICAL_BUILD
27AC_CANONICAL_HOST
28AC_ISC_POSIX
29
30AM_INIT_AUTOMAKE(1.6 dist-bzip2)
31AM_CONFIG_HEADER(config.h)
32m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33
34define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])
35define([AC_LIBTOOL_LANG_GCJ_CONFIG], [:])
36define([AC_LIBTOOL_LANG_F77_CONFIG], [:])
37AC_PROG_LIBTOOL
38
39VMAJ=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $1);}'`
40VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
41VMIC=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $3);}'`
42SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
43version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
44m4_ifdef([v_rev], , [m4_define([v_rev], [0])])
45AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison])
46AC_SUBST(VMAJ)
47AC_SUBST(version_info)
48
49m4_ifdef([v_mic],
50 [
51 EFL_COMPILER_FLAG([-Wshadow])
52 EFL_COMPILER_FLAG([-Wall])
53 EFL_COMPILER_FLAG([-Wextra])
54 EFL_COMPILER_FLAG([-Wunused])
55 EFL_COMPILER_FLAG([-W])
56 ])
57
58AC_C_BIGENDIAN
59AC_PROG_CC_C99
60AM_PROG_CC_C_O
61AC_C_CONST
62AC_FUNC_ALLOCA
63AC_C___ATTRIBUTE__
64
65sound_dir="${datadir}/efbb/sound"
66AC_SUBST(sound_dir)
67 AS_AC_EXPAND(SOUND_DIR, $sound_dir)
68 AC_DEFINE_UNQUOTED(SOUND_DIR, ["$SOUND_DIR"], [Where sound files are installed.])
69
70AC_CHECK_PROG(HAVE_GENEET, geneet.py, true, false)
71PKG_CHECK_MODULES([EFBB], [libcanberra etrophy ephysics elementary edje ecore evas])
72
73if test "x$HAVE_GENEET" = "xfalse"; then
74 AC_MSG_ERROR([*** Geneet not found, make sure geneet.py is in your PATH])
75fi
76
77AC_ARG_WITH([edje-cc],
78 [AC_HELP_STRING([--with-edje-cc=PATH],
79 [specify a specific path to edje_cc])],
80 [edje_cc=$withval;
81 AC_MSG_NOTICE([edje_cc explicitly set to $edje_cc])
82 ],[edje_cc=$(pkg-config --variable=prefix edje)/bin/edje_cc])
83AC_SUBST(edje_cc)
84
85want_quicklaunch="auto"
86AC_ARG_ENABLE([quicklaunch],
87 [AC_HELP_STRING([--disable-quicklaunch],
88 [disable build of quicklaunch (default=auto)])],
89 [if test "x${enableval}" = "xno"; then
90 want_quicklaunch="no"
91 elif test "x${enableval}" = "xyes"; then
92 want_quicklaunch="yes"
93 else
94 want_quicklaunch="auto"
95 fi
96 ],
97 [want_quicklaunch="auto"])
98
99if test "x${want_quicklaunch}" = "xauto"; then
100 AC_MSG_CHECKING([checking for elementary_quicklaunch binary...])
101 if test -x $(pkg-config --variable=prefix elementary)/bin/elementary_quicklaunch; then
102 AC_MSG_RESULT([found, enable quicklaunch.])
103 want_quicklaunch="yes"
104 else
105 AC_MSG_RESULT([not found, disable quicklaunch.])
106 want_quicklaunch="no"
107 fi
108fi
109
110if test "x${want_quicklaunch}" = "xyes"; then
111 AC_ARG_WITH([quicklauncher-libdir],
112 [AC_HELP_STRING([--with-quicklauncher-libdir=PATH],
113 [specify a specific path to install quicklauncher binaries])],
114 [quicklauncher_libdir=$withval;
115 AC_MSG_NOTICE([quicklauncher_libdir explicitly set to $quicklauncher_libdir])
116 ],
117 [quicklauncher_libdir=$(pkg-config --variable=libdir elementary)])
118 AC_SUBST(quicklauncher_libdir)
119fi
120
121AM_CONDITIONAL(BUILD_QUICKLAUNCH, test "x${want_quicklaunch}" = "xyes")
122
123AC_OUTPUT([
124Makefile
125src/Makefile
126src/bin/Makefile
127data/Makefile
128data/theme/Makefile
129data/theme/images/Makefile
130data/theme/fonts/Makefile
131data/images/Makefile
132data/levels/Makefile
133data/sound/Makefile
134])
135
136
137cat << EOF
138
139efbb configured with:
140
141Flags:
142 CFLAGS.....(C): $CFLAGS
143 CXXFLAGS.(C++): $CXXFLAGS
144 CPPFLAGS.(CPP): $CPPFLAGS
145 LDFLAGS...(LD): $LDFLAGS
146
147Installation:
148 PREFIX..............: $prefix
149
150Quick Launcher: ${want_quicklaunch}
151EOF
152
153if test "x${want_quicklaunch}" = "xyes"; then
154cat << EOF_QL
155 quicklauncher_libdir: $quicklauncher_libdir
156
157EOF_QL
158fi
159
160cat << EOF2
161
162Now type 'make' ('gmake' on some systems) to compile efbb, if it
163builds successfully then you can 'make install', acquiring required
164permissions with 'su' or 'sudo'.
165
166EOF2
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..1abf9cb
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,3 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3SUBDIRS = images theme levels sound
diff --git a/data/ephysics_game.edj b/data/ephysics_game.edj
new file mode 100644
index 0000000..8dedb49
--- /dev/null
+++ b/data/ephysics_game.edj
Binary files differ
diff --git a/data/images/Makefile.am b/data/images/Makefile.am
new file mode 100644
index 0000000..99aaeac
--- /dev/null
+++ b/data/images/Makefile.am
@@ -0,0 +1,33 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3filesdir = $(datadir)/efbb/
4
5files_DATA = \
6 bg1_ground.png \
7 bg1_mountains.png \
8 bg1_sky.png \
9 bg1_sun.png \
10 bg1_trees.png \
11 bg2_beach.png \
12 bg2_sand.png \
13 bg2_sky.png \
14 bg3_fog.png \
15 bg3_mountain.png \
16 bg3_sea1.png \
17 bg3_sea2.png \
18 bg3_sea3.png \
19 bg3_sea4.png \
20 bg3_sky.png \
21 bomb.png \
22 boss.png \
23 btn_level-1.png \
24 stone_40_40.png \
25 stone_40_120.png \
26 stone_120_40.png \
27 wood_20_40.png \
28 wood_20_120.png \
29 wood_40_20.png \
30 wood_120_20.png \
31 pirate.png
32
33EXTRA_DIST = $(files_DATA)
diff --git a/data/images/bg1_ground.png b/data/images/bg1_ground.png
new file mode 100644
index 0000000..10deb6c
--- /dev/null
+++ b/data/images/bg1_ground.png
Binary files differ
diff --git a/data/images/bg1_mountains.png b/data/images/bg1_mountains.png
new file mode 100644
index 0000000..e288c83
--- /dev/null
+++ b/data/images/bg1_mountains.png
Binary files differ
diff --git a/data/images/bg1_sky.png b/data/images/bg1_sky.png
new file mode 100644
index 0000000..649e2cc
--- /dev/null
+++ b/data/images/bg1_sky.png
Binary files differ
diff --git a/data/images/bg1_sun.png b/data/images/bg1_sun.png
new file mode 100644
index 0000000..bb6ed7c
--- /dev/null
+++ b/data/images/bg1_sun.png
Binary files differ
diff --git a/data/images/bg1_trees.png b/data/images/bg1_trees.png
new file mode 100644
index 0000000..0e97108
--- /dev/null
+++ b/data/images/bg1_trees.png
Binary files differ
diff --git a/data/images/bg2_beach.png b/data/images/bg2_beach.png
new file mode 100644
index 0000000..dc33e0f
--- /dev/null
+++ b/data/images/bg2_beach.png
Binary files differ
diff --git a/data/images/bg2_sand.png b/data/images/bg2_sand.png
new file mode 100644
index 0000000..2fe6c6e
--- /dev/null
+++ b/data/images/bg2_sand.png
Binary files differ
diff --git a/data/images/bg2_sky.png b/data/images/bg2_sky.png
new file mode 100644
index 0000000..e777158
--- /dev/null
+++ b/data/images/bg2_sky.png
Binary files differ
diff --git a/data/images/bg3_fog.png b/data/images/bg3_fog.png
new file mode 100644
index 0000000..d72949d
--- /dev/null
+++ b/data/images/bg3_fog.png
Binary files differ
diff --git a/data/images/bg3_mountain.png b/data/images/bg3_mountain.png
new file mode 100644
index 0000000..7ab3865
--- /dev/null
+++ b/data/images/bg3_mountain.png
Binary files differ
diff --git a/data/images/bg3_sea1.png b/data/images/bg3_sea1.png
new file mode 100644
index 0000000..6041d28
--- /dev/null
+++ b/data/images/bg3_sea1.png
Binary files differ
diff --git a/data/images/bg3_sea2.png b/data/images/bg3_sea2.png
new file mode 100644
index 0000000..e033aa6
--- /dev/null
+++ b/data/images/bg3_sea2.png
Binary files differ
diff --git a/data/images/bg3_sea3.png b/data/images/bg3_sea3.png
new file mode 100644
index 0000000..a498e2c
--- /dev/null
+++ b/data/images/bg3_sea3.png
Binary files differ
diff --git a/data/images/bg3_sea4.png b/data/images/bg3_sea4.png
new file mode 100644
index 0000000..fc4a9fc
--- /dev/null
+++ b/data/images/bg3_sea4.png
Binary files differ
diff --git a/data/images/bg3_sky.png b/data/images/bg3_sky.png
new file mode 100644
index 0000000..a6689f1
--- /dev/null
+++ b/data/images/bg3_sky.png
Binary files differ
diff --git a/data/images/bomb.png b/data/images/bomb.png
new file mode 100644
index 0000000..5bccae4
--- /dev/null
+++ b/data/images/bomb.png
Binary files differ
diff --git a/data/images/boss.png b/data/images/boss.png
new file mode 100644
index 0000000..2d7f69b
--- /dev/null
+++ b/data/images/boss.png
Binary files differ
diff --git a/data/images/btn_level-1.png b/data/images/btn_level-1.png
new file mode 100644
index 0000000..247cf86
--- /dev/null
+++ b/data/images/btn_level-1.png
Binary files differ
diff --git a/data/images/pirate.png b/data/images/pirate.png
new file mode 100644
index 0000000..5b9f8ff
--- /dev/null
+++ b/data/images/pirate.png
Binary files differ
diff --git a/data/images/stone_120_40.png b/data/images/stone_120_40.png
new file mode 100644
index 0000000..ea2933e
--- /dev/null
+++ b/data/images/stone_120_40.png
Binary files differ
diff --git a/data/images/stone_40_120.png b/data/images/stone_40_120.png
new file mode 100644
index 0000000..40de7de
--- /dev/null
+++ b/data/images/stone_40_120.png
Binary files differ
diff --git a/data/images/stone_40_40.png b/data/images/stone_40_40.png
new file mode 100644
index 0000000..1d7b51c
--- /dev/null
+++ b/data/images/stone_40_40.png
Binary files differ
diff --git a/data/images/wood_120_20.png b/data/images/wood_120_20.png
new file mode 100644
index 0000000..ae6e142
--- /dev/null
+++ b/data/images/wood_120_20.png
Binary files differ
diff --git a/data/images/wood_20_120.png b/data/images/wood_20_120.png
new file mode 100644
index 0000000..3f3d199
--- /dev/null
+++ b/data/images/wood_20_120.png
Binary files differ
diff --git a/data/images/wood_20_40.png b/data/images/wood_20_40.png
new file mode 100644
index 0000000..eb4b158
--- /dev/null
+++ b/data/images/wood_20_40.png
Binary files differ
diff --git a/data/images/wood_40_20.png b/data/images/wood_40_20.png
new file mode 100644
index 0000000..59f9c8c
--- /dev/null
+++ b/data/images/wood_40_20.png
Binary files differ
diff --git a/data/levels/Makefile.am b/data/levels/Makefile.am
new file mode 100644
index 0000000..b2cb6f1
--- /dev/null
+++ b/data/levels/Makefile.am
@@ -0,0 +1,23 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3LEVEL_CREATOR = $(top_srcdir)/tools/levels_create.py
4LEVELS = $(top_srcdir)/data/levels
5
6filesdir = $(datadir)/efbb/
7
8files_DATA = levels.eet
9
10EXTRA_DIST = \
11 level00.cfg \
12 level01.cfg \
13 level02.cfg \
14 level03.cfg \
15 level04.cfg \
16 level05.cfg
17 $(LEVEL_CREATOR)
18
19levels.eet: Makefile $(EXTRA_DIST)
20 $(LEVEL_CREATOR) $(LEVELS) $(top_srcdir)/data/levels/levels.eet
21
22clean-local:
23 rm -f *.eet
diff --git a/data/levels/level00.cfg b/data/levels/level00.cfg
new file mode 100644
index 0000000..7b4efdc
--- /dev/null
+++ b/data/levels/level00.cfg
@@ -0,0 +1,73 @@
1# use '#' for comments
2# use '/' to separate elements of lists
3# use ',' to separate properties of elements
4# use ' ' after '(' and before ')'
5
6[Consts]
7WIDTH = 1280
8HEIGHT = 720
9FLOOR_Y = 610
10
11BOX_SIZE_S = 20
12BOX_SIZE_R = 40
13BOX_SIZE_L = 120
14TARGET_SIZE = 60
15
16STONE = stone
17WOOD = wood
18
19PIRATE = pirate
20BOSS = boss
21
22WIDTH_CASTLE = 1390
23WIDTH_MCASTLE = 1514
24
25[General]
26level_num = 1
27level_id = small_castle
28cannon_pos_x = 40
29cannon_pos_y = FLOOR_Y - 68
30ammo = 6
31bg = 1
32time_attack = 0
33
34[Elements]
35blocks = WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE,
36 FLOOR_Y - BOX_SIZE_L, 30, -1 /
37 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE + 78,
38 FLOOR_Y - BOX_SIZE_L, 30, -1 /
39 STONE, BOX_SIZE_L, BOX_SIZE_R, WIDTH_CASTLE - 10,
40 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R ), 20, -1 /
41 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE,
42 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_R ), 20, -1 /
43
44
45 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE,
46 FLOOR_Y - BOX_SIZE_L, 30, -1 /
47 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 78,
48 FLOOR_Y - BOX_SIZE_L, 30, -1 /
49 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_MCASTLE - 10,
50 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 30, -1 /
51
52 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_MCASTLE - 10,
53 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
54 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE,
55 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
56 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 78,
57 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
58 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_MCASTLE - 10,
59 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 3 ), 20, -1 /
60
61 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE - 1,
62 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 10, -1 /
63 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 29,
64 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 5 ), 10, -1 /
65 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 59,
66 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 10, -1 /
67
68 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 29,
69 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S * 2 + BOX_SIZE_R ), 10, -1
70
71targets = PIRATE, TARGET_SIZE, TARGET_SIZE, WIDTH_CASTLE + 35,
72 FLOOR_Y -( BOX_SIZE_L + BOX_SIZE_R + TARGET_SIZE ) /
73 PIRATE, TARGET_SIZE, TARGET_SIZE, WIDTH_MCASTLE + 140, FLOOR_Y - TARGET_SIZE
diff --git a/data/levels/level01.cfg b/data/levels/level01.cfg
new file mode 100644
index 0000000..7f38662
--- /dev/null
+++ b/data/levels/level01.cfg
@@ -0,0 +1,99 @@
1# use '#' for comments
2# use '/' to separate elements of lists
3# use ',' to separate properties of elements
4# use ' ' after '(' and before ')'
5
6[Consts]
7WIDTH = 1280
8HEIGHT = 720
9FLOOR_Y = 610
10
11BOX_SIZE_S = 20
12BOX_SIZE_R = 40
13BOX_SIZE_L = 120
14TARGET_SIZE = 60
15
16STONE = stone
17WOOD = wood
18
19PIRATE = pirate
20BOSS = boss
21
22WIDTH_CASTLE = 1390
23WIDTH_MCASTLE = 1514
24
25[General]
26level_num = 2
27level_id = medium_castle
28cannon_pos_x = 40
29cannon_pos_y = FLOOR_Y - 68
30ammo = 6
31bg = 2
32time_attack = 0
33
34[Elements]
35blocks = STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_CASTLE,
36 FLOOR_Y - BOX_SIZE_R, 30, -1 /
37 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE,
38 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L ), 30, -1 /
39 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE + 19,
40 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L ), 30, -1 /
41 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_CASTLE,
42 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L ), 30, -1 /
43 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE,
44 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 ), 20, -1 /
45 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE + 19,
46 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 ), 20, -1 /
47 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_CASTLE,
48 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 ), 20, -1 /
49
50 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE - 23,
51 FLOOR_Y - BOX_SIZE_R, 30, -1 /
52 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 23,
53 FLOOR_Y - BOX_SIZE_R, 30, -1 /
54 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE,
55 FLOOR_Y - ( BOX_SIZE_S + BOX_SIZE_R ), 25, -1 /
56 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE,
57 FLOOR_Y - ( BOX_SIZE_S * 2 + BOX_SIZE_R ), 25, -1 /
58
59 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 77,
60 FLOOR_Y - BOX_SIZE_R, 30, -1 /
61 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 123,
62 FLOOR_Y - BOX_SIZE_R, 30, -1 /
63 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 100,
64 FLOOR_Y - ( BOX_SIZE_S + BOX_SIZE_R ), 25, -1 /
65 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 100,
66 FLOOR_Y - ( BOX_SIZE_S * 2 + BOX_SIZE_R ), 25, -1 /
67
68 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 177,
69 FLOOR_Y - BOX_SIZE_R, 30, -1 /
70 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 223,
71 FLOOR_Y - BOX_SIZE_R, 30, -1 /
72 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 200,
73 FLOOR_Y - ( BOX_SIZE_S + BOX_SIZE_R ), 25, -1 /
74 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 200,
75 FLOOR_Y - ( BOX_SIZE_S * 2 + BOX_SIZE_R ), 25, -1 /
76
77 STONE, BOX_SIZE_L, BOX_SIZE_R, WIDTH_MCASTLE,
78 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 30, -1 /
79 STONE, BOX_SIZE_L, BOX_SIZE_R, WIDTH_MCASTLE + 120,
80 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 30, -1 /
81
82 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 60,
83 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_S * 2 + BOX_SIZE_L ), 30, -1 /
84 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 40,
85 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_S * 2 + BOX_SIZE_L ), 30, -1 /
86 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 160,
87 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_S * 2 + BOX_SIZE_L ), 30, -1 /
88 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 180,
89 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_S * 2 + BOX_SIZE_L ), 30, -1 /
90
91 STONE, BOX_SIZE_L, BOX_SIZE_R, WIDTH_MCASTLE + 60,
92 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 2 + BOX_SIZE_L ), 30, -1
93
94targets = PIRATE, TARGET_SIZE, TARGET_SIZE, WIDTH_CASTLE - 7,
95 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_R * 3 + TARGET_SIZE ) /
96 PIRATE, TARGET_SIZE, TARGET_SIZE, WIDTH_MCASTLE + 90,
97 FLOOR_Y - ( TARGET_SIZE + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ) /
98 PIRATE, TARGET_SIZE, TARGET_SIZE, WIDTH_MCASTLE + 90,
99 FLOOR_Y - ( BOX_SIZE_L + TARGET_SIZE + BOX_SIZE_R * 3 + BOX_SIZE_S * 2 )
diff --git a/data/levels/level02.cfg b/data/levels/level02.cfg
new file mode 100644
index 0000000..855c14a
--- /dev/null
+++ b/data/levels/level02.cfg
@@ -0,0 +1,175 @@
1# use '#' for comments
2# use '/' to separate elements of lists
3# use ',' to separate properties of elements
4# use ' ' after '(' and before ')'
5
6[Consts]
7WIDTH = 1280
8HEIGHT = 720
9FLOOR_Y = 610
10
11BOX_SIZE_S = 20
12BOX_SIZE_R = 40
13BOX_SIZE_L = 120
14TARGET_SIZE = 60
15
16STONE = stone
17WOOD = wood
18
19PIRATE = pirate
20BOSS = boss
21
22WIDTH_CASTLE = 1390 - 80
23WIDTH_MCASTLE = 1514 - 60
24
25[General]
26level_num = 3
27level_id = big_castle
28cannon_pos_x = 40
29cannon_pos_y = FLOOR_Y - 68
30ammo = 7
31bg = 1
32time_attack = 0
33
34[Elements]
35blocks = WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE - 1,
36 FLOOR_Y - BOX_SIZE_L, 30, -1 /
37 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE + 79,
38 FLOOR_Y - BOX_SIZE_L, 30, -1 /
39 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_CASTLE - 10,
40 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 30, -1 /
41
42 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_CASTLE - 10,
43 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
44 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE - 1,
45 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
46 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_CASTLE + 79,
47 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
48 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_CASTLE - 10,
49 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 3 ), 20, -1 /
50
51 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_CASTLE - 2,
52 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 10, -1 /
53 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_CASTLE + 29,
54 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 5 ), 10, -1 /
55 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_CASTLE + 59,
56 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 10, -1 /
57
58 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_CASTLE + 29,
59 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S * 2 + BOX_SIZE_R ), 10, -1 /
60
61#TOWER 2
62 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 286,
63 FLOOR_Y - BOX_SIZE_L, 30, -1 /
64 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 366,
65 FLOOR_Y - BOX_SIZE_L, 30, -1 /
66 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_MCASTLE + 277,
67 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 30, -1 /
68
69 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_MCASTLE + 277,
70 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
71 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 286,
72 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
73 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 366,
74 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
75 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_MCASTLE + 277,
76 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 3 ), 20, -1 /
77
78 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 285,
79 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 10, -1 /
80 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 316,
81 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 5 ), 10, -1 /
82 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 346,
83 FLOOR_Y - ( BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 10, -1 /
84
85 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 316,
86 FLOOR_Y - BOX_SIZE_R, 10, -1 /
87
88#MAIN_CASTLE
89 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE - 23,
90 FLOOR_Y - BOX_SIZE_R, 30, -1 /
91 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 23,
92 FLOOR_Y - BOX_SIZE_R, 30, -1 /
93 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE,
94 FLOOR_Y - ( BOX_SIZE_S + BOX_SIZE_R ), 25, -1 /
95 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE,
96 FLOOR_Y - ( BOX_SIZE_S * 2 + BOX_SIZE_R ), 25, -1 /
97
98 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 77,
99 FLOOR_Y - BOX_SIZE_R, 30, -1 /
100 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 123,
101 FLOOR_Y - BOX_SIZE_R, 30, -1 /
102 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 100,
103 FLOOR_Y - ( BOX_SIZE_S + BOX_SIZE_R ), 25, -1 /
104 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 100,
105 FLOOR_Y - ( BOX_SIZE_S * 2 + BOX_SIZE_R ), 25, -1 /
106
107 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 177,
108 FLOOR_Y - BOX_SIZE_R, 30, -1 /
109 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 223,
110 FLOOR_Y - BOX_SIZE_R, 30, -1 /
111 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 200,
112 FLOOR_Y - ( BOX_SIZE_S + BOX_SIZE_R ), 25, -1 /
113 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 200,
114 FLOOR_Y - ( BOX_SIZE_S * 2 + BOX_SIZE_R ), 25, -1 /
115
116 STONE, BOX_SIZE_L, BOX_SIZE_R, WIDTH_MCASTLE,
117 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 30, -1 /
118 STONE, BOX_SIZE_L, BOX_SIZE_R, WIDTH_MCASTLE + 120,
119 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 30, -1 /
120
121 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 2,
122 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 2 ), 30, -1 /
123 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 48,
124 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 2 ), 30, -1 /
125 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 25,
126 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 3 ), 25, -1 /
127 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 25,
128 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 4 ), 25, -1 /
129
130 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 152,
131 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 2 ), 30, -1 /
132 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 198,
133 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 2 ), 30, -1 /
134 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 175,
135 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 3 ), 25, -1 /
136 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 175,
137 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 4 ), 25, -1 /
138
139 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 100,
140 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S ), 30, -1 /
141 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 100,
142 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 2 ), 30, -1 /
143
144 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 45,
145 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 4 + BOX_SIZE_L ), 30, -1 /
146 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 25,
147 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 4 + BOX_SIZE_L ), 30, -1 /
148 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 175,
149 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 4 + BOX_SIZE_L ), 30, -1 /
150 WOOD, BOX_SIZE_S, BOX_SIZE_L, WIDTH_MCASTLE + 195,
151 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 4 + BOX_SIZE_L ), 30, -1 /
152
153 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_MCASTLE + 60,
154 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 5 + BOX_SIZE_L ), 30, -1 /
155 WOOD, BOX_SIZE_L, BOX_SIZE_S, WIDTH_MCASTLE + 60,
156 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_S * 6 + BOX_SIZE_L ), 30, -1 /
157
158 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 21,
159 FLOOR_Y - ( BOX_SIZE_R * 4 + BOX_SIZE_S * 4 + BOX_SIZE_L ), 30, -1 /
160 STONE, BOX_SIZE_R, BOX_SIZE_R, WIDTH_MCASTLE + 180,
161 FLOOR_Y - ( BOX_SIZE_R * 4 + BOX_SIZE_S * 4 + BOX_SIZE_L ), 30, -1 /
162
163 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 69,
164 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S * 7 + BOX_SIZE_R * 3 ), 10, -1 /
165 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 100,
166 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S * 8 + BOX_SIZE_R * 3 ), 10, -1 /
167 WOOD, BOX_SIZE_R, BOX_SIZE_S, WIDTH_MCASTLE + 131,
168 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S * 7 + BOX_SIZE_R * 3 ), 10, -1
169
170targets = PIRATE, TARGET_SIZE, TARGET_SIZE, WIDTH_CASTLE + 20,
171 FLOOR_Y - TARGET_SIZE /
172 PIRATE, TARGET_SIZE, TARGET_SIZE, WIDTH_MCASTLE + 306,
173 FLOOR_Y - ( TARGET_SIZE + BOX_SIZE_L + BOX_SIZE_S * 2 ) /
174 BOSS, 110, 88, WIDTH_MCASTLE + 73,
175 FLOOR_Y - ( 88 + BOX_SIZE_S * 2 + BOX_SIZE_R * 3 )
diff --git a/data/levels/level03.cfg b/data/levels/level03.cfg
new file mode 100644
index 0000000..0d7218e
--- /dev/null
+++ b/data/levels/level03.cfg
@@ -0,0 +1,263 @@
1# use '#' for comments
2# use '/' to separate elements of lists
3# use ',' to separate properties of elements
4# use ' ' after '(' and before ')'
5
6[Consts]
7WIDTH = 1280
8HEIGHT = 720
9FLOOR_Y = 610
10
11BOX_SIZE_S = 20
12BOX_SIZE_R = 40
13BOX_SIZE_L = 120
14TARGET_SIZE = 60
15
16STONE = stone
17WOOD = wood
18
19PIRATE = pirate
20BOSS = boss
21
22[General]
23level_num = 4
24level_id = pirate_beach
25cannon_pos_x = 40
26cannon_pos_y = FLOOR_Y - ( 68 + BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 )
27ammo = 6
28bg = 2
29time_attack = 0
30
31[Elements]
32blocks = STONE, BOX_SIZE_R, BOX_SIZE_L, 0, FLOOR_Y - BOX_SIZE_L, 0, -1 /
33 STONE, BOX_SIZE_R, BOX_SIZE_R, 0,
34 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R ), 0, -1 /
35 STONE, BOX_SIZE_R, BOX_SIZE_R, 0,
36 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 ), 0, -1 /
37
38 STONE, BOX_SIZE_R, BOX_SIZE_L, BOX_SIZE_R, FLOOR_Y - BOX_SIZE_L, 0, -1 /
39 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R,
40 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R ), 0, -1 /
41 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R,
42 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 ), 0, -1 /
43
44 STONE, BOX_SIZE_L, BOX_SIZE_R, BOX_SIZE_R * 2, FLOOR_Y - BOX_SIZE_R, 0, -1 /
45 STONE, BOX_SIZE_L, BOX_SIZE_R, BOX_SIZE_R * 2,
46 FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
47
48 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 2,
49 FLOOR_Y - BOX_SIZE_R * 3, 0, -1 /
50 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 2,
51 FLOOR_Y - BOX_SIZE_R * 4, 0, -1 /
52 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 2,
53 FLOOR_Y - BOX_SIZE_R * 5, 0, -1 /
54 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 3,
55 FLOOR_Y - BOX_SIZE_R * 3, 0, -1 /
56
57 STONE, BOX_SIZE_L, BOX_SIZE_R, 0,
58 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 3 ), 0, -1 /
59
60 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 2 + BOX_SIZE_L ),
61 FLOOR_Y - BOX_SIZE_R, 0, -1 /
62 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 3 + BOX_SIZE_L ),
63 FLOOR_Y - BOX_SIZE_R, 0, -1 /
64 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 4 + BOX_SIZE_L ),
65 FLOOR_Y - BOX_SIZE_R, 0, -1 /
66
67 STONE, BOX_SIZE_L, BOX_SIZE_R, ( BOX_SIZE_R * 2 + BOX_SIZE_L ),
68 FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
69 STONE, BOX_SIZE_L, BOX_SIZE_R, BOX_SIZE_R * 4,
70 FLOOR_Y - BOX_SIZE_R * 3, 0, -1 /
71
72 STONE, BOX_SIZE_R, BOX_SIZE_L, BOX_SIZE_R * 3,
73 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L ), 0, -1 /
74 STONE, BOX_SIZE_R, BOX_SIZE_L, BOX_SIZE_R * 4,
75 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L ), 0, -1 /
76
77 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 7,
78 FLOOR_Y - BOX_SIZE_R * 3, 0, -1 /
79 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 5,
80 FLOOR_Y - BOX_SIZE_R * 4, 0, -1 /
81 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 6,
82 FLOOR_Y - BOX_SIZE_R * 4, 0, -1 /
83 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 7,
84 FLOOR_Y - BOX_SIZE_R * 4, 0, -1 /
85
86 STONE, BOX_SIZE_L, BOX_SIZE_R, BOX_SIZE_R * 5,
87 FLOOR_Y - BOX_SIZE_R * 5, 0, -1 /
88
89 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 5,
90 FLOOR_Y - BOX_SIZE_R * 6, 0, -1 /
91 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 6,
92 FLOOR_Y - BOX_SIZE_R * 6, 0, -1 /
93 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 7,
94 FLOOR_Y - BOX_SIZE_R * 6, 0, -1 /
95
96 STONE, BOX_SIZE_R, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L ),
97 FLOOR_Y - BOX_SIZE_L, 0, -1 /
98
99 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L ),
100 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S + BOX_SIZE_R ), 0, -1 /
101 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L ),
102 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S + BOX_SIZE_R * 2 ), 0, -1 /
103
104#WOOD
105
106 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 2 ) - 10,
107 FLOOR_Y - BOX_SIZE_L, 20, -1 /
108 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 3 ) - 10,
109 FLOOR_Y - BOX_SIZE_L, 20, -1 /
110 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 4 ) - 10,
111 FLOOR_Y - BOX_SIZE_L, 20, -1 /
112 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 5 ) - 10,
113 FLOOR_Y - BOX_SIZE_L, 20, -1 /
114 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 6 ) - 10,
115 FLOOR_Y - BOX_SIZE_L, 20, -1 /
116 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 7 ) - 10,
117 FLOOR_Y - BOX_SIZE_L, 20, -1 /
118 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 8 ) - 10,
119 FLOOR_Y - BOX_SIZE_L, 20, -1 /
120 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 9 ) - 10,
121 FLOOR_Y - BOX_SIZE_L, 20, -1 /
122 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 10 ) - 10,
123 FLOOR_Y - BOX_SIZE_L, 20, -1 /
124 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 11 ) - 10,
125 FLOOR_Y - BOX_SIZE_L, 20, -1 /
126 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 12 ) - 10,
127 FLOOR_Y - BOX_SIZE_L, 20, -1 /
128 WOOD, BOX_SIZE_S, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 13 ) - 20,
129 FLOOR_Y - BOX_SIZE_L, 20, -1 /
130
131 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L ),
132 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
133 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 2 ),
134 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
135 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 3 ),
136 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
137 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 4 ),
138 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
139 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 5 ),
140 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
141 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 6 ),
142 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
143 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 7 ),
144 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
145 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 8 ),
146 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
147 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 9 ),
148 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
149 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 10 ),
150 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
151 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 11 ),
152 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
153 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 12 ),
154 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_S ), 15, -1 /
155
156 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L + BOX_SIZE_S ),
157 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
158 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 2 + BOX_SIZE_S )
159 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
160 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 3 + BOX_SIZE_S )
161 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
162 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 4 + BOX_SIZE_S )
163 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
164 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 5 + BOX_SIZE_S )
165 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
166 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 6 + BOX_SIZE_S )
167 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
168 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 7 + BOX_SIZE_S )
169 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
170 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 8 + BOX_SIZE_S )
171 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
172 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 9 + BOX_SIZE_S )
173 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
174 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 10 + BOX_SIZE_S )
175 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
176 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 11 + BOX_SIZE_S )
177 - 10, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
178 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 12 + BOX_SIZE_S )
179 - 20, FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S ), 10, -1 /
180
181 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L + BOX_SIZE_S ),
182 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
183 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 2 + BOX_SIZE_S ),
184 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
185 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 3 + BOX_SIZE_S ),
186 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
187 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 4 + BOX_SIZE_S ),
188 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
189 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 5 + BOX_SIZE_S ),
190 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
191 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 6 + BOX_SIZE_S ),
192 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
193 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 7 + BOX_SIZE_S ),
194 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
195 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 8 + BOX_SIZE_S ),
196 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
197 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 9 + BOX_SIZE_S ),
198 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
199 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 10 + BOX_SIZE_S ),
200 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
201 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 11 + BOX_SIZE_S ),
202 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R + BOX_SIZE_S * 2 ), 10, -1 /
203
204 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 2 ) - 10,
205 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
206 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 3 ) - 10,
207 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
208 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 4 ) - 10,
209 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
210 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 5 ) - 10,
211 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
212 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 6 ) - 10,
213 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
214 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 7 ) - 10,
215 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
216 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 8 ) - 10,
217 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
218 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 9 ) - 10,
219 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
220 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 10 ) - 10,
221 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
222 WOOD, BOX_SIZE_S, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 11 ) - 20,
223 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 10, -1 /
224
225 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L ),
226 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
227 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 2 ),
228 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
229 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 3 ),
230 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
231 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 4 ),
232 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
233 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 5 ),
234 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
235 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 6 ),
236 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
237 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 7 ),
238 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
239 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 8 ),
240 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
241 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 9 ),
242 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
243 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 10 ),
244 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 10, -1 /
245
246 WOOD, BOX_SIZE_R, BOX_SIZE_S, ( BOX_SIZE_R * 5 + BOX_SIZE_L ),
247 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 2 ), 20, -1 /
248
249 WOOD, BOX_SIZE_L, BOX_SIZE_S, 0,
250 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 30, -1 /
251 WOOD, BOX_SIZE_R, BOX_SIZE_S, BOX_SIZE_L,
252 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 30, -1 /
253 WOOD, BOX_SIZE_R, BOX_SIZE_S, ( BOX_SIZE_L + BOX_SIZE_R ),
254 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 30, -1 /
255 WOOD, BOX_SIZE_L, BOX_SIZE_S, ( BOX_SIZE_R * 2 + BOX_SIZE_L ),
256 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R * 2 + BOX_SIZE_S * 3 ), 30, -1
257
258targets = PIRATE, TARGET_SIZE, TARGET_SIZE, ( BOX_SIZE_R * 6 + BOX_SIZE_L * 5) -
259 10, FLOOR_Y - ( TARGET_SIZE + BOX_SIZE_L * 2 + BOX_SIZE_S )/
260 PIRATE, TARGET_SIZE, TARGET_SIZE, ( BOX_SIZE_R * 7 + BOX_SIZE_L * 12),
261 FLOOR_Y - ( TARGET_SIZE + BOX_SIZE_L + BOX_SIZE_S ) /
262 BOSS, 110, 88, ( BOX_SIZE_R * 5 + BOX_SIZE_L * 13 ) + 10,
263 FLOOR_Y - 88
diff --git a/data/levels/level04.cfg b/data/levels/level04.cfg
new file mode 100644
index 0000000..005553a
--- /dev/null
+++ b/data/levels/level04.cfg
@@ -0,0 +1,194 @@
1# use '#' for comments
2# use '/' to separate elements of lists
3# use ',' to separate properties of elements
4# use ' ' after '(' and before ')'
5
6[Consts]
7WIDTH = 1280
8HEIGHT = 720
9FLOOR_Y = 650
10
11BOX_SIZE_S = 20
12BOX_SIZE_R = 40
13BOX_SIZE_L = 120
14TARGET_SIZE = 60
15SHIP_X = 500
16
17STONE = stone
18WOOD = wood
19
20PIRATE = pirate
21BOSS = boss
22
23FLAG = flag
24SAILFRONT = sailfront
25SAILBACK = sailback
26
27[General]
28level_num = 5
29level_id = pirate_ship
30cannon_pos_x = 40
31cannon_pos_y = FLOOR_Y - ( 68 + BOX_SIZE_L + BOX_SIZE_R )
32ammo = 3
33bg = 3
34time_attack = 1
35
36[Elements]
37blocks = STONE, BOX_SIZE_R, BOX_SIZE_R, 0, FLOOR_Y - BOX_SIZE_R, 0, -1 /
38 STONE, BOX_SIZE_R, BOX_SIZE_L, 0,
39 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R ), 0, -1 /
40
41 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R, FLOOR_Y - BOX_SIZE_R, 0, -1 /
42 STONE, BOX_SIZE_R, BOX_SIZE_L, BOX_SIZE_R,
43 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R ), 0, -1 /
44
45 STONE, BOX_SIZE_L, BOX_SIZE_R, BOX_SIZE_R * 2, FLOOR_Y - BOX_SIZE_R, 0, -1 /
46 STONE, BOX_SIZE_L, BOX_SIZE_R, BOX_SIZE_R * 2,
47 FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
48 STONE, BOX_SIZE_L, BOX_SIZE_R, BOX_SIZE_R * 2,
49 FLOOR_Y - BOX_SIZE_R * 3, 0, -1 /
50
51 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 2,
52 FLOOR_Y - BOX_SIZE_R * 4, 0, -1 /
53 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R * 3,
54 FLOOR_Y - BOX_SIZE_R * 4, 0, -1 /
55
56 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 2 + BOX_SIZE_L ),
57 FLOOR_Y - BOX_SIZE_R, 0, -1 /
58 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 3 + BOX_SIZE_L ),
59 FLOOR_Y - BOX_SIZE_R, 0, -1 /
60 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 4 + BOX_SIZE_L ),
61 FLOOR_Y - BOX_SIZE_R, 0, -1 /
62
63 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 2 + BOX_SIZE_L ),
64 FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
65 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 3 + BOX_SIZE_L ),
66 FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
67 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 4 + BOX_SIZE_L ),
68 FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
69
70 STONE, BOX_SIZE_L, BOX_SIZE_R, ( BOX_SIZE_R * 2 + BOX_SIZE_L ),
71 FLOOR_Y - BOX_SIZE_R * 3, 0, -1 /
72 STONE, BOX_SIZE_L, BOX_SIZE_R, ( BOX_SIZE_R + BOX_SIZE_L ),
73 FLOOR_Y - BOX_SIZE_R * 4, 0, -1 /
74 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R + BOX_SIZE_L * 2 ),
75 FLOOR_Y - BOX_SIZE_R * 4, 0, -1 /
76
77 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 5 + BOX_SIZE_L ),
78 FLOOR_Y - BOX_SIZE_R, 0, -1 /
79 STONE, BOX_SIZE_R, BOX_SIZE_L, ( BOX_SIZE_R * 5 + BOX_SIZE_L ),
80 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R ), 0, -1 /
81
82#SHIP
83 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X, FLOOR_Y - BOX_SIZE_S, 50, -1 /
84 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X + BOX_SIZE_L,
85 FLOOR_Y - BOX_SIZE_S, 50, -1 /
86 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X + BOX_SIZE_L * 2,
87 FLOOR_Y - BOX_SIZE_S, 50, -1 /
88
89 WOOD, BOX_SIZE_R, BOX_SIZE_S, SHIP_X - 15, FLOOR_Y - BOX_SIZE_S * 2, 45, -1 /
90 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 15 + BOX_SIZE_R,
91 FLOOR_Y - BOX_SIZE_S * 2, 45, -1 /
92 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 15 + ( BOX_SIZE_R + BOX_SIZE_L ),
93 FLOOR_Y - BOX_SIZE_S * 2, 45, -1 /
94 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 15 + ( BOX_SIZE_R + BOX_SIZE_L * 2 ),
95 FLOOR_Y - BOX_SIZE_S * 2, 45, -1 /
96
97#left blocks
98 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 35, FLOOR_Y - BOX_SIZE_S * 3, 80, -1 /
99 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 40, FLOOR_Y - BOX_SIZE_S * 4, 50, -1 /
100 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 45, FLOOR_Y - BOX_SIZE_S * 5, 20, -1 /
101 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 50, FLOOR_Y - BOX_SIZE_S * 6, 20, -1 /
102
103#right blocks
104 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 50 + BOX_SIZE_L * 3,
105 FLOOR_Y - BOX_SIZE_S * 3, 45, -1 /
106 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 40 + BOX_SIZE_L * 3,
107 FLOOR_Y - BOX_SIZE_S * 4, 45, -1 /
108 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 35 + BOX_SIZE_L * 3,
109 FLOOR_Y - BOX_SIZE_S * 5, 40, -1 /
110 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 25 + BOX_SIZE_L * 3,
111 FLOOR_Y - BOX_SIZE_S * 6, 40, -1 /
112
113# center
114 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X + BOX_SIZE_L,
115 FLOOR_Y - BOX_SIZE_S * 3, 45, -1 /
116 WOOD, BOX_SIZE_R, BOX_SIZE_S, SHIP_X + 30 + BOX_SIZE_L * 2,
117 FLOOR_Y - BOX_SIZE_S * 3, 45, -1 /
118
119 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 40 + BOX_SIZE_L,
120 FLOOR_Y - BOX_SIZE_S * 4, 45, -1 /
121 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 40 + BOX_SIZE_L * 2,
122 FLOOR_Y - BOX_SIZE_S * 4, 45, -1 /
123
124# center up
125 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X + ( BOX_SIZE_L - BOX_SIZE_S ),
126 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R ), 40, -1 /
127 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X - 15 + ( BOX_SIZE_L + BOX_SIZE_R ),
128 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R ), 40, -1 /
129 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X + BOX_SIZE_L * 2,
130 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R ), 40, -1 /
131 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X + ( BOX_SIZE_L * 2 + BOX_SIZE_R ),
132 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R ), 40, -1 /
133
134#left mid blocks
135 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X + 6 + BOX_SIZE_R,
136 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R ), 80, -1 /
137 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X + 8 + BOX_SIZE_S,
138 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R * 2 ), 50, -1 /
139 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X + 8,
140 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R * 2 ), 30, -1 /
141 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X + 7 - BOX_SIZE_S,
142 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R * 2 ), 10, -1 /
143 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X + 7 - BOX_SIZE_S * 2,
144 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R * 2 ), 10, -1 /
145
146 WOOD, BOX_SIZE_R, BOX_SIZE_S, SHIP_X + 7,
147 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R * 2 ), 20, -1 /
148 WOOD, BOX_SIZE_R, BOX_SIZE_S, SHIP_X + 7 - BOX_SIZE_S * 2,
149 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R * 2 ), 20, -1 /
150
151 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X + BOX_SIZE_L * 2,
152 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R ), 40, -1 /
153 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X + BOX_SIZE_L * 3,
154 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R ), 40, -1 /
155
156 WOOD, BOX_SIZE_S, BOX_SIZE_L, SHIP_X - 15 + ( BOX_SIZE_L + BOX_SIZE_R ),
157 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R + BOX_SIZE_L ), 60, -1 /
158 WOOD, BOX_SIZE_S, BOX_SIZE_L, SHIP_X - 15 + ( BOX_SIZE_L + BOX_SIZE_R ),
159 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R + BOX_SIZE_L * 2 ), 50, 2 /
160 WOOD, BOX_SIZE_L, BOX_SIZE_S, SHIP_X - 25 + BOX_SIZE_L,
161 FLOOR_Y - ( BOX_SIZE_S * 6 + BOX_SIZE_R + BOX_SIZE_L * 2 ), 40, -1 /
162 WOOD, BOX_SIZE_S, BOX_SIZE_L, SHIP_X - 15 + ( BOX_SIZE_L + BOX_SIZE_R ),
163 FLOOR_Y - ( BOX_SIZE_S * 6 + BOX_SIZE_R + BOX_SIZE_L * 3 ), 20, 0 /
164
165 WOOD, BOX_SIZE_S, BOX_SIZE_L,
166 SHIP_X - BOX_SIZE_S + ( BOX_SIZE_L * 2 + BOX_SIZE_R ),
167 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R + BOX_SIZE_L ), 50, -1 /
168 WOOD, BOX_SIZE_S, BOX_SIZE_L, SHIP_X + ( BOX_SIZE_L * 2 + BOX_SIZE_R ),
169 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R + BOX_SIZE_L ), 50, -1 /
170 WOOD, BOX_SIZE_S, BOX_SIZE_L, SHIP_X - 10 + ( BOX_SIZE_L * 2 + BOX_SIZE_R ),
171 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R + BOX_SIZE_L * 2 ), 40, 1 /
172 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X - 10 + ( BOX_SIZE_L * 2 + BOX_SIZE_R ),
173 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R * 2 + BOX_SIZE_L * 2 ), 30, -1 /
174 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X - 10 + ( BOX_SIZE_L * 2 + BOX_SIZE_R ),
175 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R * 3 + BOX_SIZE_L * 2 ), 20, -1 /
176
177 WOOD, BOX_SIZE_S, BOX_SIZE_R, SHIP_X + ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 ),
178 FLOOR_Y - ( BOX_SIZE_S * 5 + BOX_SIZE_R * 2 ), 30, -1 /
179
180 SHIP_ENGINE, BOX_SIZE_L * 3, BOX_SIZE_S, SHIP_X - BOX_SIZE_S, FLOOR_Y, 0, -1
181
182objects = FLAG, 148, 96, SHIP_X - 2,
183 FLOOR_Y - ( 96 + 10 + BOX_SIZE_S * 5 + BOX_SIZE_R * 2 + BOX_SIZE_L * 2 ),0 /
184 SAILFRONT, 324, 376, SHIP_X + ( 20 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ),
185 FLOOR_Y - ( 376 + 4 + BOX_SIZE_S * 4 ), 0 /
186 SAILBACK, 390, 270, SHIP_X - 5 - BOX_SIZE_L,
187 FLOOR_Y - ( 270 + 12 + BOX_SIZE_S * 4 + BOX_SIZE_R * 2 ), 0
188
189targets = PIRATE, TARGET_SIZE, TARGET_SIZE, SHIP_X - 1 + ( BOX_SIZE_L +
190 BOX_SIZE_R + BOX_SIZE_S ), FLOOR_Y - ( TARGET_SIZE + BOX_SIZE_S * 4 ) /
191 PIRATE, TARGET_SIZE, TARGET_SIZE, SHIP_X + 3 + ( BOX_SIZE_R * 2 ),
192 FLOOR_Y - ( TARGET_SIZE + BOX_SIZE_S * 5 + BOX_SIZE_R ) /
193 PIRATE, TARGET_SIZE, TARGET_SIZE, SHIP_X + ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 ),
194 FLOOR_Y - ( TARGET_SIZE + BOX_SIZE_S * 5 + BOX_SIZE_R )
diff --git a/data/levels/level05.cfg b/data/levels/level05.cfg
new file mode 100644
index 0000000..5d7be00
--- /dev/null
+++ b/data/levels/level05.cfg
@@ -0,0 +1,264 @@
1# use '#' for comments
2# use '/' to separate elements of lists
3# use ',' to separate properties of elements
4# use ' ' after '(' and before ')'
5
6[Consts]
7WIDTH = 1280
8HEIGHT = 720
9FLOOR_Y = 610
10
11BOX_SIZE_S = 20
12BOX_SIZE_R = 40
13BOX_SIZE_L = 120
14TARGET_SIZE = 60
15PRISON_X = 1300
16
17STONE = stone
18WOOD = wood
19
20PIRATE = pirate
21BOSS = boss
22
23PRISONBAR80 = prisonbar_80
24PRISONBAR100 = prisonbar_100
25PRISONBAR120 = prisonbar_120
26
27[General]
28level_num = 6
29level_id = pirate_prison
30cannon_pos_x = 130
31cannon_pos_y = FLOOR_Y - ( 68 + BOX_SIZE_R )
32ammo = 2
33bg = 1
34time_attack = 0
35
36[Elements]
37blocks = STONE, BOX_SIZE_R, BOX_SIZE_L, 0, FLOOR_Y - BOX_SIZE_L, 0, -1 /
38 STONE, BOX_SIZE_R, BOX_SIZE_R, 0,
39 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R ), 0, -1 /
40 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R, FLOOR_Y - BOX_SIZE_R, 0, -1 /
41 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R, FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
42 STONE, BOX_SIZE_R, BOX_SIZE_R, BOX_SIZE_R, FLOOR_Y - BOX_SIZE_R * 3, 0, -1 /
43
44 STONE, BOX_SIZE_L, BOX_SIZE_R, BOX_SIZE_R * 2, FLOOR_Y - BOX_SIZE_R, 0, -1 /
45 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 2 + BOX_SIZE_L ),
46 FLOOR_Y - BOX_SIZE_R, 0, -1 /
47 STONE, BOX_SIZE_L, BOX_SIZE_R, ( BOX_SIZE_R * 3 + BOX_SIZE_L ),
48 FLOOR_Y - BOX_SIZE_R, 0, -1 /
49
50 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 ),
51 FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
52 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 ),
53 FLOOR_Y - BOX_SIZE_R, 0, -1 /
54 STONE, BOX_SIZE_R, BOX_SIZE_R, ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 ),
55 FLOOR_Y - BOX_SIZE_R * 2, 0, -1 /
56
57#PRISON
58 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X - ( BOX_SIZE_S * 5 + BOX_SIZE_R ),
59 FLOOR_Y - BOX_SIZE_S, 30, -1 /
60 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X - ( BOX_SIZE_S * 5 + BOX_SIZE_R ),
61 FLOOR_Y - BOX_SIZE_S * 2, 30, -1 /
62 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X - ( BOX_SIZE_S * 5 + BOX_SIZE_R ),
63 FLOOR_Y - BOX_SIZE_S * 3, 30, -1 /
64 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X - ( BOX_SIZE_S * 5 + BOX_SIZE_R ),
65 FLOOR_Y - BOX_SIZE_S * 4, 30, -1 /
66 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X - ( BOX_SIZE_S * 5 + BOX_SIZE_R ),
67 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R ), 30, -1 /
68
69 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X - BOX_SIZE_S * 5,
70 FLOOR_Y - BOX_SIZE_R, 30, -1 /
71 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X - BOX_SIZE_S * 4,
72 FLOOR_Y - BOX_SIZE_R, 30, -1 /
73 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X - BOX_SIZE_S * 3,
74 FLOOR_Y - BOX_SIZE_R, 30, -1 /
75 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X - BOX_SIZE_S * 2,
76 FLOOR_Y - BOX_SIZE_R, 30, -1 /
77
78 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X - BOX_SIZE_S,
79 FLOOR_Y - BOX_SIZE_R, 30, -1 /
80 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + BOX_SIZE_S,
81 FLOOR_Y - BOX_SIZE_R, 30, -1 /
82 STONE, BOX_SIZE_L, BOX_SIZE_R, PRISON_X + BOX_SIZE_S,
83 FLOOR_Y - BOX_SIZE_R * 2, 30, -1 /
84 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R ),
85 FLOOR_Y - BOX_SIZE_R, 30, -1 /
86 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 2 ),
87 FLOOR_Y - BOX_SIZE_R, 30, -1 /
88 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 3 ),
89 FLOOR_Y - BOX_SIZE_R, 30, -1 /
90 STONE, BOX_SIZE_R, BOX_SIZE_L, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 3 ),
91 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L ), 30, -1 /
92
93 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R *4 ),
94 FLOOR_Y - BOX_SIZE_S, 30, -1 /
95 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 4 ),
96 FLOOR_Y - BOX_SIZE_S * 2, 30, -1 /
97 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 4 ),
98 FLOOR_Y - BOX_SIZE_S * 3, 30, -1 /
99 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 4 ),
100 FLOOR_Y - BOX_SIZE_S * 4, 30, -1 /
101
102 STONE, BOX_SIZE_R, BOX_SIZE_L, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 5 ),
103 FLOOR_Y - BOX_SIZE_L, 30, -1 /
104 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 5 ),
105 FLOOR_Y - ( BOX_SIZE_L + BOX_SIZE_R ), 30, -1 /
106 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 6 ),
107 FLOOR_Y - BOX_SIZE_R, 30, -1 /
108 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 6 ),
109 FLOOR_Y - BOX_SIZE_R * 2, 30, -1 /
110 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 7 ),
111 FLOOR_Y - BOX_SIZE_R, 30, -1 /
112 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 7 ),
113 FLOOR_Y - BOX_SIZE_R * 2, 30, -1 /
114 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 8 ),
115 FLOOR_Y - BOX_SIZE_R, 30, -1 /
116 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 9 ),
117 FLOOR_Y - BOX_SIZE_R, 30, -1 /
118 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 9 ),
119 FLOOR_Y - BOX_SIZE_R * 2, 30, -1 /
120 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 10 ),
121 FLOOR_Y - BOX_SIZE_R, 30, -1 /
122
123 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 11 ),
124 FLOOR_Y - BOX_SIZE_R, 30, -1 /
125 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S * 2 + BOX_SIZE_R * 11 ),
126 FLOOR_Y - BOX_SIZE_R, 30, -1 /
127 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S * 3 + BOX_SIZE_R * 11 ),
128 FLOOR_Y - BOX_SIZE_R, 30, -1 /
129 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S * 4 + BOX_SIZE_R * 11 ),
130 FLOOR_Y - BOX_SIZE_R, 30, -1 /
131
132 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S * 5 + BOX_SIZE_R * 11 ),
133 FLOOR_Y - BOX_SIZE_S, 30, -1 /
134 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S * 5 + BOX_SIZE_R * 11 ),
135 FLOOR_Y - BOX_SIZE_S * 2, 30, -1 /
136 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S * 5 + BOX_SIZE_R * 11 ),
137 FLOOR_Y - BOX_SIZE_S * 3, 30, -1 /
138 WOOD, BOX_SIZE_R, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S * 5 + BOX_SIZE_R * 11 ),
139 FLOOR_Y - BOX_SIZE_S * 4, 30, -1 /
140 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S * 5 + BOX_SIZE_R * 11 ),
141 FLOOR_Y - ( BOX_SIZE_S * 4 + BOX_SIZE_R ), 30, -1 /
142
143 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X,
144 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L ), 30, 0 /
145 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 2 ),
146 FLOOR_Y - BOX_SIZE_R * 3, 30, -1 /
147 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 2 ),
148 FLOOR_Y - BOX_SIZE_R * 4, 30, -1 /
149 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 8 ),
150 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L ), 30, -1 /
151 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + ( BOX_SIZE_S * 2 + BOX_SIZE_R * 8 ),
152 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L ), 30, -1 /
153 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + ( BOX_SIZE_S * 2 + BOX_SIZE_R * 10 ),
154 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L ), 30, -1 /
155
156 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X,
157 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L + BOX_SIZE_S ), 25, 1 /
158 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + BOX_SIZE_L,
159 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
160 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + BOX_SIZE_L * 2,
161 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L + BOX_SIZE_S ), 25, 2 /
162 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + BOX_SIZE_L * 3,
163 FLOOR_Y - ( BOX_SIZE_R + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
164
165 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_S,
166 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
167 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 2,
168 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
169 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 3 ),
170 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
171 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 5,
172 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
173 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 6 ),
174 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
175 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 8,
176 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S ), 25, 3 /
177 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 9 ),
178 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
179 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 11,
180 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S ), 25, -1 /
181
182 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X,
183 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
184 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + BOX_SIZE_L,
185 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
186 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + BOX_SIZE_L * 2,
187 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
188 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + BOX_SIZE_L * 3,
189 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
190
191 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + BOX_SIZE_S,
192 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
193 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + BOX_SIZE_R * 2,
194 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
195 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X,
196 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 3 ), 20, -1 /
197 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X,
198 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, -1 /
199 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_S,
200 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, -1 /
201 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 2,
202 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, -1 /
203 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + BOX_SIZE_S * 2,
204 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, -1 /
205
206 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 5,
207 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
208 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 6 ),
209 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
210 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R *4 ),
211 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L + BOX_SIZE_S * 3 ), 20, -1 /
212 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 5 ),
213 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L + BOX_SIZE_S * 2 ), 20, -1 /
214
215 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 9 ),
216 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
217 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + BOX_SIZE_R * 11,
218 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
219 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + BOX_SIZE_L * 3,
220 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 3 ), 20, -1 /
221 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + BOX_SIZE_L * 3,
222 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, -1 /
223 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 9 ),
224 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, -1 /
225 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 11,
226 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, -1 /
227 STONE, BOX_SIZE_R, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 10,
228 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, -1 /
229
230 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 2 ),
231 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 5 ), 20, 5 /
232 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 6 ),
233 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 5 ), 20, 6 /
234 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + BOX_SIZE_R * 4,
235 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
236 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + BOX_SIZE_R * 4,
237 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
238 WOOD, BOX_SIZE_S, BOX_SIZE_L, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 7 ),
239 FLOOR_Y - ( BOX_SIZE_R * 2 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
240 WOOD, BOX_SIZE_S, BOX_SIZE_R, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R * 7 ),
241 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 2 ), 20, -1 /
242 WOOD, BOX_SIZE_L, BOX_SIZE_S, PRISON_X + ( BOX_SIZE_S + BOX_SIZE_R *4 ),
243 FLOOR_Y - ( BOX_SIZE_R * 3 + BOX_SIZE_L * 2 + BOX_SIZE_S * 4 ), 20, 4
244
245objects = PRISONBAR80, 8, 80, PRISON_X - 5 + BOX_SIZE_S * 2,
246 FLOOR_Y - ( 79 + BOX_SIZE_R * 2), 1 /
247 PRISONBAR80, 8, 80, PRISON_X - 10 + BOX_SIZE_S * 4,
248 FLOOR_Y - ( 79 + BOX_SIZE_R * 2), 1 /
249 PRISONBAR80, 8, 80, PRISON_X + 5 + ( BOX_SIZE_S * 2 + BOX_SIZE_R * 6 ),
250 FLOOR_Y - ( 79 + BOX_SIZE_R * 2), 1 /
251 PRISONBAR80, 8, 80, PRISON_X - 5 + ( BOX_SIZE_S * 4 + BOX_SIZE_R * 6 ),
252 FLOOR_Y - ( 79 + BOX_SIZE_R * 2), 1 /
253
254 PRISONBAR120, 8, 120, PRISON_X - 4 + ( BOX_SIZE_S * 4 + BOX_SIZE_R * 4 ),
255 FLOOR_Y - ( 119 + BOX_SIZE_R * 6 + BOX_SIZE_S * 3 ), 1 /
256 PRISONBAR100, 8, 100, PRISON_X + 5 + ( BOX_SIZE_S * 4 + BOX_SIZE_R * 3 ),
257 FLOOR_Y - ( 99 + BOX_SIZE_R * 6 + BOX_SIZE_S * 3 ), 1 /
258 PRISONBAR100, 8, 100, PRISON_X - 13 + ( BOX_SIZE_S * 4 + BOX_SIZE_R * 5 ),
259 FLOOR_Y - ( 99 + BOX_SIZE_R * 6 + BOX_SIZE_S * 3 ), 1
260
261targets = PIRATE, TARGET_SIZE, TARGET_SIZE, PRISON_X + 10 + BOX_SIZE_S,
262 FLOOR_Y - ( TARGET_SIZE + BOX_SIZE_S * 4 ) /
263 BOSS, 110, 88, PRISON_X + 25 + ( BOX_SIZE_L + BOX_SIZE_R ),
264 FLOOR_Y - ( 88 + BOX_SIZE_R * 3 + BOX_SIZE_L + BOX_SIZE_S * 3 )
diff --git a/data/levels/levels.list b/data/levels/levels.list
new file mode 100644
index 0000000..c0a6fe8
--- /dev/null
+++ b/data/levels/levels.list
@@ -0,0 +1,6 @@
1small_castle
2medium_castle
3big_castle
4pirate_beach
5pirate_ship
6pirate_prison
diff --git a/data/levels/levelskel.txt b/data/levels/levelskel.txt
new file mode 100644
index 0000000..c46dac9
--- /dev/null
+++ b/data/levels/levelskel.txt
@@ -0,0 +1,37 @@
1# use '#' for comments
2# use '/' to separate elements of lists
3# use ',' to separate properties of elements
4
5[Consts]
6WIDTH = 1280
7HEIGHT = 720
8FLOOR_Y = 610
9
10BOX_SIZE_S = 20
11BOX_SIZE_R = 40
12BOX_SIZE_L = 120
13TARGET_SIZE = 60
14
15STONE = stone
16WOOD = wood
17
18PIRATE = pirate
19BOSS = boss
20
21EASY = 0
22MEDIUM = 1
23HARD = 2
24
25[General]
26level_num =
27level_id =
28canon_pos_x =
29canon_pos_y =
30ammo =
31bg =
32time_attack =
33
34[Elements]
35blocks =
36objects =
37targets =
diff --git a/data/sound/Makefile.am b/data/sound/Makefile.am
new file mode 100644
index 0000000..2577edd
--- /dev/null
+++ b/data/sound/Makefile.am
@@ -0,0 +1,12 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3filesdir = $(sound_dir)
4files_DATA = \
5 main.wav \
6 bars.wav \
7 battle.wav \
8 button.wav \
9 cannon.wav \
10 pop.wav
11
12EXTRA_DIST = $(files_DATA)
diff --git a/data/sound/bars.wav b/data/sound/bars.wav
new file mode 100644
index 0000000..d99ed88
--- /dev/null
+++ b/data/sound/bars.wav
Binary files differ
diff --git a/data/sound/battle.wav b/data/sound/battle.wav
new file mode 100644
index 0000000..6125f12
--- /dev/null
+++ b/data/sound/battle.wav
Binary files differ
diff --git a/data/sound/button.wav b/data/sound/button.wav
new file mode 100644
index 0000000..d186cee
--- /dev/null
+++ b/data/sound/button.wav
Binary files differ
diff --git a/data/sound/cannon.wav b/data/sound/cannon.wav
new file mode 100644
index 0000000..0214f1f
--- /dev/null
+++ b/data/sound/cannon.wav
Binary files differ
diff --git a/data/sound/main.wav b/data/sound/main.wav
new file mode 100644
index 0000000..d0639ec
--- /dev/null
+++ b/data/sound/main.wav
Binary files differ
diff --git a/data/sound/pop.wav b/data/sound/pop.wav
new file mode 100644
index 0000000..480da6f
--- /dev/null
+++ b/data/sound/pop.wav
Binary files differ
diff --git a/data/theme/Makefile.am b/data/theme/Makefile.am
new file mode 100644
index 0000000..8dce634
--- /dev/null
+++ b/data/theme/Makefile.am
@@ -0,0 +1,37 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3SUBDIRS = images fonts
4
5EDJE_CC = @edje_cc@
6EDJE_FLAGS_VERBOSE_ =
7EDJE_FLAGS_VERBOSE_0 =
8EDJE_FLAGS_VERBOSE_1 = -v
9EDJE_FLAGS = $(EDJE_FLAGS_$(V)) -id $(top_srcdir)/data/theme/images -fd $(top_srcdir)/data/theme/fonts
10
11filesdir = $(datadir)/efbb/
12
13files_DATA = efbb.edj
14
15EXTRA_DIST = \
16 ammo.edc \
17 bar.edc \
18 boom.edc \
19 button.edc \
20 cannon.edc \
21 gengrid.edc \
22 lvlsel_win.edc \
23 main.edc \
24 main_win.edc \
25 objects.edc \
26 options.edc \
27 retry_win.edc \
28 score.edc
29
30
31efbb.edj: Makefile $(EXTRA_DIST)
32 $(EDJE_CC) $(EDJE_FLAGS) \
33 $(top_srcdir)/data/theme/main.edc \
34 $(top_builddir)/data/theme/efbb.edj
35
36clean-local:
37 rm -f *.edj
diff --git a/data/theme/ammo.edc b/data/theme/ammo.edc
new file mode 100644
index 0000000..2dc6160
--- /dev/null
+++ b/data/theme/ammo.edc
@@ -0,0 +1,77 @@
1group {
2 name: "ammo";
3
4 images {
5 image: "bomb.png" COMP;
6 }
7
8 script {
9 public message(Msg_Type:type, id, ...) {
10 if ((type == MSG_INT) && (id == MSG_ID_AMMO)) {
11 new ammo = getarg(2);
12 new bomb;
13 for (bomb = 1; bomb <= 10; bomb++) {
14 new emission[16];
15 if (bomb <= ammo)
16 snprintf(emission, sizeof(emission), "bomb%i,visible", bomb);
17 else
18 snprintf(emission, sizeof(emission), "bomb%i,hide", bomb);
19 emit(emission, "cannon_theme");
20 }
21 }
22 }
23 }
24
25 parts {
26
27#define BOMB(_n, _x, _y) \
28 part { \
29 name: "bomb"_n; \
30 type: IMAGE; \
31 mouse_events: 0; \
32 description { \
33 state: "default" 0.0; \
34 min: 30 30; \
35 max: 30 30; \
36 fixed: 1 1; \
37 rel1.offset: _x (_y + 16); \
38 rel2.offset: (_x - 1) (_y + 15); \
39 image.normal: "bomb.png"; \
40 color: 255 255 255 0; \
41 align: 0 1; \
42 } \
43 description { \
44 state: "visible" 0.0; \
45 inherit: "default" 0.0; \
46 color: 255 255 255 255; \
47 } \
48 } \
49 \
50 program { \
51 name: "bomb"_n",visible"; \
52 signal: "bomb"_n",visible"; \
53 source: "cannon_theme"; \
54 action: STATE_SET "visible" 0.0; \
55 transition: ACCELERATE 0.2; \
56 target: "bomb"_n; \
57 } \
58 \
59 program { \
60 name: "bomb"_n",hide"; \
61 signal: "bomb"_n",hide"; \
62 source: "cannon_theme"; \
63 action: STATE_SET "default" 0.0; \
64 transition: ACCELERATE 0.2; \
65 target: "bomb"_n; \
66 }
67
68 BOMB(10, 45, -75)
69 BOMB(6, 30, -50) BOMB(9, 60, -50)
70 BOMB(5, 15, -25) BOMB(3, 45, -25) BOMB(8, 75, -25)
71 BOMB(4, 0, 0) BOMB(1, 30, 0) BOMB(2, 60, 0) BOMB(7, 90, 0)
72
73#undef BOMB
74
75 }
76
77}
diff --git a/data/theme/bar.edc b/data/theme/bar.edc
new file mode 100644
index 0000000..ef78275
--- /dev/null
+++ b/data/theme/bar.edc
@@ -0,0 +1,98 @@
1group {
2 name: "bar";
3
4 script {
5 public message(Msg_Type:type, id, ...) {
6 if ((type == MSG_INT) && (id == MSG_ID_STRENGTH)) {
7 new Float:st = getarg(2);
8 set_tween_state(PART:"circle_1", (st - (100/8) * 0) / (100/8),
9 "default", 0.0, "visible", 0.0);
10 set_tween_state(PART:"circle_2", (st - (100/8) * 1) / (100/8),
11 "default", 0.0, "visible", 0.0);
12 set_tween_state(PART:"circle_3", (st - (100/8) * 2) / (100/8),
13 "default", 0.0, "visible", 0.0);
14 set_tween_state(PART:"circle_4", (st - (100/8) * 3) / (100/8),
15 "default", 0.0, "visible", 0.0);
16 set_tween_state(PART:"circle_5", (st - (100/8) * 4) / (100/8),
17 "default", 0.0, "visible", 0.0);
18 set_tween_state(PART:"circle_6", (st - (100/8) * 5) / (100/8),
19 "default", 0.0, "visible", 0.0);
20 set_tween_state(PART:"circle_7", (st - (100/8) * 6) / (100/8),
21 "default", 0.0, "visible", 0.0);
22 set_tween_state(PART:"circle_8", (st - (100/8) * 7) / (100/8),
23 "default", 0.0, "visible", 0.0);
24 }
25 }
26 }
27
28 images {
29 image: "bar_border.png" COMP;
30 }
31
32 parts {
33
34#define BAR(_n, _w, _h, _relto, _offset) \
35 images { \
36 image: "bar"_n"_"_w"_"_h".png" COMP; \
37 } \
38 \
39 part { \
40 name: "circle_"_n; \
41 type: IMAGE; \
42 mouse_events: 0; \
43 description { \
44 state: "default" 0.0; \
45 min: _w _h; \
46 max: _w _h; \
47 image.normal: "bar"_n"_"_w"_"_h".png"; \
48 rel1.to: "circle_"_relto; \
49 rel1.relative: 1 0.5; \
50 rel1.offset: _offset 0; \
51 rel2.to: "circle_"_relto; \
52 rel2.relative: 1 0.5; \
53 rel2.offset: _offset -1; \
54 align: 0 0.5; \
55 color: 255 255 255 0; \
56 } \
57 description { \
58 state: "visible" 0.0; \
59 inherit: "default" 0.0; \
60 color: 255 255 255 255; \
61 } \
62 }
63
64 BAR(1, 45, 21, 0, 1) BAR(2, 22, 26, 1, -3) BAR(3, 23, 30, 2, -5)
65 BAR(4, 25, 35, 3, -7) BAR(5, 27, 39, 4, -9) BAR(6, 29, 43, 5, -11)
66 BAR(7, 32, 49, 6, -14) BAR(8, 36, 49, 7, -17)
67
68#undef BAR
69
70 part {
71 name: "border";
72 type: IMAGE;
73 mouse_events: 0;
74 description {
75 state: "default" 0.0;
76 min: 175 53;
77 max: 175 53;
78 image.normal: "bar_border.png";
79 }
80 }
81
82 part {
83 name: "circle_0";
84 type: RECT;
85 mouse_events: 0;
86 description {
87 state: "default" 0.0;
88 min: 1 1;
89 max: 1 1;
90 rel1.offset: -89 0;
91 rel2.offset: -88 -1;
92 color: 255 255 255 0;
93 }
94 }
95
96 }
97
98}
diff --git a/data/theme/boom.edc b/data/theme/boom.edc
new file mode 100644
index 0000000..b41988e
--- /dev/null
+++ b/data/theme/boom.edc
@@ -0,0 +1,179 @@
1group {
2 name: "boom";
3
4 images {
5 image: "smoke_1.png" COMP;
6 image: "smoke_2.png" COMP;
7 }
8
9 parts {
10
11 part {
12 name: "smoke1";
13 type: IMAGE;
14 mouse_events: 0;
15 description {
16 state: "default" 0.0;
17 min: 60 60;
18 max: 60 60;
19 color: 255 255 255 0;
20 fixed: 1 1;
21 image.normal: "smoke_1.png";
22 }
23 description {
24 state: "visible" 0.0;
25 inherit: "default" 0.0;
26 color: 255 255 255 200;
27 }
28 description {
29 state: "hidden" 0.0;
30 inherit: "default" 0.0;
31 min: 80 80;
32 max: 80 80;
33 rel1.offset: 40 -5;
34 rel2.offset: 39 -6;
35 color: 255 255 255 0;
36 }
37 }
38
39 part {
40 name: "smoke2";
41 type: IMAGE;
42 mouse_events: 0;
43 description {
44 state: "default" 0.0;
45 min: 47 33;
46 max: 47 33;
47 color: 255 255 255 0;
48 fixed: 1 1;
49 image.normal: "smoke_2.png";
50 rel1 {
51 offset: 4 38;
52 }
53 rel2 {
54 offset: 3 37;
55 }
56 }
57 description {
58 state: "visible" 0.0;
59 inherit: "default" 0.0;
60 color: 255 255 255 200;
61 }
62 description {
63 state: "hidden" 0.0;
64 inherit: "default" 0.0;
65 min: 55 40;
66 max: 55 40;
67 rel1.offset: 41 18;
68 rel2.offset: 40 17;
69 color: 255 255 255 0;
70 }
71 }
72
73 part {
74 name: "points";
75 type: TEXT;
76 effect: GLOW;
77 description {
78 state: "default" 0.0;
79 min: 70 55;
80 max: 70 55;
81 color: 255 255 255 255;
82 text {
83 text: "";
84 font: "Game";
85 size: 32;
86 align: 0.5 0.5;
87 }
88 }
89 description {
90 state: "target" 0.0;
91 inherit: "default" 0.0;
92 color_class: "success";
93 text.size: 45;
94 }
95 description {
96 state: "hidden_outline" 0.0;
97 inherit: "default" 0.0;
98 color2: 200 200 200 0;
99 color3: 200 200 200 0;
100 text.size: 25;
101 }
102 description {
103 state: "hidden" 0.0;
104 inherit: "hidden_outline" 0.0;
105 color: 255 255 255 0;
106 text.size: 20;
107 }
108 }
109
110 }
111
112 programs {
113
114 program {
115 name: "smoke,show";
116 signal: "load";
117 action: STATE_SET "visible" 0.0;
118 transition: ACCELERATE 0.12;
119 target: "smoke1";
120 target: "smoke2";
121 after: "smoke1,fade,out";
122 after: "smoke2,fade,out";
123 after: "points,hide";
124 }
125
126 program {
127 name: "smoke1,fade,out";
128 action: STATE_SET "hidden" 0.0;
129 transition: ACCELERATE 0.6;
130 target: "smoke1";
131 after: "smokes,hide";
132 }
133
134 program {
135 name: "smoke2,fade,out";
136 action: STATE_SET "hidden" 0.0;
137 transition: ACCELERATE 0.4;
138 target: "smoke2";
139 }
140
141 program {
142 name: "smokes,hide";
143 action: STATE_SET "default" 0.0;
144 target: "smoke1";
145 target: "smoke2";
146 after: "boom,end";
147 }
148
149 program {
150 name: "points,hide";
151 action: STATE_SET "hidden_outline" 0.0;
152 transition: ACCELERATE 0.2;
153 target: "points";
154 after: "points,fullhide";
155 }
156
157 program {
158 name: "points,fullhide";
159 action: STATE_SET "hidden" 0.0;
160 transition: ACCELERATE 0.2;
161 target: "points";
162 }
163
164 program {
165 name: "points,target";
166 source: "boom";
167 signal: "istarget";
168 action: STATE_SET "target" 0.0;
169 target: "points";
170 }
171
172 program {
173 name: "boom,end";
174 action: SIGNAL_EMIT "end" "boom";
175 }
176
177 }
178
179}
diff --git a/data/theme/button.edc b/data/theme/button.edc
new file mode 100644
index 0000000..1ae3bff
--- /dev/null
+++ b/data/theme/button.edc
@@ -0,0 +1,185 @@
1#define BUTTON_STYLE_SET(_name) \
2 \
3 group { \
4 name: "elm/button/base/efbb-"_name; \
5 \
6 images { \
7 image: "btn_"_name".png" COMP; \
8 image: "btn_"_name"_pressed.png" COMP; \
9 } \
10 \
11 parts { \
12 \
13 part { \
14 name: "blocker"; \
15 type: RECT; \
16 mouse_events: 1; \
17 description { \
18 state: "default" 0.0; \
19 color: 255 255 255 0; \
20 } \
21 } \
22 \
23 part { \
24 name: "base"; \
25 type: IMAGE; \
26 mouse_events: 0; \
27 description { \
28 state: "default" 0.0; \
29 min: 100 98; \
30 max: 200 196; \
31 image.normal: "btn_"_name".png"; \
32 } \
33 description { \
34 state: "pressed" 0.0; \
35 inherit: "default" 0.0; \
36 image.normal: "btn_"_name"_pressed.png"; \
37 } \
38 } \
39 \
40 part { \
41 name: "elm.text"; \
42 type: TEXT; \
43 effect: GLOW; \
44 mouse_events: 0; \
45 description { \
46 state: "default" 0.0; \
47 color_class: "button"; \
48 text { \
49 font: "Game"; \
50 size: 180; \
51 } \
52 } \
53 description { \
54 state: "pressed" 0.0; \
55 inherit: "default" 0.0; \
56 color_class: "button_pressed"; \
57 } \
58 } \
59 \
60 part { \
61 name: "over"; \
62 type: RECT; \
63 mouse_events: 1; \
64 ignore_flags: ON_HOLD; \
65 description { \
66 state: "default" 0.0; \
67 color: 255 255 255 0; \
68 } \
69 } \
70 \
71 } \
72 \
73 programs { \
74 \
75 program { \
76 name: "bt_clicked"; \
77 source: "over"; \
78 signal: "mouse,clicked,1"; \
79 action: SIGNAL_EMIT "elm,action,click" ""; \
80 } \
81 \
82 program { \
83 name: "bt_pressed"; \
84 source: "over"; \
85 signal: "mouse,down,1"; \
86 action: STATE_SET "pressed" 0.0; \
87 target: "base"; \
88 target: "elm.text"; \
89 } \
90 \
91 program { \
92 name: "bt_unpressed"; \
93 source: "over"; \
94 signal: "mouse,up,1"; \
95 action: STATE_SET "default" 0.0; \
96 target: "base"; \
97 target: "elm.text"; \
98 } \
99 \
100 } \
101 \
102 }
103
104BUTTON_STYLE_SET("regular")
105BUTTON_STYLE_SET("back")
106BUTTON_STYLE_SET("forward")
107
108group {
109 name: "elm/button/base/efbb-plain";
110
111 parts {
112
113 part {
114 name: "blocker";
115 type: RECT;
116 mouse_events: 1;
117 description {
118 state: "default" 0.0;
119 color: 255 255 255 0;
120 }
121 }
122
123 part {
124 name: "elm.text";
125 type: TEXT;
126 effect: GLOW;
127 mouse_events: 0;
128 description {
129 state: "default" 0.0;
130 color_class: "regular";
131 text {
132 font: "Game";
133 size: 60;
134 }
135 }
136 description {
137 state: "pressed" 0.0;
138 inherit: "default" 0.0;
139 color_class: "regular_pressed";
140 }
141 }
142
143 part {
144 name: "over";
145 type: RECT;
146 mouse_events: 1;
147 ignore_flags: ON_HOLD;
148 description {
149 state: "default" 0.0;
150 color: 255 255 255 0;
151 }
152 }
153
154 }
155
156 programs {
157
158 program {
159 name: "bt_clicked";
160 source: "over";
161 signal: "mouse,clicked,1";
162 action: SIGNAL_EMIT "elm,action,click" "";
163 }
164
165 program {
166 name: "bt_pressed";
167 source: "over";
168 signal: "mouse,down,1";
169 action: STATE_SET "pressed" 0.0;
170 target: "elm.text";
171 }
172
173 program {
174 name: "bt_unpressed";
175 source: "over";
176 signal: "mouse,up,1";
177 action: STATE_SET "default" 0.0;
178 target: "elm.text";
179 }
180
181 }
182
183}
184
185#undef BUTTON_STYLE_SET
diff --git a/data/theme/cannon.edc b/data/theme/cannon.edc
new file mode 100644
index 0000000..4e93c1a
--- /dev/null
+++ b/data/theme/cannon.edc
@@ -0,0 +1,639 @@
1/*
2 * Cannon Interface
3 *
4 * signals emmitted:
5 * - "empty" "cannon_theme" -> after half shoot animation is done
6 *
7 * signals received:
8 * - "load" "cannon" -> bar should be visible
9 * - "shoot" "cannon" -> bar should be hidden and shoot animation starts
10 *
11 * messages received:
12 * - type:int id: 0 -> ammo ammout, value between 0 and 10
13 * - type:int id: 1 -> cannon rotation angle (degrees)
14 * - type:int id: 2 -> cannon bar strength, value between 0 and 100
15 *
16 */
17
18
19group {
20 name: "cannon_explosion";
21
22 images {
23 image: "explosion.png" COMP;
24 }
25 parts {
26
27 part {
28 name: "explosion";
29 type: IMAGE;
30 mouse_events: 0;
31 description {
32 state: "default" 0.0;
33 min: 50 70;
34 max: 50 70;
35 color: 255 255 255 0;
36 image.normal: "explosion.png";
37 }
38 description {
39 state: "visible" 0.0;
40 inherit: "default" 0.0;
41 min: 110 100;
42 max: 110 100;
43 color: 255 255 255 255;
44 }
45 description {
46 state: "hidden" 0.0;
47 inherit: "default" 0.0;
48 min: 140 110;
49 max: 140 110;
50 color: 255 255 255 0;
51 }
52 }
53
54 }
55
56 programs {
57
58 program {
59 name: "explosion,show";
60 source: "cannon_theme";
61 signal: "explosion,show";
62 action: STATE_SET "visible" 0.0;
63 transition: ACCELERATE 0.1;
64 target: "explosion";
65 after: "explosion,fade,out";
66 }
67
68 program {
69 name: "explosion,fade,out";
70 action: STATE_SET "hidden" 0.0;
71 transition: ACCELERATE 0.1;
72 target: "explosion";
73 after: "explosion,hide";
74 }
75
76 program {
77 name: "explosion,hide";
78 action: STATE_SET "default" 0.0;
79 target: "explosion";
80 }
81
82 }
83
84}
85
86group {
87 name: "cannon_body";
88 images {
89 image: "cannon_body.png" COMP;
90 }
91
92 parts {
93
94 part {
95 name: "body";
96 type: IMAGE;
97 mouse_events: 0;
98 description {
99 state: "default" 0.0;
100 min: 246 50;
101 max: 246 50;
102 image.normal: "cannon_body.png";
103 }
104 description {
105 state: "back" 0.0;
106 inherit: "default" 0.0;
107 rel1.offset: -10 0;
108 rel2.offset: -11 -1;
109 }
110 }
111
112 }
113
114 programs {
115
116 program {
117 name: "body,back";
118 source: "cannon_theme";
119 signal: "body,back";
120 action: STATE_SET "back" 0.0;
121 transition: ACCELERATE 0.16;
122 target: "body";
123 after: "body,default";
124 }
125
126 program {
127 name: "body,default";
128 action: STATE_SET "default" 0.0;
129 transition: ACCELERATE 0.16;
130 target: "body";
131 }
132
133 }
134
135}
136
137group {
138 name: "cannon_smoke1";
139
140 images {
141 image: "smoke_1.png" COMP;
142 image: "smoke_2.png" COMP;
143 }
144
145 parts {
146
147 part {
148 name: "smoke1";
149 type: IMAGE;
150 mouse_events: 0;
151 description {
152 state: "default" 0.0;
153 min: 76 76;
154 max: 76 76;
155 color: 255 255 255 0;
156 fixed: 1 1;
157 image.normal: "smoke_1.png";
158 }
159 description {
160 state: "visible" 0.0;
161 inherit: "default" 0.0;
162 color: 255 255 255 200;
163 }
164 description {
165 state: "hidden" 0.0;
166 inherit: "default" 0.0;
167 min: 100 100;
168 max: 100 100;
169 rel1.offset: 50 -10;
170 rel2.offset: 49 -11;
171 color: 255 255 255 0;
172 }
173 }
174
175 part {
176 name: "smoke2";
177 type: IMAGE;
178 mouse_events: 0;
179 description {
180 state: "default" 0.0;
181 min: 52 38;
182 max: 52 38;
183 color: 255 255 255 0;
184 fixed: 1 1;
185 image.normal: "smoke_2.png";
186 rel1 {
187 offset: 4 68;
188 }
189 rel2 {
190 offset: 3 67;
191 }
192 }
193 description {
194 state: "visible" 0.0;
195 inherit: "default" 0.0;
196 color: 255 255 255 200;
197 }
198 description {
199 state: "hidden" 0.0;
200 inherit: "default" 0.0;
201 min: 60 45;
202 max: 60 45;
203 rel1.offset: 41 48;
204 rel2.offset: 40 47;
205 color: 255 255 255 0;
206 }
207 }
208
209 }
210
211 programs {
212
213 program {
214 name: "smoke,show";
215 source: "cannon_theme";
216 signal: "smoke1,show";
217 action: STATE_SET "visible" 0.0;
218 transition: ACCELERATE 0.12;
219 target: "smoke1";
220 target: "smoke2";
221 after: "smoke1,fade,out";
222 after: "smoke2,fade,out";
223 }
224
225 program {
226 name: "smoke1,fade,out";
227 action: STATE_SET "hidden" 0.0;
228 transition: ACCELERATE 0.6;
229 target: "smoke1";
230 after: "smokes,hide";
231 }
232
233 program {
234 name: "smoke2,fade,out";
235 action: STATE_SET "hidden" 0.0;
236 transition: ACCELERATE 0.4;
237 target: "smoke2";
238 }
239
240 program {
241 name: "smokes,hide";
242 action: STATE_SET "default" 0.0;
243 target: "smoke1";
244 target: "smoke2";
245 }
246
247 }
248
249}
250
251group {
252 name: "cannon_smoke2";
253
254 images {
255 image: "smoke_3.png" COMP;
256 }
257
258 parts {
259
260 part {
261 name: "smoke";
262 type: IMAGE;
263 mouse_events: 0;
264 description {
265 state: "default" 0.0;
266 min: 52 38;
267 max: 52 38;
268 color: 255 255 255 0;
269 fixed: 1 1;
270 image.normal: "smoke_3.png";
271 }
272 description {
273 state: "visible" 0.0;
274 inherit: "default" 0.0;
275 color: 255 255 255 200;
276 }
277 description {
278 state: "hidden" 0.0;
279 inherit: "default" 0.0;
280 min: 60 45;
281 max: 60 45;
282 rel1.offset: 30 0;
283 rel2.offset: 29 -1;
284 color: 255 255 255 0;
285 }
286 }
287
288 }
289
290 programs {
291
292 program {
293 name: "smoke,show";
294 source: "cannon_theme";
295 signal: "smoke2,show";
296 action: STATE_SET "visible" 0.0;
297 transition: ACCELERATE 0.12;
298 target: "smoke";
299 after: "smoke,fade,out";
300 }
301
302 program {
303 name: "smoke,fade,out";
304 action: STATE_SET "hidden" 0.0;
305 transition: ACCELERATE 0.3;
306 target: "smoke";
307 after: "smoke,hide";
308 }
309
310 program {
311 name: "smoke,hide";
312 action: STATE_SET "default" 0.0;
313 target: "smoke";
314 }
315
316 }
317
318}
319
320
321group {
322 name: "cannon";
323
324 images {
325 image: "cannon_base.png" COMP;
326 image: "cannon_body.png" COMP;
327 image: "explosion.png" COMP;
328 image: "smoke_1.png" COMP;
329 image: "smoke_2.png" COMP;
330 image: "smoke_3.png" COMP;
331 }
332
333 script {
334 public message(Msg_Type:type, id, ...) {
335 if ((type == MSG_INT) && (id == MSG_ID_ANGLE)) {
336 new Float:angle = getarg(2);
337 new x, y, xx, yy;
338
339 custom_state(PART:"body", "default", 0.0);
340 set_state_val(PART:"body", STATE_MAP_ROT_Z, -angle);
341 set_state(PART:"body", "custom", 0.0);
342
343 custom_state(PART:"explosion", "default", 0.0);
344 set_state_val(PART:"explosion", STATE_MAP_ROT_Z, -angle);
345 set_state(PART:"explosion", "custom", 0.0);
346
347 custom_state(PART:"bar", "default", 0.0);
348 set_state_val(PART:"bar", STATE_MAP_ROT_Z, -angle);
349 set_state(PART:"bar", "custom", 0.0);
350
351 x = round(70 + 110 * (1 - angle / 60));
352 y = round(-65 - 170 * angle / 60);
353
354 xx = x + rand() % 20;
355 yy = y + rand() % 20;
356
357 custom_state(PART:"smoke1", "default", 0.0);
358 set_state_val(PART:"smoke1", STATE_REL1_OFFSET, xx, yy);
359 set_state_val(PART:"smoke1", STATE_REL2_OFFSET, xx - 1, yy - 1);
360 set_state(PART:"smoke1", "custom", 0.0);
361
362 xx = x + 30 + rand() % 30;
363 yy = y + 10 + rand() % 30;
364
365 custom_state(PART:"smoke2", "default", 0.0);
366 set_state_val(PART:"smoke2", STATE_REL1_OFFSET, xx, yy);
367 set_state_val(PART:"smoke2", STATE_REL2_OFFSET, xx - 1, yy - 1);
368 set_state(PART:"smoke2", "custom", 0.0);
369
370 }
371 }
372 }
373
374 parts {
375
376 part {
377 name: "bg";
378 type: RECT;
379 mouse_events: 0;
380 description {
381 state: "default" 0.0;
382 color: 255 255 255 0;
383 }
384 }
385
386 part {
387 name: "smoke1";
388 type: GROUP;
389 mouse_events: 0;
390 source: "cannon_smoke1";
391 description {
392 state: "default" 0.0;
393 min: 200 200;
394 fixed: 1 1;
395 rel1 {
396 to: "base";
397 relative: 1 0;
398 }
399 rel2 {
400 to: "base";
401 relative: 1 1;
402 }
403 }
404 }
405
406 part {
407 name: "explosion";
408 type: GROUP;
409 mouse_events: 0;
410 source: "cannon_explosion";
411 description {
412 state: "default" 0.0;
413 min: 200 200;
414 fixed: 1 1;
415 rel1 {
416 to: "body";
417 relative: 1 0;
418 }
419 rel2 {
420 to: "body";
421 relative: 1 1;
422 }
423 map {
424 on: 1;
425 rotation {
426 center: "pin";
427 }
428 }
429 }
430 }
431
432 part {
433 name: "smoke2";
434 type: GROUP;
435 mouse_events: 0;
436 source: "cannon_smoke2";
437 description {
438 state: "default" 0.0;
439 min: 200 200;
440 fixed: 1 1;
441 rel1 {
442 to: "base";
443 relative: 1 0;
444 }
445 rel2 {
446 to: "base";
447 relative: 1 1;
448 }
449 }
450 }
451
452 part {
453 name: "body";
454 type: GROUP;
455 mouse_events: 0;
456 source: "cannon_body";
457 description {
458 state: "default" 0.0;
459 min: 300 300;
460 fixed: 1 1;
461 color: 255 0 0 255;
462 align: 0.2 0.5;
463 rel1 {
464 to: "pin";
465 offset: -14 0;
466 }
467 rel2 {
468 to: "pin";
469 offset: -13 -1;
470 }
471 map {
472 on: 1;
473 rotation {
474 center: "pin";
475 }
476 }
477 }
478 }
479
480
481 part {
482 name: "base";
483 type: IMAGE;
484 mouse_events: 0;
485 description {
486 state: "default" 0.0;
487 min: 130 68;
488 max: 130 68;
489 image.normal: "cannon_base.png";
490 align: 0 0;
491 }
492 }
493
494 part {
495 name: "pin";
496 type: RECT;
497 mouse_events: 0;
498 description {
499 state: "default" 0.0;
500 min: 3 3;
501 max: 3 3;
502 color: 255 255 255 0;
503 rel1 {
504 to: "base";
505 offset: 40 -26;
506 }
507 rel2 {
508 to: "base";
509 offset: 39 -25;
510 }
511 }
512 }
513
514 part {
515 name: "bar_clipper";
516 type: RECT;
517 mouse_events: 0;
518 description {
519 state: "default" 0.0;
520 color: 255 255 255 0;
521 rel1.to: "bar";
522 rel2.to: "bar";
523 min: 800 800;
524 max: 800 800;
525 fixed: 1 1;
526 }
527 description {
528 state: "visible" 0.0;
529 inherit: "default" 0.0;
530 color: 255 255 255 255;
531 }
532 }
533
534 part {
535 name: "bar";
536 type: GROUP;
537 mouse_events: 0;
538 source: "bar";
539 clip_to: "bar_clipper";
540 description {
541 state: "default" 0.0;
542 min: 180 53;
543 max: 180 53;
544 fixed: 1 1;
545 rel1 {
546 to: "body";
547 relative: 1 0;
548 offset: 30 0;
549 }
550 rel2 {
551 to: "body";
552 relative: 1 1;
553 offset: 29 -1;
554 }
555 align: 0 0.5;
556 map {
557 on: 1;
558 rotation {
559 center: "pin";
560 }
561 }
562 }
563 }
564
565 part {
566 name: "ammo";
567 type: GROUP;
568 mouse_events: 0;
569 source: "ammo";
570 description {
571 state: "default" 0.0;
572 rel1 {
573 to: "base";
574 offset: 30 -12;
575 }
576 rel2 {
577 to: "base";
578 offset: 29 -11;
579 }
580 align: 0 1;
581 }
582 }
583
584 }
585
586 programs {
587
588 program {
589 name: "load";
590 source: "cannon";
591 signal: "load";
592 action: STATE_SET "visible" 0.0;
593 target: "bar_clipper";
594 }
595
596 program {
597 name: "shoot";
598 source: "cannon";
599 signal: "shoot";
600 action: STATE_SET "default" 0.0;
601 target: "bar_clipper";
602 after: "explosion,show";
603 after: "body,back";
604 }
605
606 program {
607 name: "body,back";
608 action: SIGNAL_EMIT "body,back" "cannon_theme";
609 }
610
611 program {
612 name: "explosion,show";
613 action: SIGNAL_EMIT "explosion,show" "cannon_theme";
614 after: "smoke1,show";
615 after: "smoke2,show";
616 after: "empty";
617 }
618
619 program {
620 name: "smoke1,show";
621 in: 0 0.2;
622 action: SIGNAL_EMIT "smoke1,show" "cannon_theme";
623 }
624
625 program {
626 name: "smoke2,show";
627 in: 0 0.2;
628 action: SIGNAL_EMIT "smoke2,show" "cannon_theme";
629 }
630
631 program {
632 name: "empty";
633 in: 1.25 0;
634 action: SIGNAL_EMIT "empty" "cannon_theme";
635 }
636
637 }
638
639}
diff --git a/data/theme/fonts/Makefile.am b/data/theme/fonts/Makefile.am
new file mode 100644
index 0000000..b243ad1
--- /dev/null
+++ b/data/theme/fonts/Makefile.am
@@ -0,0 +1,4 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3EXTRA_DIST = \
4 Woodstamp.odf
diff --git a/data/theme/fonts/Woodstamp.otf b/data/theme/fonts/Woodstamp.otf
new file mode 100644
index 0000000..c206d9d
--- /dev/null
+++ b/data/theme/fonts/Woodstamp.otf
Binary files differ
diff --git a/data/theme/gengrid.edc b/data/theme/gengrid.edc
new file mode 100644
index 0000000..9fc79f0
--- /dev/null
+++ b/data/theme/gengrid.edc
@@ -0,0 +1,156 @@
1group {
2 name: "elm/gengrid/base/efbb";
3
4 parts {
5
6 part {
7 name: "bg";
8 type: RECT;
9 mouse_events: 1;
10 description {
11 state: "default" 0.0;
12 color: 255 255 255 0;
13 }
14 }
15
16 part {
17 name: "elm.swallow.content";
18 type: SWALLOW;
19 description {
20 state: "default" 0.0;
21 rel1.offset: 0 40;
22 rel2.offset: -1 -41;
23 }
24 }
25
26 }
27
28}
29
30group {
31 name: "elm/gengrid/item/default/efbb";
32
33 data.item: "texts" "elm.text";
34
35 images {
36 image: "btn_regular.png" COMP;
37 image: "btn_regular_pressed.png" COMP;
38 image: "btn_level_disabled.png" COMP;
39 }
40
41 parts {
42
43 part {
44 name: "event";
45 type: RECT;
46 repeat_events: 1;
47 description {
48 state: "default" 0.0;
49 color: 0 0 0 0;
50 rel1.relative: 0.2 0.2;
51 rel2.relative: 0.8 0.8;
52 }
53 description {
54 state: "disabled" 0.0;
55 visible: 0;
56 color: 0 0 0 0;
57 }
58 }
59
60 part {
61 name: "base";
62 mouse_events: 0;
63 description {
64 state: "default" 0.0;
65 min: 200 196;
66 max: 200 196;
67 rel1.to: "event";
68 rel2.to: "event";
69 image.normal: "btn_regular.png";
70 }
71 description {
72 state: "selected" 0.0;
73 inherit: "default" 0.0;
74 image.normal: "btn_regular_pressed.png";
75 }
76 description {
77 state: "disabled" 0.0;
78 inherit: "default" 0.0;
79 image.normal: "btn_level_disabled.png";
80 }
81 }
82
83 part {
84 name: "elm.text";
85 type: TEXT;
86 effect: GLOW;
87 mouse_events: 0;
88 description {
89 state: "default" 0.0;
90 color_class: "button";
91 rel1.to: "event";
92 rel2.to: "event";
93 text {
94 font: "Game";
95 size: 180;
96 align: 1 0.5;
97 }
98 }
99 description {
100 state: "selected" 0.0;
101 inherit: "default" 0.0;
102 color_class: "button_pressed";
103 }
104 description {
105 state: "disabled" 0.0;
106 inherit: "default" 0.0;
107 color_class: "invisible";
108 }
109 }
110
111 }
112
113 programs {
114
115 program {
116 name: "go_active";
117 signal: "elm,state,selected";
118 source: "elm";
119 action: STATE_SET "selected" 0.0;
120 target: "base";
121 target: "elm.text";
122 }
123
124 program {
125 name: "go_passive";
126 signal: "elm,state,unselected";
127 source: "elm";
128 action: STATE_SET "default" 0.0;
129 target: "event";
130 target: "base";
131 target: "elm.text";
132 }
133
134 program {
135 name: "go_disabled";
136 signal: "elm,state,disabled";
137 source: "elm";
138 action: STATE_SET "disabled" 0.0;
139 target: "event";
140 target: "base";
141 target: "elm.text";
142 }
143
144 program {
145 name: "go_enabled";
146 signal: "elm,state,enabled";
147 source: "elm";
148 action: STATE_SET "default" 0.0;
149 target: "event";
150 target: "base";
151 target: "elm.text";
152 }
153
154 }
155
156}
diff --git a/data/theme/images/Makefile.am b/data/theme/images/Makefile.am
new file mode 100644
index 0000000..c97a2d4
--- /dev/null
+++ b/data/theme/images/Makefile.am
@@ -0,0 +1,45 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3EXTRA_DIST = \
4 bar_border.png \
5 bar1_45_21.png \
6 bar2_22_26.png \
7 bar3_23_30.png \
8 bar4_25_35.png \
9 bar5_27_39.png \
10 bar6_29_43.png \
11 bar7_32_49.png \
12 bar8_36_49.png \
13 bars.png \
14 bg.png \
15 bomb.png \
16 bonus_bomb.png \
17 btn_back.png \
18 btn_back_pressed.png \
19 btn_forward.png \
20 btn_forward_pressed.png \
21 btn_level_disabled.png \
22 btn_regular.png \
23 btn_regular_pressed.png \
24 cannon_base.png \
25 cannon_body.png \
26 explosion.png \
27 flag.png \
28 logo.png \
29 pirate-ship.png \
30 prisonbar_80.png \
31 prisonbar_100.png \
32 prisonbar_120.png \
33 retry_win_bg.jpg \
34 sailfront.png \
35 sailback.png \
36 sea-1.png \
37 sea-2.png \
38 sea-3.png \
39 sea-4.png \
40 smoke_1.png \
41 smoke_2.png \
42 smoke_3.png \
43 sound_off.png \
44 sound_on.png \
45 total_bar.png
diff --git a/data/theme/images/bar1_45_21.png b/data/theme/images/bar1_45_21.png
new file mode 100644
index 0000000..7c52c70
--- /dev/null
+++ b/data/theme/images/bar1_45_21.png
Binary files differ
diff --git a/data/theme/images/bar2_22_26.png b/data/theme/images/bar2_22_26.png
new file mode 100644
index 0000000..0696418
--- /dev/null
+++ b/data/theme/images/bar2_22_26.png
Binary files differ
diff --git a/data/theme/images/bar3_23_30.png b/data/theme/images/bar3_23_30.png
new file mode 100644
index 0000000..6c9cc47
--- /dev/null
+++ b/data/theme/images/bar3_23_30.png
Binary files differ
diff --git a/data/theme/images/bar4_25_35.png b/data/theme/images/bar4_25_35.png
new file mode 100644
index 0000000..d3424de
--- /dev/null
+++ b/data/theme/images/bar4_25_35.png
Binary files differ
diff --git a/data/theme/images/bar5_27_39.png b/data/theme/images/bar5_27_39.png
new file mode 100644
index 0000000..d5563cc
--- /dev/null
+++ b/data/theme/images/bar5_27_39.png
Binary files differ
diff --git a/data/theme/images/bar6_29_43.png b/data/theme/images/bar6_29_43.png
new file mode 100644
index 0000000..012be1a
--- /dev/null
+++ b/data/theme/images/bar6_29_43.png
Binary files differ
diff --git a/data/theme/images/bar7_32_49.png b/data/theme/images/bar7_32_49.png
new file mode 100644
index 0000000..f9b8c6c
--- /dev/null
+++ b/data/theme/images/bar7_32_49.png
Binary files differ
diff --git a/data/theme/images/bar8_36_49.png b/data/theme/images/bar8_36_49.png
new file mode 100644
index 0000000..827bf2b
--- /dev/null
+++ b/data/theme/images/bar8_36_49.png
Binary files differ
diff --git a/data/theme/images/bar_border.png b/data/theme/images/bar_border.png
new file mode 100644
index 0000000..096c20c
--- /dev/null
+++ b/data/theme/images/bar_border.png
Binary files differ
diff --git a/data/theme/images/bars.png b/data/theme/images/bars.png
new file mode 100644
index 0000000..4d9e97e
--- /dev/null
+++ b/data/theme/images/bars.png
Binary files differ
diff --git a/data/theme/images/bg.png b/data/theme/images/bg.png
new file mode 100644
index 0000000..5599ca8
--- /dev/null
+++ b/data/theme/images/bg.png
Binary files differ
diff --git a/data/theme/images/bomb.png b/data/theme/images/bomb.png
new file mode 100644
index 0000000..5bccae4
--- /dev/null
+++ b/data/theme/images/bomb.png
Binary files differ
diff --git a/data/theme/images/bonus_bomb.png b/data/theme/images/bonus_bomb.png
new file mode 100644
index 0000000..6ceccea
--- /dev/null
+++ b/data/theme/images/bonus_bomb.png
Binary files differ
diff --git a/data/theme/images/btn_back.png b/data/theme/images/btn_back.png
new file mode 100644
index 0000000..1dc6166
--- /dev/null
+++ b/data/theme/images/btn_back.png
Binary files differ
diff --git a/data/theme/images/btn_back_pressed.png b/data/theme/images/btn_back_pressed.png
new file mode 100644
index 0000000..61b1825
--- /dev/null
+++ b/data/theme/images/btn_back_pressed.png
Binary files differ
diff --git a/data/theme/images/btn_forward.png b/data/theme/images/btn_forward.png
new file mode 100644
index 0000000..8566822
--- /dev/null
+++ b/data/theme/images/btn_forward.png
Binary files differ
diff --git a/data/theme/images/btn_forward_pressed.png b/data/theme/images/btn_forward_pressed.png
new file mode 100644
index 0000000..cab42f1
--- /dev/null
+++ b/data/theme/images/btn_forward_pressed.png
Binary files differ
diff --git a/data/theme/images/btn_level_disabled.png b/data/theme/images/btn_level_disabled.png
new file mode 100644
index 0000000..2a43d91
--- /dev/null
+++ b/data/theme/images/btn_level_disabled.png
Binary files differ
diff --git a/data/theme/images/btn_regular.png b/data/theme/images/btn_regular.png
new file mode 100644
index 0000000..85cdeb5
--- /dev/null
+++ b/data/theme/images/btn_regular.png
Binary files differ
diff --git a/data/theme/images/btn_regular_pressed.png b/data/theme/images/btn_regular_pressed.png
new file mode 100644
index 0000000..ed1a4a9
--- /dev/null
+++ b/data/theme/images/btn_regular_pressed.png
Binary files differ
diff --git a/data/theme/images/btn_retry.png b/data/theme/images/btn_retry.png
new file mode 100644
index 0000000..960b73c
--- /dev/null
+++ b/data/theme/images/btn_retry.png
Binary files differ
diff --git a/data/theme/images/btn_retry_pressed.png b/data/theme/images/btn_retry_pressed.png
new file mode 100644
index 0000000..68ad580
--- /dev/null
+++ b/data/theme/images/btn_retry_pressed.png
Binary files differ
diff --git a/data/theme/images/cannon_base.png b/data/theme/images/cannon_base.png
new file mode 100644
index 0000000..e6795a5
--- /dev/null
+++ b/data/theme/images/cannon_base.png
Binary files differ
diff --git a/data/theme/images/cannon_body.png b/data/theme/images/cannon_body.png
new file mode 100644
index 0000000..677f5b0
--- /dev/null
+++ b/data/theme/images/cannon_body.png
Binary files differ
diff --git a/data/theme/images/explosion.png b/data/theme/images/explosion.png
new file mode 100644
index 0000000..688c8fd
--- /dev/null
+++ b/data/theme/images/explosion.png
Binary files differ
diff --git a/data/theme/images/flag.png b/data/theme/images/flag.png
new file mode 100644
index 0000000..8247f99
--- /dev/null
+++ b/data/theme/images/flag.png
Binary files differ
diff --git a/data/theme/images/logo.png b/data/theme/images/logo.png
new file mode 100644
index 0000000..f503dd6
--- /dev/null
+++ b/data/theme/images/logo.png
Binary files differ
diff --git a/data/theme/images/pirate-ship.png b/data/theme/images/pirate-ship.png
new file mode 100644
index 0000000..c637c76
--- /dev/null
+++ b/data/theme/images/pirate-ship.png
Binary files differ
diff --git a/data/theme/images/prisonbar_100.png b/data/theme/images/prisonbar_100.png
new file mode 100644
index 0000000..f8706f2
--- /dev/null
+++ b/data/theme/images/prisonbar_100.png
Binary files differ
diff --git a/data/theme/images/prisonbar_120.png b/data/theme/images/prisonbar_120.png
new file mode 100644
index 0000000..7597d26
--- /dev/null
+++ b/data/theme/images/prisonbar_120.png
Binary files differ
diff --git a/data/theme/images/prisonbar_80.png b/data/theme/images/prisonbar_80.png
new file mode 100644
index 0000000..d49acb7
--- /dev/null
+++ b/data/theme/images/prisonbar_80.png
Binary files differ
diff --git a/data/theme/images/retry_win_bg.jpg b/data/theme/images/retry_win_bg.jpg
new file mode 100644
index 0000000..c57da1c
--- /dev/null
+++ b/data/theme/images/retry_win_bg.jpg
Binary files differ
diff --git a/data/theme/images/sailback.png b/data/theme/images/sailback.png
new file mode 100644
index 0000000..7e78b42
--- /dev/null
+++ b/data/theme/images/sailback.png
Binary files differ
diff --git a/data/theme/images/sailfront.png b/data/theme/images/sailfront.png
new file mode 100644
index 0000000..ea17294
--- /dev/null
+++ b/data/theme/images/sailfront.png
Binary files differ
diff --git a/data/theme/images/sea-1.png b/data/theme/images/sea-1.png
new file mode 100644
index 0000000..8506044
--- /dev/null
+++ b/data/theme/images/sea-1.png
Binary files differ
diff --git a/data/theme/images/sea-2.png b/data/theme/images/sea-2.png
new file mode 100644
index 0000000..6b87b8c
--- /dev/null
+++ b/data/theme/images/sea-2.png
Binary files differ
diff --git a/data/theme/images/sea-3.png b/data/theme/images/sea-3.png
new file mode 100644
index 0000000..9ac6da5
--- /dev/null
+++ b/data/theme/images/sea-3.png
Binary files differ
diff --git a/data/theme/images/sea-4.png b/data/theme/images/sea-4.png
new file mode 100644
index 0000000..3399bba
--- /dev/null
+++ b/data/theme/images/sea-4.png
Binary files differ
diff --git a/data/theme/images/smoke_1.png b/data/theme/images/smoke_1.png
new file mode 100644
index 0000000..d522995
--- /dev/null
+++ b/data/theme/images/smoke_1.png
Binary files differ
diff --git a/data/theme/images/smoke_2.png b/data/theme/images/smoke_2.png
new file mode 100644
index 0000000..cce716c
--- /dev/null
+++ b/data/theme/images/smoke_2.png
Binary files differ
diff --git a/data/theme/images/smoke_3.png b/data/theme/images/smoke_3.png
new file mode 100644
index 0000000..81fc4d1
--- /dev/null
+++ b/data/theme/images/smoke_3.png
Binary files differ
diff --git a/data/theme/images/sound_off.png b/data/theme/images/sound_off.png
new file mode 100644
index 0000000..93d017f
--- /dev/null
+++ b/data/theme/images/sound_off.png
Binary files differ
diff --git a/data/theme/images/sound_on.png b/data/theme/images/sound_on.png
new file mode 100644
index 0000000..147e083
--- /dev/null
+++ b/data/theme/images/sound_on.png
Binary files differ
diff --git a/data/theme/images/total_bar.png b/data/theme/images/total_bar.png
new file mode 100644
index 0000000..48cebfb
--- /dev/null
+++ b/data/theme/images/total_bar.png
Binary files differ
diff --git a/data/theme/lvlsel_win.edc b/data/theme/lvlsel_win.edc
new file mode 100644
index 0000000..073c724
--- /dev/null
+++ b/data/theme/lvlsel_win.edc
@@ -0,0 +1,66 @@
1group {
2 name: "lvlsel_win";
3 min: 1280 720;
4 max: 1280 720;
5
6 images {
7 image: "bg.png" COMP;
8 }
9
10 parts {
11
12 part {
13 name: "bg";
14 type: IMAGE;
15 description {
16 state: "default" 0.0;
17 image.normal: "bg.png";
18 }
19 }
20
21 part {
22 name: "grid";
23 type: SWALLOW;
24 description {
25 state: "default" 0;
26 rel1.relative: 0 0.1;
27 rel2.relative: 1 0.8;
28 }
29 }
30
31 part {
32 name: "btn_menu";
33 type: EXTERNAL;
34 source: "elm/button";
35 description {
36 state: "default" 0.0;
37 rel1.relative: 0.33 0.85;
38 rel2.relative: 0.66 1;
39 params {
40 string: "style" "efbb-plain";
41 string: "label" "BACK";
42 }
43 }
44 }
45
46 }
47
48 programs {
49
50 program {
51 name: "btn_menu_clicked";
52 signal: "clicked";
53 source: "btn_menu";
54 action: SIGNAL_EMIT "menu" "btn_menu";
55 }
56
57 program {
58 name: "btn_menu_sound";
59 signal: "clicked";
60 source: "btn_menu";
61 action: SIGNAL_EMIT "button.wav" "sound";
62 }
63
64 }
65
66}
diff --git a/data/theme/main.edc b/data/theme/main.edc
new file mode 100644
index 0000000..314e84f
--- /dev/null
+++ b/data/theme/main.edc
@@ -0,0 +1,83 @@
1#define MSG_ID_AMMO (0)
2#define MSG_ID_ANGLE (1)
3#define MSG_ID_STRENGTH (2)
4
5externals {
6 external: "elm";
7}
8
9fonts {
10 font: "Woodstamp.otf" "Game";
11}
12
13color_classes {
14
15 color_class {
16 name: "regular";
17 color: 255 255 255 255;
18 color2: 70 70 70 255;
19 color3: 70 70 70 255;
20 }
21
22 color_class {
23 name: "regular_pressed";
24 color: 100 100 100 255;
25 color2: 70 70 70 255;
26 color3: 70 70 70 255;
27 }
28
29 color_class {
30 name: "button";
31 color: 255 102 51 255;
32 color2: 70 70 70 255;
33 color3: 70 70 70 255;
34 }
35
36 color_class {
37 name: "button_pressed";
38 color: 153 204 51 255;
39 color2: 70 70 70 255;
40 color3: 70 70 70 255;
41 }
42
43 color_class {
44 name: "success";
45 color: 153 204 51 255;
46 color2: 70 70 70 255;
47 color3: 70 70 70 255;
48 }
49
50 color_class {
51 name: "fail";
52 color: 255 102 51 255;
53 color2: 70 70 70 255;
54 color3: 70 70 70 255;
55 }
56
57 color_class {
58 name: "invisible";
59 color: 255 255 255 0;
60 color2: 255 255 255 0;
61 color3: 255 255 255 0;
62 }
63
64}
65
66collections {
67#include "ammo.edc"
68#include "bar.edc"
69#include "boom.edc"
70#include "button.edc"
71#include "cannon.edc"
72#include "gengrid.edc"
73#include "lvlsel_win.edc"
74#include "main_win.edc"
75#include "objects.edc"
76#include "options.edc"
77#include "retry_win.edc"
78#include "score.edc"
79}
80
81#undef MSG_ID_AMMO
82#undef MSG_ID_ANGLE
83#undef MSG_ID_STRENGTH
diff --git a/data/theme/main_win.edc b/data/theme/main_win.edc
new file mode 100644
index 0000000..f5c6ef6
--- /dev/null
+++ b/data/theme/main_win.edc
@@ -0,0 +1,342 @@
1#define SEA_ADD(_name, _time, _x1, _x2, _x3, _x4) \
2 part { \
3 name: #_name##"-1"; \
4 type: IMAGE; \
5 mouse_events: 0; \
6 description { \
7 state: "default" 0.0; \
8 min: 1280 112; \
9 max: 1280 112; \
10 image.normal: #_name".png"; \
11 align: 0 1; \
12 rel1.offset: _x1 0; \
13 rel2.offset: (_x1 - 1) -1; \
14 } \
15 description { \
16 state: "end" 0.0; \
17 inherit: "default" 0.0; \
18 rel1.offset: _x2 0; \
19 rel2.offset: (_x2 - 1) -1; \
20 } \
21 } \
22 part { \
23 name: #_name##"-2"; \
24 type: IMAGE; \
25 mouse_events: 0; \
26 description { \
27 state: "default" 0.0; \
28 min: 1280 112; \
29 max: 1280 112; \
30 rel1.offset: _x3 0; \
31 rel2.offset: (_x3 - 1) -1; \
32 image.normal: #_name##".png"; \
33 align: 0 1; \
34 } \
35 description { \
36 state: "end" 0.0; \
37 inherit: "default" 0.0; \
38 rel1.offset: _x4 0; \
39 rel2.offset: (_x4 - 1) -1; \
40 } \
41 } \
42 program { \
43 name: "move_"##_name; \
44 action: STATE_SET "end" 0.0; \
45 transition: LINEAR _time; \
46 target: #_name##"-1"; \
47 target: #_name##"-2"; \
48 after: "move_"##_name##",reset"; \
49 } \
50 program { \
51 name: "move_"##_name##",reset"; \
52 action: STATE_SET "default" 0.0; \
53 target: #_name##"-1"; \
54 target: #_name##"-2"; \
55 after: "move_"##_name; \
56 }
57
58group {
59 name: "main_win";
60
61 images {
62 image: "bars.png" COMP;
63 image: "logo.png" COMP;
64 image: "pirate-ship.png" COMP;
65 image: "sea-1.png" COMP;
66 image: "sea-2.png" COMP;
67 image: "sea-3.png" COMP;
68 image: "sea-4.png" COMP;
69 }
70
71 parts {
72
73 part {
74 name: "bg";
75 type: RECT;
76 description {
77 state: "default" 0.0;
78 min: 1280 720;
79 max: 1280 720;
80 color: 9 52 65 255;
81 }
82 }
83
84 SEA_ADD(sea-4, 6.0, 0, 1280, -1280, 0)
85
86 part {
87 name: "ship_height";
88 type: RECT;
89 mouse_events: 0;
90 description {
91 state: "default" 0.0;
92 visible: 0;
93 }
94 description {
95 state: "high" 0.0;
96 inherit: "default" 0.0;
97 rel1.offset: 0 -14;
98 rel2.offset: -1 -15;
99 }
100 description {
101 state: "low" 0.0;
102 inherit: "default" 0.0;
103 rel1.offset: 0 10;
104 rel2.offset: -1 -9;
105 }
106 }
107
108 part {
109 name: "ship";
110 type: IMAGE;
111 mouse_events: 0;
112 description {
113 state: "default" 0.0;
114 min: 562 395;
115 max: 562 395;
116 rel1.offset: 10 260;
117 rel1.to_y: "ship_height";
118 rel2.offset: 9 259;
119 rel2.to_y: "ship_height";
120 image.normal: "pirate-ship.png";
121 align: 0 0;
122 }
123 description {
124 state: "mid" 0.0;
125 inherit: "default" 0.0;
126 rel1.offset: 350 260;
127 rel2.offset: 349 259;
128 }
129 description {
130 state: "end" 0.0;
131 inherit: "default" 0.0;
132 rel1.offset: 700 260;
133 rel2.offset: 699 259;
134 }
135 }
136
137 SEA_ADD(sea-3, 5.0, 1280, 0, 0, -1280)
138 SEA_ADD(sea-2, 4.5, 0, 1280, -1280, 0)
139 SEA_ADD(sea-1, 4.0, 1280, 0, 0, -1280)
140
141 part {
142 name: "bars";
143 type: IMAGE;
144 mouse_events: 0;
145 description {
146 state: "default" 0.0;
147 min: 1280 720;
148 max: 1280 720;
149 image.normal: "bars.png";
150 rel1.relative: 0 -1;
151 rel2.relative: 1 0;
152 }
153 description {
154 state: "visible" 0.0;
155 inherit: "default" 0.0;
156 rel1.relative: 0 0;
157 rel2.relative: 1 1;
158 }
159 }
160
161 part {
162 name: "logo";
163 type: IMAGE;
164 mouse_events: 0;
165 description {
166 state: "default" 0.0;
167 min: 1280 550;
168 max: 1280 550;
169 color: 255 255 255 0;
170 rel1.offset: 0 -50;
171 rel2.offset: 0 -51;
172 image.normal: "logo.png";
173 }
174 description {
175 state: "visible" 0.0;
176 inherit: "default" 0.0;
177 color: 255 255 255 255;
178 }
179 }
180
181 part {
182 name: "btn_play";
183 type: EXTERNAL;
184 source: "elm/button";
185 description {
186 state: "default" 0.0;
187 rel1.relative: 0.33 0.46;
188 rel2.relative: 0.66 0.8;
189 params {
190 string: "style" "efbb-regular";
191 string: "label" "PLAY";
192 }
193 visible: 0;
194 }
195 description {
196 state: "visible" 0.0;
197 inherit: "default" 0.0;
198 visible: 1;
199 }
200 }
201
202 part {
203 name: "btn_exit";
204 type: EXTERNAL;
205 source: "elm/button";
206 description {
207 state: "default" 0.0;
208 rel1.relative: 0.33 0.8;
209 rel2.relative: 0.66 1;
210 params {
211 string: "style" "efbb-plain";
212 string: "label" "EXIT";
213 }
214 visible: 0;
215 }
216 description {
217 state: "visible" 0.0;
218 inherit: "default" 0.0;
219 visible: 1;
220 }
221 }
222
223 }
224
225 programs {
226
227 program {
228 name: "show";
229 signal: "show";
230 source: "game";
231 filter: "ship" "default";
232 after: "move_ship";
233 after: "move_ship_height,hi";
234 after: "move_sea-1";
235 after: "move_sea-2";
236 after: "move_sea-3";
237 after: "move_sea-4";
238 after: "show_logo";
239 }
240
241 program {
242 name: "move_ship";
243 action: STATE_SET "mid" 0.0;
244 transition: LINEAR 4.0;
245 target: "ship";
246 after: "move_ship,2";
247 }
248
249 program {
250 name: "move_ship,2";
251 action: STATE_SET "end" 0.0;
252 transition: DECEL 6.0;
253 target: "ship";
254 }
255
256 program {
257 name: "move_ship_height,hi";
258 action: STATE_SET "high" 0.0;
259 in: 0.1 0.2;
260 transition: DECEL 1.2;
261 target: "ship_height";
262 after: "move_ship_height,low";
263 }
264
265 program {
266 name: "move_ship_height,low";
267 action: STATE_SET "low" 0.0;
268 in: 0.1 0.4;
269 transition: ACCEL 0.8;
270 target: "ship_height";
271 after: "move_ship_height,hi";
272 }
273
274 program {
275 name: "show_logo";
276 action: STATE_SET "default" 0.0;
277 transition: LINEAR 2.0;
278 target: "logo";
279 after: "show_logo,0";
280 }
281
282 program {
283 name: "show_logo,0";
284 action: STATE_SET "visible" 0.0;
285 transition: ACCELERATE 0.4;
286 target: "logo";
287 after: "move_bars";
288 }
289
290 program {
291 name: "move_bars";
292 action: SIGNAL_EMIT "bars.wav" "sound";
293 after: "move_bars,0";
294 }
295
296 program {
297 name: "move_bars,0";
298 action: STATE_SET "visible" 0.0;
299 transition: ACCELERATE 0.8;
300 target: "bars";
301 after: "show_buttons";
302 }
303
304 program {
305 name: "show_buttons";
306 action: STATE_SET "visible" 0.0;
307 target: "btn_play";
308 target: "btn_exit";
309 }
310
311 program {
312 name: "btn_play_clicked";
313 signal: "clicked";
314 source: "btn_play";
315 action: SIGNAL_EMIT "play" "btn_play";
316 }
317
318 program {
319 name: "btn_play_sound";
320 signal: "clicked";
321 source: "btn_play";
322 action: SIGNAL_EMIT "button.wav" "sound";
323 }
324
325 program {
326 name: "btn_exit_clicked";
327 signal: "clicked";
328 source: "btn_exit";
329 action: SIGNAL_EMIT "exit" "btn_exit";
330 }
331
332 program {
333 name: "btn_exit_sound";
334 signal: "clicked";
335 source: "btn_exit";
336 action: SIGNAL_EMIT "button.wav" "sound";
337 }
338
339 }
340}
341
342#undef SEA_ADD
diff --git a/data/theme/objects.edc b/data/theme/objects.edc
new file mode 100644
index 0000000..ffff5ee
--- /dev/null
+++ b/data/theme/objects.edc
@@ -0,0 +1,111 @@
1#define IMAGE_BLINK_ADD(_name) \
2 group { \
3 name: _name; \
4 parts { \
5 part { \
6 name: "blink"; \
7 mouse_events: 0; \
8 type: RECT; \
9 description { \
10 state: "default" 0.0; \
11 visible: 0; \
12 } \
13 description { \
14 state: "blinking" 0.0; \
15 inherit: "default" 0.0; \
16 } \
17 } \
18 part { \
19 name: #_name; \
20 mouse_events: 0; \
21 type: IMAGE; \
22 description { \
23 state: "default" 0.0; \
24 image.image: #_name##".png" COMP; \
25 image.normal: #_name##".png"; \
26 color: 255 255 255 255; \
27 } \
28 description { \
29 state: "hidden" 0.0; \
30 inherit: "default" 0.0; \
31 color: 255 255 255 0; \
32 } \
33 } \
34 } \
35 programs { \
36 program { \
37 name: "blink"; \
38 signal: "blink"; \
39 source: "game"; \
40 filter: "blink" "default"; \
41 action: STATE_SET "blinking" 0.0; \
42 target: "blink"; \
43 after: "blink,0"; \
44 } \
45 program { \
46 name: "blink,0"; \
47 action: STATE_SET "hidden" 0.0; \
48 transition: LINEAR 0.3; \
49 target: #_name; \
50 after: "blink,1"; \
51 } \
52 program { \
53 name: "blink,1"; \
54 action: STATE_SET "default" 0.0; \
55 transition: LINEAR 0.3; \
56 in: 0.2 0; \
57 target: #_name; \
58 after: "blink,2"; \
59 } \
60 program { \
61 name: "blink,2"; \
62 action: STATE_SET "hidden" 0.0; \
63 transition: LINEAR 0.2; \
64 target: #_name; \
65 after: "blink,3"; \
66 } \
67 program { \
68 name: "blink,3"; \
69 action: STATE_SET "default" 0.0; \
70 transition: LINEAR 0.1; \
71 in: 0.1 0; \
72 target: #_name; \
73 after: "blink,4"; \
74 } \
75 program { \
76 name: "blink,4"; \
77 action: STATE_SET "hidden" 0.0; \
78 transition: LINEAR 0.1; \
79 target: #_name; \
80 after: "blink,5"; \
81 } \
82 program { \
83 name: "blink,5"; \
84 action: STATE_SET "default" 0.0; \
85 transition: LINEAR 0.05; \
86 target: #_name; \
87 after: "blink,6"; \
88 } \
89 program { \
90 name: "blink,6"; \
91 action: STATE_SET "hidden" 0.0; \
92 transition: LINEAR 0.03; \
93 target: #_name; \
94 after: "blink,7"; \
95 } \
96 program { \
97 name: "blink,7"; \
98 action: SIGNAL_EMIT "end" "object"; \
99 } \
100 } \
101 }
102
103IMAGE_BLINK_ADD(flag)
104IMAGE_BLINK_ADD(sailback)
105IMAGE_BLINK_ADD(sailfront)
106
107IMAGE_BLINK_ADD(prisonbar_80)
108IMAGE_BLINK_ADD(prisonbar_100)
109IMAGE_BLINK_ADD(prisonbar_120)
110
111#undef IMAGE_BLINK_ADD
diff --git a/data/theme/options.edc b/data/theme/options.edc
new file mode 100644
index 0000000..284b76a
--- /dev/null
+++ b/data/theme/options.edc
@@ -0,0 +1,127 @@
1group {
2 name: "options";
3
4 images {
5 image: "sound_on.png" COMP;
6 image: "sound_off.png" COMP;
7 }
8
9 parts {
10
11 part {
12 name: "sound_event";
13 type: RECT;
14 mouse_events: 1;
15 description {
16 state: "default" 0.0;
17 color: 0 0 0 0;
18 rel1.relative: 0 0;
19 rel2.relative: 0.5 1;
20 }
21 }
22
23 part {
24 name: "btn_sound";
25 type: IMAGE;
26 mouse_events: 0;
27 description {
28 state: "default" 0.0;
29 min: 56 56;
30 max: 56 56;
31 rel1.to: "sound_event";
32 rel2.to: "sound_event";
33 image.normal: "sound_on.png";
34 }
35 description {
36 state: "disabled" 0.0;
37 inherit: "default" 0.0;
38 image.normal: "sound_off.png";
39 }
40 }
41
42 part {
43 name: "btn_pause";
44 type: EXTERNAL;
45 source: "elm/button";
46 description {
47 state: "default" 0.0;
48 rel1.relative: 0.5 0;
49 rel2.relative: 1 1;
50 visible: 0;
51 params {
52 string: "style" "efbb-plain";
53 string: "effect" "GLOW";
54 string: "label" "II";
55 }
56 }
57 description {
58 state: "visible" 0.0;
59 inherit: "default" 0.0;
60 visible: 1;
61 }
62 }
63
64 }
65
66 programs {
67
68 program {
69 name: "sound_turn_off";
70 signal: "mouse,clicked,1";
71 source: "sound_event";
72 filter: "btn_sound" "default";
73 action: STATE_SET "disabled" 0.0;
74 transition: LINEAR 0.1;
75 target: "btn_sound";
76 }
77
78 program {
79 name: "sound_turn_on";
80 signal: "mouse,clicked,1";
81 source: "sound_event";
82 filter: "btn_sound" "disabled";
83 action: STATE_SET "default" 0.0;
84 transition: LINEAR 0.1;
85 target: "btn_sound";
86 }
87
88 program {
89 name: "btn_sound_switch";
90 signal: "mouse,clicked,1";
91 source: "sound_event";
92 action: SIGNAL_EMIT "sound" "switch";
93 }
94
95 program {
96 name: "btn_pause_clicked";
97 signal: "clicked";
98 source: "btn_pause";
99 action: SIGNAL_EMIT "pause" "game";
100 }
101
102 program {
103 name: "btn_pause_sound";
104 signal: "clicked";
105 source: "btn_pause";
106 action: SIGNAL_EMIT "button.wav" "sound";
107 }
108
109 program {
110 name: "pause_hide";
111 source: "game";
112 signal: "hide_pause";
113 action: STATE_SET "default" 0.0;
114 target: "btn_pause";
115 }
116
117 program {
118 name: "pause_show";
119 source: "game";
120 signal: "show_pause";
121 action: STATE_SET "visible" 0.0;
122 target: "btn_pause";
123 }
124
125 }
126
127}
diff --git a/data/theme/retry_win.edc b/data/theme/retry_win.edc
new file mode 100644
index 0000000..140d621
--- /dev/null
+++ b/data/theme/retry_win.edc
@@ -0,0 +1,431 @@
1group {
2 name: "pause_win";
3 min: 1280 720;
4 max: 1280 720;
5
6 images{
7 image: "retry_win_bg.jpg" COMP;
8 }
9
10 parts {
11
12 part {
13 name: "bg";
14 type: IMAGE;
15 description {
16 state: "default" 0.0;
17 color: 130 130 130 130;
18 image.normal: "retry_win_bg.jpg";
19 }
20 }