├── .github └── FUNDING.yml ├── .gitignore ├── .mailmap ├── CHANGES.md ├── CMakeLists.txt ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── characters ├── charge.chr ├── neon.chr ├── none.chr ├── surge.chr └── tux.chr ├── fonts ├── NotoSans-Black.ttf ├── NotoSans-Bold.ttf ├── Roboto-Black.ttf ├── Roboto-Bold.ttf ├── Roboto-Medium.ttf ├── boxy_bold.fnt ├── boxy_bold.png ├── default.fnt ├── default.png ├── dialogbox.fnt ├── editor.fnt ├── end_of_demo.fnt ├── gameover.fnt ├── good_neighbors.fnt ├── good_neighbors.png ├── hud.fnt ├── legacy.fnt ├── loading.fnt ├── menu.fnt ├── rate_game.fnt ├── thanks_for_playing.fnt ├── tiny.fnt ├── tiny.png └── title_screen.fnt ├── images ├── acts.png ├── animalprison.png ├── animals.png ├── backgrounds │ ├── waterworks-zone-boss.png │ ├── waterworks-zone-indoors.png │ └── waterworks-zone-outdoors.png ├── barrel.png ├── bricks │ ├── waterworks-zone-mask.png │ └── waterworks-zone.png ├── bridges.png ├── bugsy.png ├── bumper.png ├── capsule.png ├── charge.png ├── checkpoint_orb.png ├── collectibles.png ├── core.png ├── creativecommons.png ├── credits.png ├── crococopter.png ├── cursor.png ├── debug_mode │ ├── item_picker.png │ ├── mouse_cursor.png │ ├── selection.png │ └── trash.png ├── dialogbox.png ├── dialogs.png ├── dnadoors.png ├── elevators.png ├── enemies │ └── waterworks_zone.png ├── eraser.png ├── even_more_shields.png ├── explode.png ├── explosion.png ├── fade_effect.png ├── fish.png ├── giant_wolf.png ├── goal.png ├── goal_sign.png ├── hand.png ├── harrier-swoop.png ├── heroes.png ├── hud.png ├── hydra.png ├── impact.png ├── item_boxes.png ├── items │ ├── capsule.png │ ├── checkpoint.png │ ├── conveyor_belt.png │ ├── goal.png │ ├── power_pluggy.png │ ├── powerups.png │ ├── spring_booster.png │ ├── springs.png │ ├── walk_on_water.png │ └── walk_on_water_splash.png ├── jumping_fish.png ├── lady_bugsy.png ├── liballeg.png ├── life_icon.png ├── loading.png ├── logo.png ├── marmot-green.png ├── marmotred.png ├── menu.png ├── mini_smoke.png ├── more_shields.png ├── mosquito.png ├── neon.png ├── new_shields.png ├── null.png ├── opening.png ├── pause.png ├── pixel.png ├── players │ ├── surge.png │ └── surge_extra.png ├── rings.png ├── ruler-salamander.png ├── salamander_boss.png ├── salamander_bridge.png ├── salamander_wall.png ├── scenes │ ├── allegro_splash.png │ ├── end_of_demo.png │ ├── rate_game.png │ ├── thanks_for_playing.png │ └── title_screen.png ├── sea.png ├── shields.png ├── skaterbug.png ├── smoke.png ├── special.png ├── speed_smoke.png ├── spikes.png ├── spring_pads.png ├── springfling.png ├── stars.png ├── sunshine.png ├── sunshine_bg.png ├── sunshine_mask.png ├── surge.png ├── surge_cool.png ├── surge_entrance.png ├── surgebg.png ├── switches.png ├── teleporter.png ├── tux.png ├── ui │ ├── flag_icons.png │ ├── mobile_gamepad.png │ ├── mobile_menu.png │ ├── mobile_pause_button.png │ ├── pause.png │ └── title_card.png ├── violet.png ├── water.png ├── watersplash.png ├── watersurface.png ├── waterworks.png ├── waterworks_bg.png ├── waterworks_mask.png ├── wolfey.png └── zipline.png ├── inputs ├── debug_mode.in ├── default.in ├── editor.in ├── screenshots.in └── secondary.in ├── languages ├── english.lng ├── esperanto.lng ├── extends │ ├── README.txt │ └── english.lng ├── french.lng ├── german.lng ├── italian.lng ├── lihuanian.lng ├── portuguese.lng ├── russian.lng ├── spanish.lng └── ukrainian.lng ├── levels ├── demo-1.lev ├── demo-2.lev ├── empty.lev ├── legacy │ ├── allegro.lev │ └── creativecommons.lev ├── sandbox.lev ├── scenes │ ├── allegro.lev │ ├── allegro_splash.lev │ ├── congratulations.lev │ ├── contribute.lev │ ├── create.lev │ ├── end_of_demo.lev │ ├── mainmenu.lev │ ├── play_classic_levels.lev │ ├── rate_game.lev │ ├── thanks_for_playing.lev │ └── title_screen.lev ├── sunshine-1.lev ├── sunshine-2.lev ├── sunshine-3.lev ├── surgescript.lev ├── waterworks-1.lev ├── waterworks-2.lev ├── waterworks-3.lev ├── waterworks-zone-1.lev ├── waterworks-zone-2.lev └── waterworks-zone-3.lev ├── licenses ├── Apache2-license.txt ├── BSD-3-clause.txt ├── CC-BY-3.0-legalcode.txt ├── CC-BY-4.0-legalcode.txt ├── CC-BY-SA-3.0-legalcode.txt ├── CC-BY-SA-4.0-legalcode.txt ├── CC0-1.0-legalcode.txt ├── GPL3-license.txt ├── Giftware-license.txt ├── MIT-license.txt └── OFL-1.1.txt ├── logo.png ├── musics ├── allegro.ogg ├── boss.ogg ├── citychill.ogg ├── creativecommons.ogg ├── drowning.ogg ├── gameover.ogg ├── gimacian.ogg ├── intro.ogg ├── invincible.ogg ├── menu.ogg ├── options.ogg ├── sharp.ogg ├── silence.ogg ├── speed.ogg ├── sunshine.ogg ├── template.ogg ├── theme.ogg ├── title.ogg ├── waterworks.ogg ├── winning.ogg ├── winning_plus.ogg └── winning_plusplus.ogg ├── quests ├── classic.qst ├── create.qst ├── default.qst ├── demo.qst ├── intro.qst ├── options.qst ├── stage_select.qst └── surge.qst ├── samples ├── 1up.ogg ├── acidshield.wav ├── bigring.wav ├── bosshit.wav ├── brake.wav ├── break.wav ├── bubbleget.wav ├── bumper.wav ├── cannon.ogg ├── cash.wav ├── charge.wav ├── charging_up.wav ├── checkpoint.wav ├── choose.wav ├── collectible.wav ├── collectible_count.wav ├── collectible_loss.wav ├── crococopter.wav ├── crococopter_swoop_down.wav ├── crococopter_swoop_up.wav ├── damaged.wav ├── death.wav ├── deny.wav ├── destroy.wav ├── discharge.wav ├── door1.wav ├── door2.wav ├── drown.wav ├── electric_bulb.wav ├── endsign.wav ├── fireshield.wav ├── fish.wav ├── floorhit.wav ├── glasses.wav ├── growlmod.wav ├── help.wav ├── impact.wav ├── jetpack.wav ├── jetpack2.wav ├── jump.wav ├── lightning_boom.wav ├── lightning_smash.wav ├── pause_appear.wav ├── pause_cancel.wav ├── pause_confirm.wav ├── pause_highlight.wav ├── pipe_in.wav ├── pipe_out.wav ├── power_pluggy_enter.wav ├── power_pluggy_exit.wav ├── powerup.wav ├── release.wav ├── return.wav ├── roar.ogg ├── roll.wav ├── salamander_ascent.ogg ├── salamander_boom.ogg ├── salamander_charge.ogg ├── secret.wav ├── select.wav ├── select_2.wav ├── shield.wav ├── shot.wav ├── skaterbug.wav ├── slide.wav ├── spikes.wav ├── spikes_appearing.wav ├── spikes_disappearing.wav ├── spring.wav ├── springfling.wav ├── switch.wav ├── talk.wav ├── teleport_appear.wav ├── teleport_disappear.wav ├── teleporter.wav ├── teleporter_backwards.wav ├── thundershield.wav ├── trash_empty.wav ├── trotada.wav ├── tube.wav ├── underwater_tick.wav ├── vibrate.wav ├── walk_on_water.wav ├── water_in.wav ├── water_out.wav ├── waterfall.wav ├── waterlevel.wav ├── watershield.wav ├── windshield.wav ├── zipline.wav └── zipline2.wav ├── screenshots └── screenshots.txt ├── scripts ├── behaviors │ ├── circular_movement.ss │ ├── directional_movement.ss │ ├── enemy.ss │ └── platformer.ss ├── bosses │ ├── giant_wolf.ss │ ├── hydra.ss │ └── salamander_boss.ss ├── core │ ├── camera.ss │ ├── cleared.ss │ ├── collectibles_listener.ss │ ├── hud.ss │ ├── opening.ss │ ├── pause.ss │ ├── setup.ss │ ├── surge_gameplay.ss │ ├── switch.ss │ └── water.ss ├── debug_mode │ ├── debug_mode.ss │ ├── plugins │ │ ├── camera.ss │ │ ├── exit.ss │ │ ├── grid_system.ss │ │ ├── item_creator.ss │ │ ├── item_picker │ │ │ ├── back_to_game.ss │ │ │ ├── basics_menu.ss │ │ │ ├── camera_menu.ss │ │ │ ├── enemies_menu.ss │ │ │ ├── gimmicks_menu.ss │ │ │ ├── grid_menu.ss │ │ │ ├── item_picker.ss │ │ │ ├── powerups_menu.ss │ │ │ └── specials_menu.ss │ │ ├── item_selector.ss │ │ ├── mouse_cursor.ss │ │ ├── player_locker.ss │ │ ├── tap_detector.ss │ │ ├── time_stopper.ss │ │ ├── touch_input.ss │ │ ├── ui_settings.ss │ │ └── video_changer.ss │ ├── ui_components │ │ ├── carousel.ss │ │ └── ui_scroller.ss │ └── utilities │ │ ├── input.ss │ │ ├── observable.ss │ │ └── tag_selector.ss ├── enemies │ ├── crococopter.ss │ ├── fish.ss │ ├── harrier.ss │ ├── jumping_fish.ss │ ├── lady_bugsy.ss │ ├── marmot.ss │ ├── marmotred.ss │ ├── mosquito.ss │ ├── salamander.ss │ ├── springfling.ss │ └── wolfey.ss ├── friends │ └── skaterbug.ss ├── functions │ ├── audio │ │ ├── play_boss_music.ss │ │ ├── play_level_music.ss │ │ ├── play_sound.ss │ │ └── stop_boss_music.ss │ ├── camera │ │ ├── lock_camera.ss │ │ ├── translate_default_camera.ss │ │ └── unlock_camera.ss │ ├── effects │ │ ├── fade_in.ss │ │ └── fade_out.ss │ ├── level │ │ ├── change_background.ss │ │ ├── change_water_level.ss │ │ ├── clear_level.ss │ │ ├── load_level.ss │ │ ├── spawn_entity.ss │ │ └── undo_clear_level.ss │ ├── misc │ │ ├── invoke.ss │ │ ├── launch_url.ss │ │ └── print.ss │ ├── player │ │ ├── add_to_score.ss │ │ ├── disable_character_switching.ss │ │ ├── disable_controls.ss │ │ ├── enable_character_switching.ss │ │ ├── enable_controls.ss │ │ ├── freeze_player.ss │ │ ├── give_extra_life.ss │ │ ├── give_extra_lives.ss │ │ ├── give_lucky_bonus.ss │ │ ├── hit_player.ss │ │ ├── kill_player.ss │ │ ├── switch_character.ss │ │ ├── transform_player.ss │ │ ├── translate_player.ss │ │ └── unfreeze_player.ss │ └── ui │ │ ├── hide_mobile_gamepad.ss │ │ ├── show_message.ss │ │ └── show_mobile_gamepad.ss ├── items │ ├── audio_source.ss │ ├── bg_xchg.ss │ ├── bridge.ss │ ├── bubbles.ss │ ├── bumpers.ss │ ├── capsule.ss │ ├── checkpoint.ss │ ├── collectibles.ss │ ├── compat.ss │ ├── conveyor_belt.ss │ ├── door.ss │ ├── elevator.ss │ ├── event_trigger.ss │ ├── goal.ss │ ├── layers.ss │ ├── pipes.ss │ ├── power_pluggy.ss │ ├── powerups.ss │ ├── profiler.ss │ ├── salamander_bridge.ss │ ├── salamander_wall.ss │ ├── spikes.ss │ ├── spring_booster.ss │ ├── springs.ss │ ├── switch.ss │ ├── teleporter.ss │ ├── tubes.ss │ ├── walk_on_water.ss │ └── zipline.ss ├── legacy │ ├── cutscenes │ │ ├── allegro.obj │ │ └── creativecommons.obj │ ├── fx │ │ ├── cutscene_skipper.obj │ │ ├── fade_effect.obj │ │ ├── fademusic.obj │ │ ├── moviefx.obj │ │ ├── pixelparticle.obj │ │ ├── smooth_camera_movement.obj │ │ ├── spiralring.obj │ │ └── textualcutscene.obj │ ├── items │ │ └── barrels.obj │ ├── misc │ │ └── dialogbox │ │ │ ├── base │ │ │ ├── avatar.obj │ │ │ ├── background.obj │ │ │ ├── button.obj │ │ │ └── text.obj │ │ │ ├── dialogbox.obj │ │ │ └── examples.obj │ ├── player │ │ ├── neon.obj │ │ ├── none.obj │ │ ├── readme.txt │ │ └── surge.obj │ ├── readme.txt │ └── startup │ │ ├── default_startup.obj │ │ ├── hud.obj │ │ ├── level_cleared.obj │ │ ├── opening_animation.obj │ │ ├── pause.obj │ │ ├── quit.obj │ │ ├── readme.txt │ │ ├── switch_character.obj │ │ └── water.obj ├── misc │ ├── animal.ss │ ├── boss_music.ss │ ├── camera_locker.ss │ ├── explosion.ss │ ├── explosion_combo.ss │ ├── fader.ss │ ├── lucky_bonus.ss │ ├── score_text.ss │ └── smoke.ss ├── players │ ├── brake_smoke.ss │ ├── dash_smoke.ss │ ├── follow_the_leader_ai.ss │ ├── lock_angle.ss │ ├── neon.ss │ ├── none.ss │ ├── old_school_angle.ss │ ├── peel_out.ss │ ├── player2.ss │ ├── repositioning_methods.ss │ ├── shield_abilities.ss │ ├── surge.ss │ └── team_play.ss ├── setup │ ├── demo_setup.ss │ ├── example_setup.ss │ ├── scenes │ │ ├── allegro_splash.ss │ │ ├── congratulations.ss │ │ ├── contribute.ss │ │ ├── create.ss │ │ ├── end_of_demo.ss │ │ ├── mainmenu.ss │ │ ├── play_classic_levels.ss │ │ ├── rate_game.ss │ │ ├── splash.ss │ │ ├── surgescript.ss │ │ ├── thanks_for_playing.ss │ │ └── title_screen.ss │ ├── sunshine_setup.ss │ ├── waterworks-zone.ss │ └── waterworks_setup.ss ├── surge_the_rabbit │ ├── activate_neon_as_player2.ss │ └── surge_the_rabbit.ss └── ui │ ├── menubuilder.ss │ ├── menubutton.ss │ ├── menubuttonlist.ss │ ├── menutitle.ss │ ├── message_box.ss │ ├── simple_menu.ss │ └── title_card.ss ├── sprites ├── bosses │ ├── giant_wolf.spr │ ├── hydra.spr │ └── salamander_boss.spr ├── core │ ├── camera.spr │ ├── null.spr │ ├── profiler.spr │ └── water.spr ├── debug_mode │ ├── item_picker.spr │ ├── item_selector.spr │ └── mouse_cursor.spr ├── enemies │ ├── crococopter.spr │ ├── fish.spr │ ├── harrier.spr │ ├── jumping_fish.spr │ ├── lady_bugsy.spr │ ├── marmot.spr │ ├── marmotred.spr │ ├── mosquito.spr │ ├── salamander.spr │ ├── springfling.spr │ └── wolfey.spr ├── friends │ └── skaterbug.spr ├── items │ ├── audio_source.spr │ ├── bg_xchg.spr │ ├── bridges.spr │ ├── bubbles.spr │ ├── bumpers.spr │ ├── capsule.spr │ ├── checkpoint.spr │ ├── collectible.spr │ ├── conveyor_belt.spr │ ├── door.spr │ ├── elevator.spr │ ├── event_trigger.spr │ ├── goal.spr │ ├── layers.spr │ ├── pipes.spr │ ├── power_pluggy.spr │ ├── powerups.spr │ ├── salamander_bridge.spr │ ├── salamander_wall.spr │ ├── spikes.spr │ ├── spring_booster.spr │ ├── springs.spr │ ├── switch.spr │ ├── teleporter.spr │ ├── tubes.spr │ ├── walk_on_water.spr │ └── zipline.spr ├── legacy │ ├── cutscenes │ │ ├── allegro.spr │ │ ├── creativecommons.spr │ │ └── cutscene.spr │ ├── fx │ │ ├── fade_effect.spr │ │ ├── impact.spr │ │ ├── pixel.spr │ │ ├── stars.spr │ │ └── water.spr │ ├── hud │ │ ├── arrow.spr │ │ ├── dialogbox.spr │ │ ├── editor.spr │ │ ├── hud.spr │ │ ├── levelact.spr │ │ ├── pause.spr │ │ └── title_screen.spr │ └── items │ │ ├── animal.spr │ │ ├── barrel.spr │ │ ├── bigring.spr │ │ ├── bumper.spr │ │ ├── checkpointorb.spr │ │ ├── collectibles.spr │ │ ├── danger.spr │ │ ├── dnadoor.spr │ │ ├── door.spr │ │ ├── explosion.spr │ │ ├── goal.spr │ │ ├── icon.spr │ │ ├── itembox.spr │ │ ├── loop.spr │ │ ├── shield.spr │ │ ├── spikes.spr │ │ ├── spring.spr │ │ ├── switch.spr │ │ └── teleporter.spr ├── misc │ ├── animal.spr │ ├── explosion.spr │ ├── invincibility.spr │ ├── shields.spr │ └── smoke.spr ├── overrides │ └── README.txt ├── players │ ├── charge.spr │ ├── neon.spr │ ├── none.spr │ ├── surge.spr │ └── tux.spr ├── scenes │ ├── end_of_demo.spr │ ├── play_classic_levels.spr │ ├── rate_game.spr │ ├── thanks_for_playing.spr │ └── title_screen.spr └── ui │ ├── dialogs.spr │ ├── editor.spr │ ├── fade_effect.spr │ ├── flag_icons.spr │ ├── hand.spr │ ├── life_icon.spr │ ├── menu_button.spr │ ├── mobile_gamepad.spr │ ├── mobile_menu.spr │ ├── mobile_pause_button.spr │ ├── mouse.spr │ ├── opening.spr │ ├── pause.spr │ ├── pause_legacy.spr │ ├── pointer.spr │ ├── surge_circle.spr │ ├── surge_cool.spr │ └── title_card.spr ├── src ├── core │ ├── animation.c │ ├── animation.h │ ├── asset.c │ ├── asset.h │ ├── audio.c │ ├── audio.h │ ├── color.c │ ├── color.h │ ├── commandline.c │ ├── commandline.h │ ├── config.c │ ├── config.h │ ├── engine.c │ ├── engine.h │ ├── fadefx.c │ ├── fadefx.h │ ├── font.c │ ├── font.h │ ├── global.h │ ├── image.c │ ├── image.h │ ├── import.c │ ├── import.h │ ├── input.c │ ├── input.h │ ├── inputmap.c │ ├── inputmap.h │ ├── keyframes.c │ ├── keyframes.h │ ├── lang.c │ ├── lang.h │ ├── logfile.c │ ├── logfile.h │ ├── modutils.c │ ├── modutils.h │ ├── nanoparser.c │ ├── nanoparser.h │ ├── prefs.c │ ├── prefs.h │ ├── quest.c │ ├── quest.h │ ├── resourcemanager.c │ ├── resourcemanager.h │ ├── scene.c │ ├── scene.h │ ├── screenshot.c │ ├── screenshot.h │ ├── shader.c │ ├── shader.h │ ├── sprite.c │ ├── sprite.h │ ├── storyboard.c │ ├── storyboard.h │ ├── timer.c │ ├── timer.h │ ├── video.c │ ├── video.h │ ├── web.c │ └── web.h ├── entities │ ├── actor.c │ ├── actor.h │ ├── background.c │ ├── background.h │ ├── brick.c │ ├── brick.h │ ├── brickmanager.c │ ├── brickmanager.h │ ├── camera.c │ ├── camera.h │ ├── character.c │ ├── character.h │ ├── legacy │ │ ├── enemy.c │ │ ├── enemy.h │ │ ├── entitymanager.c │ │ ├── entitymanager.h │ │ ├── item.c │ │ ├── item.h │ │ ├── nanocalc │ │ │ ├── nanocalc.c │ │ │ ├── nanocalc.h │ │ │ ├── nanocalc_addons.c │ │ │ ├── nanocalc_addons.h │ │ │ ├── nanocalcext.c │ │ │ └── nanocalcext.h │ │ ├── object_compiler.c │ │ ├── object_compiler.h │ │ ├── object_decorators.c │ │ ├── object_decorators.h │ │ ├── object_machine.c │ │ ├── object_machine.h │ │ ├── object_vm.c │ │ ├── object_vm.h │ │ └── spatialhash.h │ ├── mobilegamepad.c │ ├── mobilegamepad.h │ ├── player.c │ ├── player.h │ ├── renderqueue.c │ ├── renderqueue.h │ ├── sfx.h │ ├── waterfx.c │ └── waterfx.h ├── main.c ├── misc │ ├── android │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── etc │ │ │ └── fdroid.yaml │ │ ├── metadata │ │ │ ├── de-DE │ │ │ │ ├── full_description.txt │ │ │ │ ├── short_description.txt │ │ │ │ └── title.txt │ │ │ ├── en-US │ │ │ │ ├── changelogs │ │ │ │ │ ├── 25025.txt │ │ │ │ │ ├── 30500.txt │ │ │ │ │ ├── 30550.txt │ │ │ │ │ └── 30600.txt │ │ │ │ ├── full_description.txt │ │ │ │ ├── images │ │ │ │ │ ├── featureGraphic.png │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── phoneScreenshots │ │ │ │ │ │ ├── 1.png │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ └── 9.png │ │ │ │ │ └── tvBanner.png │ │ │ │ ├── short_description.txt │ │ │ │ ├── title.txt │ │ │ │ └── video.txt │ │ │ ├── es-ES │ │ │ │ ├── full_description.txt │ │ │ │ ├── short_description.txt │ │ │ │ └── title.txt │ │ │ ├── fr-FR │ │ │ │ ├── full_description.txt │ │ │ │ ├── short_description.txt │ │ │ │ └── title.txt │ │ │ ├── it-IT │ │ │ │ ├── full_description.txt │ │ │ │ ├── short_description.txt │ │ │ │ └── title.txt │ │ │ ├── lt-LT │ │ │ │ ├── full_description.txt │ │ │ │ ├── short_description.txt │ │ │ │ └── title.txt │ │ │ ├── pt-BR │ │ │ │ ├── full_description.txt │ │ │ │ ├── short_description.txt │ │ │ │ └── title.txt │ │ │ ├── ru-RU │ │ │ │ ├── full_description.txt │ │ │ │ ├── short_description.txt │ │ │ │ └── title.txt │ │ │ └── uk-UA │ │ │ │ ├── full_description.txt │ │ │ │ ├── short_description.txt │ │ │ │ └── title.txt │ │ ├── scripts │ │ │ ├── assemble_package.sh │ │ │ ├── assemble_prepare.sh │ │ │ ├── build_allegro.sh │ │ │ ├── build_deps.sh │ │ │ ├── build_java.sh │ │ │ ├── build_opensurge.sh │ │ │ ├── build_surgescript.sh │ │ │ ├── git_pull.sh │ │ │ ├── init.sh │ │ │ ├── pull_allegro.sh │ │ │ ├── pull_deps.sh │ │ │ ├── pull_java.sh │ │ │ ├── pull_opensurge.sh │ │ │ ├── pull_surgescript.sh │ │ │ ├── run_apk.sh │ │ │ ├── set_ndk.sh │ │ │ ├── set_sdk.sh │ │ │ ├── sign_apk.sh │ │ │ ├── stage_allegro.sh │ │ │ ├── stage_deps.sh │ │ │ ├── stage_java.sh │ │ │ ├── stage_opensurge.sh │ │ │ └── stage_surgescript.sh │ │ ├── settings.mk │ │ └── src │ │ │ ├── AndroidManifest.xml │ │ │ ├── cpp │ │ │ └── .gitignore │ │ │ ├── java │ │ │ └── org │ │ │ │ └── opensurge2d │ │ │ │ └── surgeengine │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_banner.xml │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_banner.png │ │ │ ├── ic_banner_foreground.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── artwork │ │ └── musics │ │ │ ├── 1up.mmp │ │ │ ├── README │ │ │ ├── drowning.mmp │ │ │ ├── gameover.mmp │ │ │ ├── speed.mmp │ │ │ └── title.mmp │ ├── copyright_data.csv │ ├── credits.c.in │ ├── goodies │ │ ├── demo_level.cmd │ │ ├── import_wizard.cmd │ │ ├── mobile_mode.cmd │ │ ├── options_screen.cmd │ │ └── verbose_logs.cmd │ ├── icon.c │ ├── icon128.png │ ├── icon256.png │ ├── icon_base.png │ ├── icon_old.png │ ├── license.c │ ├── opensurge.appdata.xml.in │ ├── opensurge.desktop.in │ ├── opensurge.ico │ ├── opensurge.png │ ├── opensurge.rc.in │ ├── org.opensurge2d.OpenSurge.yaml │ ├── releases2appdata.js │ ├── snapcraft.yaml │ └── toolchain-mingw.cmake ├── physics │ ├── collisionmask.c │ ├── collisionmask.h │ ├── obstacle.c │ ├── obstacle.h │ ├── obstaclemap.c │ ├── obstaclemap.h │ ├── physicsactor.c │ ├── physicsactor.h │ ├── sensor.c │ ├── sensor.h │ ├── sensorstate.c │ └── sensorstate.h ├── scenes │ ├── confirmbox.c │ ├── confirmbox.h │ ├── credits.c │ ├── credits.h │ ├── editorhelp.c │ ├── editorhelp.h │ ├── editorpal.c │ ├── editorpal.h │ ├── gameover.c │ ├── gameover.h │ ├── info.c │ ├── info.h │ ├── intro.c │ ├── intro.h │ ├── langselect.c │ ├── langselect.h │ ├── level.c │ ├── level.h │ ├── mobile │ │ ├── menu.c │ │ ├── menu.h │ │ ├── popup.c │ │ ├── popup.h │ │ ├── subscenes │ │ │ ├── credits.c │ │ │ ├── credits.h │ │ │ ├── info.c │ │ │ ├── info.h │ │ │ ├── screenshot.c │ │ │ ├── screenshot.h │ │ │ └── subscene.h │ │ └── util │ │ │ ├── touch.c │ │ │ └── touch.h │ ├── modloader.c │ ├── modloader.h │ ├── pause.c │ ├── pause.h │ ├── quest.c │ ├── quest.h │ ├── settings.c │ ├── settings.h │ ├── stageselect.c │ ├── stageselect.h │ └── util │ │ ├── editorcmd.c │ │ ├── editorcmd.h │ │ ├── editorgrp.c │ │ ├── editorgrp.h │ │ ├── levparser.c │ │ └── levparser.h ├── scripting │ ├── actor.c │ ├── androidplatform.c │ ├── animation.c │ ├── application.c │ ├── brick.c │ ├── brickparticle.c │ ├── camera.c │ ├── collisions.c │ ├── console.c │ ├── entitycontainer.c │ ├── entitymanager.c │ ├── entitytree.c │ ├── events.c │ ├── game.c │ ├── input.c │ ├── lang.c │ ├── level.c │ ├── levelmanager.c │ ├── levelobjectcontainer.c │ ├── loaderthread.c │ ├── loaderthread.h │ ├── mobilegamepad.c │ ├── mouse.c │ ├── music.c │ ├── object.c │ ├── obstaclemap.c │ ├── platform.c │ ├── player.c │ ├── playermanager.c │ ├── prefs.c │ ├── screen.c │ ├── scripting.c │ ├── scripting.h │ ├── sensor.c │ ├── sound.c │ ├── surgeengine.c │ ├── text.c │ ├── time.c │ ├── transform.c │ ├── util │ │ ├── iterators.c │ │ └── iterators.h │ ├── vector2.c │ ├── video.c │ └── web.c ├── third_party │ ├── fast_draw.c │ ├── fast_draw.h │ ├── ignorecase.c │ ├── ignorecase.h │ ├── utf8.c │ └── utf8.h └── util │ ├── csv.c │ ├── csv.h │ ├── darray.h │ ├── dictionary.c │ ├── dictionary.h │ ├── djb2.h │ ├── fasthash.c │ ├── fasthash.h │ ├── hashtable.h │ ├── iterator.c │ ├── iterator.h │ ├── numeric.c │ ├── numeric.h │ ├── point2d.h │ ├── rect.h │ ├── stringutil.c │ ├── stringutil.h │ ├── transform.c │ ├── transform.h │ ├── util.c │ ├── util.h │ ├── v2d.c │ └── v2d.h ├── surge.cfg ├── surge.png ├── surge.rocks └── themes ├── legacy ├── grassland.bg ├── grassland.brk ├── grassland.grp ├── sunshine.grp └── sunshine_solids.grp ├── none.bg ├── none.brk ├── scenes ├── allegro.bg ├── allegro_splash.bg ├── credits.bg ├── end_of_demo.bg ├── langselect.bg ├── levelselect.bg ├── mainmenu.bg ├── options.bg ├── play_classic_levels.bg ├── rate_game.bg └── thanks_for_playing.bg ├── sunset.bg ├── sunshine.bg ├── sunshine.brk ├── template.bg ├── waterworks-zone-boss.bg ├── waterworks-zone-indoors.bg ├── waterworks-zone-outdoors.bg ├── waterworks-zone.brk ├── waterworks.bg ├── waterworks.brk ├── waterworks_indoors.bg └── waterworks_indoors_fg.bg /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: alemart # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: alemart # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Specifies intentionally untracked files to ignore when using Git 2 | # http://git-scm.com/docs/gitignore 3 | 4 | # vscode 5 | .vscode 6 | .vscode/* 7 | !.vscode/settings.json 8 | !.vscode/tasks.json 9 | !.vscode/launch.json 10 | !.vscode/extensions.json 11 | 12 | # msvc 13 | .vs/ 14 | CMakeSettings.json 15 | out/ 16 | 17 | # vim 18 | [._]*.s[a-v][a-z] 19 | [._]*.sw[a-p] 20 | [._]s[a-v][a-z] 21 | [._]sw[a-p] 22 | Session.vim 23 | .netrwhist 24 | *~ 25 | 26 | # opensurge 27 | !src/** 28 | build/ 29 | CMakeFiles/ 30 | screenshots/*.png 31 | .userdata/ 32 | opensurge 33 | opensurge.exe 34 | surge.prefs 35 | logfile.txt 36 | allegro5.cfg 37 | allegro.log 38 | *.dll 39 | *.pdb 40 | gmon.out 41 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | Wuzzy 2 | -------------------------------------------------------------------------------- /fonts/NotoSans-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/NotoSans-Black.ttf -------------------------------------------------------------------------------- /fonts/NotoSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/NotoSans-Bold.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/Roboto-Black.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/Roboto-Bold.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /fonts/boxy_bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/boxy_bold.png -------------------------------------------------------------------------------- /fonts/default.fnt: -------------------------------------------------------------------------------- 1 | // Open Surge Engine 2 | // http://opensurge2d.org 3 | // Default fonts 4 | 5 | // general purpose bitmap font 6 | font "default" 7 | { 8 | bitmap 9 | { 10 | source_file "fonts/default.png" 11 | source_rect 0 0 128 72 12 | frame_size 8 12 13 | keymap " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\x60abcdefghijklmnopqrstuvwxyz{|}~\x7f" 14 | } 15 | } 16 | 17 | // general purpose truetype font 18 | font "sans" 19 | { 20 | truetype 21 | { 22 | source_file "fonts/Roboto-Medium.ttf" 23 | size 15 24 | shadow 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /fonts/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/default.png -------------------------------------------------------------------------------- /fonts/dialogbox.fnt: -------------------------------------------------------------------------------- 1 | // Open Surge Engine 2 | // http://opensurge2d.org 3 | 4 | font "dialogbox" 5 | { 6 | truetype 7 | { 8 | source_file "fonts/Roboto-Medium.ttf" 9 | size 14 10 | shadow 11 | antialias 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /fonts/editor.fnt: -------------------------------------------------------------------------------- 1 | // Open Surge Engine 2 | // http://opensurge2d.org 3 | // Fonts used in the Level Editor 4 | 5 | // User Interface 6 | font "EditorUI" 7 | { 8 | truetype 9 | { 10 | source_file "fonts/Roboto-Bold.ttf" 11 | size 17 12 | shadow 13 | antialias 14 | } 15 | } 16 | 17 | // Mouse cursor 18 | font "EditorCursor" 19 | { 20 | truetype 21 | { 22 | source_file "fonts/Roboto-Black.ttf" 23 | size 14 24 | shadow 25 | antialias 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /fonts/end_of_demo.fnt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: end_of_demo.fnt 3 | // Description: scripts for the fonts used at the End of Demo scene 4 | // Author: script by Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | font "End of Demo - Text" 9 | { 10 | truetype 11 | { 12 | source_file "fonts/Roboto-Bold.ttf" 13 | size 13 14 | antialias 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /fonts/gameover.fnt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: gameover.fnt 3 | // Description: script of the Game Over font 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | font "gameover" is "GoodNeighborsLarge" 9 | -------------------------------------------------------------------------------- /fonts/good_neighbors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/good_neighbors.png -------------------------------------------------------------------------------- /fonts/hud.fnt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: hud.fnt 3 | // Description: script of the font of the Heads-Up Display 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | font "HUD" is "GoodNeighbors" 9 | font "HUD Large" is "GoodNeighborsLarge" 10 | -------------------------------------------------------------------------------- /fonts/loading.fnt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: loading.fnt 3 | // Description: script of the loading screen font 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | font "Loading" is "GoodNeighbors" 9 | -------------------------------------------------------------------------------- /fonts/rate_game.fnt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: rate_game.fnt 3 | // Description: fonts used at the "Rate the Game" scene 4 | // Author: script by Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | font "Rate the Game - Text" 9 | { 10 | truetype 11 | { 12 | source_file "fonts/Roboto-Medium.ttf" 13 | size 14 14 | antialias 15 | } 16 | } 17 | 18 | font "Rate the Game - Title" 19 | { 20 | truetype 21 | { 22 | source_file "fonts/Roboto-Black.ttf" 23 | size 18 24 | antialias 25 | } 26 | } -------------------------------------------------------------------------------- /fonts/thanks_for_playing.fnt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: thanks_for_playing.fnt 3 | // Description: script of the fonts used at the Thanks for Playing scene 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | font "Thanks for Playing - Text" is "GoodNeighbors" 9 | font "Thanks for Playing - Title" is "GoodNeighborsLarge" 10 | -------------------------------------------------------------------------------- /fonts/tiny.fnt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: tiny.fnt 3 | // Description: script for the Tom Thumb Tiny ASCII font by Robey Pointer 4 | // Author: script by Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | font "Tiny" 9 | { 10 | bitmap 11 | { 12 | source_file "fonts/tiny.png" 13 | source_rect 0 7 160 21 14 | frame_size 5 7 15 | keymap " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\x60abcdefghijklmnopqrstuvwxyz{|}~\x7f" 16 | } 17 | } -------------------------------------------------------------------------------- /fonts/tiny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/fonts/tiny.png -------------------------------------------------------------------------------- /fonts/title_screen.fnt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: title_screen.fnt 3 | // Description: script of the fonts used at the Title Screen 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | font "Title Screen - Menu Item" is "GoodNeighbors" 9 | font "Title Screen - Tiny Text" is "BoxyBold" 10 | -------------------------------------------------------------------------------- /images/acts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/acts.png -------------------------------------------------------------------------------- /images/animalprison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/animalprison.png -------------------------------------------------------------------------------- /images/animals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/animals.png -------------------------------------------------------------------------------- /images/backgrounds/waterworks-zone-boss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/backgrounds/waterworks-zone-boss.png -------------------------------------------------------------------------------- /images/backgrounds/waterworks-zone-indoors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/backgrounds/waterworks-zone-indoors.png -------------------------------------------------------------------------------- /images/backgrounds/waterworks-zone-outdoors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/backgrounds/waterworks-zone-outdoors.png -------------------------------------------------------------------------------- /images/barrel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/barrel.png -------------------------------------------------------------------------------- /images/bricks/waterworks-zone-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/bricks/waterworks-zone-mask.png -------------------------------------------------------------------------------- /images/bricks/waterworks-zone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/bricks/waterworks-zone.png -------------------------------------------------------------------------------- /images/bridges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/bridges.png -------------------------------------------------------------------------------- /images/bugsy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/bugsy.png -------------------------------------------------------------------------------- /images/bumper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/bumper.png -------------------------------------------------------------------------------- /images/capsule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/capsule.png -------------------------------------------------------------------------------- /images/charge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/charge.png -------------------------------------------------------------------------------- /images/checkpoint_orb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/checkpoint_orb.png -------------------------------------------------------------------------------- /images/collectibles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/collectibles.png -------------------------------------------------------------------------------- /images/core.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/core.png -------------------------------------------------------------------------------- /images/creativecommons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/creativecommons.png -------------------------------------------------------------------------------- /images/credits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/credits.png -------------------------------------------------------------------------------- /images/crococopter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/crococopter.png -------------------------------------------------------------------------------- /images/cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/cursor.png -------------------------------------------------------------------------------- /images/debug_mode/item_picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/debug_mode/item_picker.png -------------------------------------------------------------------------------- /images/debug_mode/mouse_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/debug_mode/mouse_cursor.png -------------------------------------------------------------------------------- /images/debug_mode/selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/debug_mode/selection.png -------------------------------------------------------------------------------- /images/debug_mode/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/debug_mode/trash.png -------------------------------------------------------------------------------- /images/dialogbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/dialogbox.png -------------------------------------------------------------------------------- /images/dialogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/dialogs.png -------------------------------------------------------------------------------- /images/dnadoors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/dnadoors.png -------------------------------------------------------------------------------- /images/elevators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/elevators.png -------------------------------------------------------------------------------- /images/enemies/waterworks_zone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/enemies/waterworks_zone.png -------------------------------------------------------------------------------- /images/eraser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/eraser.png -------------------------------------------------------------------------------- /images/even_more_shields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/even_more_shields.png -------------------------------------------------------------------------------- /images/explode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/explode.png -------------------------------------------------------------------------------- /images/explosion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/explosion.png -------------------------------------------------------------------------------- /images/fade_effect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/fade_effect.png -------------------------------------------------------------------------------- /images/fish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/fish.png -------------------------------------------------------------------------------- /images/giant_wolf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/giant_wolf.png -------------------------------------------------------------------------------- /images/goal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/goal.png -------------------------------------------------------------------------------- /images/goal_sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/goal_sign.png -------------------------------------------------------------------------------- /images/hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/hand.png -------------------------------------------------------------------------------- /images/harrier-swoop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/harrier-swoop.png -------------------------------------------------------------------------------- /images/heroes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/heroes.png -------------------------------------------------------------------------------- /images/hud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/hud.png -------------------------------------------------------------------------------- /images/hydra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/hydra.png -------------------------------------------------------------------------------- /images/impact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/impact.png -------------------------------------------------------------------------------- /images/item_boxes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/item_boxes.png -------------------------------------------------------------------------------- /images/items/capsule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/capsule.png -------------------------------------------------------------------------------- /images/items/checkpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/checkpoint.png -------------------------------------------------------------------------------- /images/items/conveyor_belt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/conveyor_belt.png -------------------------------------------------------------------------------- /images/items/goal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/goal.png -------------------------------------------------------------------------------- /images/items/power_pluggy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/power_pluggy.png -------------------------------------------------------------------------------- /images/items/powerups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/powerups.png -------------------------------------------------------------------------------- /images/items/spring_booster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/spring_booster.png -------------------------------------------------------------------------------- /images/items/springs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/springs.png -------------------------------------------------------------------------------- /images/items/walk_on_water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/walk_on_water.png -------------------------------------------------------------------------------- /images/items/walk_on_water_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/items/walk_on_water_splash.png -------------------------------------------------------------------------------- /images/jumping_fish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/jumping_fish.png -------------------------------------------------------------------------------- /images/lady_bugsy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/lady_bugsy.png -------------------------------------------------------------------------------- /images/liballeg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/liballeg.png -------------------------------------------------------------------------------- /images/life_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/life_icon.png -------------------------------------------------------------------------------- /images/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/loading.png -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/logo.png -------------------------------------------------------------------------------- /images/marmot-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/marmot-green.png -------------------------------------------------------------------------------- /images/marmotred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/marmotred.png -------------------------------------------------------------------------------- /images/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/menu.png -------------------------------------------------------------------------------- /images/mini_smoke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/mini_smoke.png -------------------------------------------------------------------------------- /images/more_shields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/more_shields.png -------------------------------------------------------------------------------- /images/mosquito.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/mosquito.png -------------------------------------------------------------------------------- /images/neon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/neon.png -------------------------------------------------------------------------------- /images/new_shields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/new_shields.png -------------------------------------------------------------------------------- /images/null.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/null.png -------------------------------------------------------------------------------- /images/opening.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/opening.png -------------------------------------------------------------------------------- /images/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/pause.png -------------------------------------------------------------------------------- /images/pixel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/pixel.png -------------------------------------------------------------------------------- /images/players/surge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/players/surge.png -------------------------------------------------------------------------------- /images/players/surge_extra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/players/surge_extra.png -------------------------------------------------------------------------------- /images/rings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/rings.png -------------------------------------------------------------------------------- /images/ruler-salamander.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/ruler-salamander.png -------------------------------------------------------------------------------- /images/salamander_boss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/salamander_boss.png -------------------------------------------------------------------------------- /images/salamander_bridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/salamander_bridge.png -------------------------------------------------------------------------------- /images/salamander_wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/salamander_wall.png -------------------------------------------------------------------------------- /images/scenes/allegro_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/scenes/allegro_splash.png -------------------------------------------------------------------------------- /images/scenes/end_of_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/scenes/end_of_demo.png -------------------------------------------------------------------------------- /images/scenes/rate_game.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/scenes/rate_game.png -------------------------------------------------------------------------------- /images/scenes/thanks_for_playing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/scenes/thanks_for_playing.png -------------------------------------------------------------------------------- /images/scenes/title_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/scenes/title_screen.png -------------------------------------------------------------------------------- /images/sea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/sea.png -------------------------------------------------------------------------------- /images/shields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/shields.png -------------------------------------------------------------------------------- /images/skaterbug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/skaterbug.png -------------------------------------------------------------------------------- /images/smoke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/smoke.png -------------------------------------------------------------------------------- /images/special.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/special.png -------------------------------------------------------------------------------- /images/speed_smoke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/speed_smoke.png -------------------------------------------------------------------------------- /images/spikes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/spikes.png -------------------------------------------------------------------------------- /images/spring_pads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/spring_pads.png -------------------------------------------------------------------------------- /images/springfling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/springfling.png -------------------------------------------------------------------------------- /images/stars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/stars.png -------------------------------------------------------------------------------- /images/sunshine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/sunshine.png -------------------------------------------------------------------------------- /images/sunshine_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/sunshine_bg.png -------------------------------------------------------------------------------- /images/sunshine_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/sunshine_mask.png -------------------------------------------------------------------------------- /images/surge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/surge.png -------------------------------------------------------------------------------- /images/surge_cool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/surge_cool.png -------------------------------------------------------------------------------- /images/surge_entrance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/surge_entrance.png -------------------------------------------------------------------------------- /images/surgebg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/surgebg.png -------------------------------------------------------------------------------- /images/switches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/switches.png -------------------------------------------------------------------------------- /images/teleporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/teleporter.png -------------------------------------------------------------------------------- /images/tux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/tux.png -------------------------------------------------------------------------------- /images/ui/flag_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/ui/flag_icons.png -------------------------------------------------------------------------------- /images/ui/mobile_gamepad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/ui/mobile_gamepad.png -------------------------------------------------------------------------------- /images/ui/mobile_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/ui/mobile_menu.png -------------------------------------------------------------------------------- /images/ui/mobile_pause_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/ui/mobile_pause_button.png -------------------------------------------------------------------------------- /images/ui/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/ui/pause.png -------------------------------------------------------------------------------- /images/ui/title_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/ui/title_card.png -------------------------------------------------------------------------------- /images/violet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/violet.png -------------------------------------------------------------------------------- /images/water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/water.png -------------------------------------------------------------------------------- /images/watersplash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/watersplash.png -------------------------------------------------------------------------------- /images/watersurface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/watersurface.png -------------------------------------------------------------------------------- /images/waterworks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/waterworks.png -------------------------------------------------------------------------------- /images/waterworks_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/waterworks_bg.png -------------------------------------------------------------------------------- /images/waterworks_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/waterworks_mask.png -------------------------------------------------------------------------------- /images/wolfey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/wolfey.png -------------------------------------------------------------------------------- /images/zipline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/images/zipline.png -------------------------------------------------------------------------------- /languages/extends/english.lng: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: languages/extends/english.lng 3 | // Description: language extension - english (encoding: UTF-8) 4 | // Author: TYPE YOUR NAME HERE 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // 9 | // Modders: 10 | // 11 | // Read more about language extensions: 12 | // languages/extens/README.txt 13 | // 14 | 15 | //LANG_AUTHOR "TYPE YOUR NAME HERE" 16 | 17 | 18 | // 19 | // EXAMPLE 1 20 | // Replace "Power" by "Coins" in the Heads-Up Display 21 | // 22 | //HUD_POWER "Coins" 23 | 24 | 25 | // 26 | // EXAMPLE 2 27 | // Add a new entry to the language file 28 | // 29 | MY_NEW_ENTRY "My new entry works!!!" 30 | 31 | -------------------------------------------------------------------------------- /levels/empty.lev: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------ 2 | // Open Surge Engine 0.6.0 level 3 | // This file was generated by the built-in level editor. 4 | // http://opensurge2d.org 5 | // ------------------------------------------------------------ 6 | 7 | // header 8 | name "Empty Level" 9 | author "YOUR NAME HERE" 10 | license "CC-BY 4.0" 11 | version "1.1" 12 | requires "0.6.0" 13 | act 1 14 | theme "themes/waterworks.brk" 15 | bgtheme "themes/template.bg" 16 | spawn_point 128 9920 17 | music "musics/template.ogg" 18 | setup "Surge Gameplay" "Default Camera" "Default Pause and Quit" "Default HUD" "Default Title Card" "Default Cleared Animation" 19 | players "Surge" 20 | 21 | // bricks 22 | brick 17 0 9856 23 | brick 16 128 9856 24 | brick 16 256 9856 25 | brick 18 384 9856 26 | 27 | // entities 28 | entity "Goal" 448 9952 "d9b763b8ab9ce028" 29 | entity "Powerup Lucky Bonus" 32 9952 "d9e6b5cb0626d3e8" 30 | 31 | // EOF -------------------------------------------------------------------------------- /levels/legacy/allegro.lev: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------ 2 | // Open Surge Engine 0.2.0 level 3 | // This file was generated by the built-in level editor. 4 | // ------------------------------------------------------------ 5 | 6 | // header 7 | name "Allegro" 8 | author "Alexandre" 9 | version "1.0" 10 | requires "0.2.0" 11 | act 1 12 | theme "themes/none.brk" 13 | bgtheme "themes/none.bg" 14 | spawn_point 0 0 15 | startup ".allegro_startup" 16 | players "None" 17 | readonly 18 | -------------------------------------------------------------------------------- /levels/legacy/creativecommons.lev: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------ 2 | // Open Surge Engine 0.2.0 level 3 | // This file was generated by the built-in level editor. 4 | // ------------------------------------------------------------ 5 | 6 | // header 7 | name "Creative Commons Cutscene" 8 | author "Di Rodrigues, Alexandre" 9 | version "1.0" 10 | requires "0.2.0" 11 | act 1 12 | theme "themes/none.brk" 13 | bgtheme "themes/none.bg" 14 | spawn_point 0 0 15 | startup ".creativecommons_startup" 16 | players "None" 17 | readonly 18 | -------------------------------------------------------------------------------- /levels/scenes/allegro.lev: -------------------------------------------------------------------------------- 1 | // Splash screen 2 | name "Allegro Splash" 3 | author "Alexandre Martins" 4 | license "CC-0" 5 | version "1.0" 6 | requires "0.5.1" 7 | act 1 8 | theme "themes/none.brk" 9 | setup "Splash" 10 | players "None" 11 | readonly 12 | 13 | // Tip for modders: to make a splash 14 | // screen, copy this file and change 15 | // the line below to your background 16 | bgtheme "themes/scenes/allegro.bg" -------------------------------------------------------------------------------- /levels/scenes/allegro_splash.lev: -------------------------------------------------------------------------------- 1 | name "Allegro Splash Screen" 2 | author "Alexandre Martins" 3 | license "CC0" 4 | version "1.0" 5 | requires "0.6.0" 6 | act 1 7 | theme "themes/none.brk" 8 | bgtheme "themes/scenes/allegro_splash.bg" 9 | setup "Allegro Splash Screen" 10 | players "None" 11 | readonly -------------------------------------------------------------------------------- /levels/scenes/congratulations.lev: -------------------------------------------------------------------------------- 1 | name "Congratulations" 2 | author "Alexandre Martins" 3 | license "CC-BY 3.0" 4 | version "1.0" 5 | requires "0.5.1" 6 | act 1 7 | theme "themes/none.brk" 8 | bgtheme "themes/scenes/mainmenu.bg" 9 | music "musics/theme.ogg" 10 | spawn_point 0 0 11 | setup "Congratulations" 12 | players "None" 13 | readonly -------------------------------------------------------------------------------- /levels/scenes/contribute.lev: -------------------------------------------------------------------------------- 1 | name "Setup contribute web page" 2 | author "Alexandre Martins" 3 | license "CC-BY 3.0" 4 | version "1.0" 5 | requires "0.5.1" 6 | act 1 7 | theme "themes/none.brk" 8 | bgtheme "themes/none.bg" 9 | spawn_point 0 0 10 | setup "Setup contribute web page" 11 | players "None" 12 | readonly -------------------------------------------------------------------------------- /levels/scenes/create.lev: -------------------------------------------------------------------------------- 1 | name "Create Menu" 2 | author "Alexandre Martins" 3 | license "CC-BY 3.0" 4 | version "1.0" 5 | requires "0.5.1" 6 | act 1 7 | theme "themes/none.brk" 8 | bgtheme "themes/scenes/mainmenu.bg" 9 | music "musics/menu.ogg" 10 | spawn_point 0 0 11 | setup "CreateMenu" 12 | players "None" 13 | readonly -------------------------------------------------------------------------------- /levels/scenes/end_of_demo.lev: -------------------------------------------------------------------------------- 1 | // 2 | // End of demo 3 | // 4 | 5 | name "End of demo" 6 | author "Alexandre Martins" 7 | license "CC BY 4.0" 8 | version "1.0" 9 | requires "0.6.0" 10 | act 1 11 | theme "themes/none.brk" 12 | bgtheme "themes/scenes/end_of_demo.bg" 13 | spawn_point 0 0 14 | setup "End of Demo" 15 | players "None" 16 | readonly -------------------------------------------------------------------------------- /levels/scenes/mainmenu.lev: -------------------------------------------------------------------------------- 1 | // Main menu for Open Surge 2 | name "Main Menu" 3 | author "Alexandre Martins" 4 | license "CC-BY 3.0" 5 | version "1.0" 6 | requires "0.5.1" 7 | act 1 8 | theme "themes/none.brk" 9 | bgtheme "themes/scenes/mainmenu.bg" 10 | music "musics/menu.ogg" 11 | spawn_point 0 0 12 | setup "MainMenu" 13 | players "None" 14 | readonly -------------------------------------------------------------------------------- /levels/scenes/play_classic_levels.lev: -------------------------------------------------------------------------------- 1 | // 2 | // Play Classic Levels 3 | // 4 | 5 | name "Play classic levels?" 6 | author "Alexandre Martins" 7 | license "CC BY 4.0" 8 | version "1.0" 9 | requires "0.6.1" 10 | act 1 11 | theme "themes/none.brk" 12 | bgtheme "themes/scenes/play_classic_levels.bg" 13 | spawn_point 0 0 14 | setup "Play Classic Levels" 15 | players "None" 16 | readonly -------------------------------------------------------------------------------- /levels/scenes/rate_game.lev: -------------------------------------------------------------------------------- 1 | name "Rate the Game" 2 | author "Alexandre Martins" 3 | license "CC BY 4.0" 4 | version "1.0" 5 | requires "0.6.1" 6 | act 1 7 | theme "themes/none.brk" 8 | bgtheme "themes/scenes/rate_game.bg" 9 | setup "Rate the Game" 10 | players "None" 11 | readonly -------------------------------------------------------------------------------- /levels/scenes/thanks_for_playing.lev: -------------------------------------------------------------------------------- 1 | // 2 | // Thanks for Playing 3 | // 4 | 5 | name "Thanks for Playing" 6 | author "Alexandre Martins" 7 | license "CC BY 4.0" 8 | version "1.0" 9 | requires "0.6.1" 10 | act 1 11 | theme "themes/none.brk" 12 | bgtheme "themes/scenes/thanks_for_playing.bg" 13 | spawn_point 0 0 14 | setup "Thanks for Playing" 15 | players "None" 16 | readonly -------------------------------------------------------------------------------- /levels/scenes/title_screen.lev: -------------------------------------------------------------------------------- 1 | // 2 | // Title screen 3 | // 4 | 5 | name "Title Screen" 6 | author "Alexandre Martins" 7 | license "CC BY 4.0" 8 | version "1.0" 9 | requires "0.6.0" 10 | act 1 11 | theme "themes/none.brk" 12 | bgtheme "themes/waterworks-zone-outdoors.bg" 13 | spawn_point 1600 9500 14 | setup "Title Screen" 15 | players "None" 16 | readonly -------------------------------------------------------------------------------- /levels/surgescript.lev: -------------------------------------------------------------------------------- 1 | // This is a blank template for 2 | // a SurgeScript Application 3 | 4 | // Copy this file. Next, you may change 5 | // one or more of the parameters below: 6 | name "SurgeScript Demo App" 7 | author "YOUR NAME HERE" 8 | license "CC-BY 3.0" 9 | version "1.0" 10 | requires "0.5.1" 11 | act 1 12 | theme "themes/none.brk" 13 | bgtheme "themes/template.bg" 14 | //music "musics/template.ogg" 15 | spawn_point 0 0 16 | players "None" 17 | 18 | // Setup objects are spawned the moment 19 | // the level is loaded. List them below: 20 | setup "SurgeScript Demo App" 21 | 22 | // When copying this file, you may remove 23 | // the line below to access the level editor 24 | readonly -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/logo.png -------------------------------------------------------------------------------- /musics/allegro.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/allegro.ogg -------------------------------------------------------------------------------- /musics/boss.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/boss.ogg -------------------------------------------------------------------------------- /musics/citychill.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/citychill.ogg -------------------------------------------------------------------------------- /musics/creativecommons.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/creativecommons.ogg -------------------------------------------------------------------------------- /musics/drowning.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/drowning.ogg -------------------------------------------------------------------------------- /musics/gameover.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/gameover.ogg -------------------------------------------------------------------------------- /musics/gimacian.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/gimacian.ogg -------------------------------------------------------------------------------- /musics/intro.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/intro.ogg -------------------------------------------------------------------------------- /musics/invincible.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/invincible.ogg -------------------------------------------------------------------------------- /musics/menu.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/menu.ogg -------------------------------------------------------------------------------- /musics/options.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/options.ogg -------------------------------------------------------------------------------- /musics/sharp.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/sharp.ogg -------------------------------------------------------------------------------- /musics/silence.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/silence.ogg -------------------------------------------------------------------------------- /musics/speed.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/speed.ogg -------------------------------------------------------------------------------- /musics/sunshine.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/sunshine.ogg -------------------------------------------------------------------------------- /musics/template.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/template.ogg -------------------------------------------------------------------------------- /musics/theme.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/theme.ogg -------------------------------------------------------------------------------- /musics/title.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/title.ogg -------------------------------------------------------------------------------- /musics/waterworks.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/waterworks.ogg -------------------------------------------------------------------------------- /musics/winning.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/winning.ogg -------------------------------------------------------------------------------- /musics/winning_plus.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/winning_plus.ogg -------------------------------------------------------------------------------- /musics/winning_plusplus.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/musics/winning_plusplus.ogg -------------------------------------------------------------------------------- /quests/classic.qst: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: classic.qst 3 | // Description: the classic quest that was played in Open Surge 0.5.x 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // quest name 9 | name "Classic quest" 10 | 11 | // level list (in order of appearance) 12 | level "levels/sunshine-1.lev" 13 | level "levels/sunshine-2.lev" 14 | level "levels/sunshine-3.lev" 15 | 16 | level "levels/scenes/rate_game.lev" 17 | 18 | level "levels/waterworks-1.lev" 19 | level "levels/waterworks-2.lev" 20 | level "levels/waterworks-3.lev" 21 | 22 | level "levels/scenes/rate_game.lev" -------------------------------------------------------------------------------- /quests/create.qst: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: create.qst 3 | // Description: a quest for the Create option at the Main Menu 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // quest data 9 | name "Create quest" 10 | 11 | // level list 12 | quest "quests/demo.qst" 13 | level "levels/scenes/thanks_for_playing.lev" 14 | -------------------------------------------------------------------------------- /quests/default.qst: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: default.qst 3 | // Description: default quest 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // quest name 9 | name "Default quest" 10 | 11 | // level list (in order of appearance) 12 | quest "quests/surge.qst" 13 | level "levels/scenes/play_classic_levels.lev" 14 | level "levels/scenes/thanks_for_playing.lev" -------------------------------------------------------------------------------- /quests/demo.qst: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: demo.qst 3 | // Description: a quest that plays the Demo Levels 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // quest name 9 | name "Demo levels" 10 | 11 | // level list 12 | level "levels/demo-1.lev" 13 | level "levels/demo-2.lev" -------------------------------------------------------------------------------- /quests/intro.qst: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: intro.qst 3 | // Description: this is the Introduction quest, the first one to be executed 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // if you want to hack the game and change the screens that are loaded 9 | // when the engine is run, you may change the fields below 10 | 11 | // quest metadata 12 | name "Introduction" 13 | 14 | // level list (in order of appearance) 15 | level "levels/scenes/allegro_splash.lev" 16 | level "levels/scenes/title_screen.lev" 17 | level "levels/scenes/thanks_for_playing.lev" 18 | -------------------------------------------------------------------------------- /quests/options.qst: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: options.qst 3 | // Description: this quest loads the built-in options screen of the engine 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // modders: you don't need to modify this file. 9 | 10 | // quest properties 11 | name "Options screen" 12 | 13 | // level list 14 | 15 | -------------------------------------------------------------------------------- /quests/stage_select.qst: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: stage_select.qst 3 | // Description: this quest loads the built-in stage select of the engine 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // modders: you don't need to modify this file. 9 | 10 | // quest properties 11 | name "Stage Select" 12 | 13 | // level list 14 | 15 | -------------------------------------------------------------------------------- /quests/surge.qst: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: surge.qst 3 | // Description: Surge the Rabbit levels 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // quest name 9 | name "Surge the Rabbit" 10 | 11 | // level list (in order of appearance) 12 | level "levels/waterworks-zone-1.lev" 13 | level "levels/waterworks-zone-2.lev" 14 | level "levels/waterworks-zone-3.lev" 15 | 16 | level "levels/scenes/rate_game.lev" 17 | 18 | level "levels/scenes/end_of_demo.lev" 19 | quest "quests/demo.qst" -------------------------------------------------------------------------------- /samples/1up.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/1up.ogg -------------------------------------------------------------------------------- /samples/acidshield.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/acidshield.wav -------------------------------------------------------------------------------- /samples/bigring.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/bigring.wav -------------------------------------------------------------------------------- /samples/bosshit.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/bosshit.wav -------------------------------------------------------------------------------- /samples/brake.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/brake.wav -------------------------------------------------------------------------------- /samples/break.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/break.wav -------------------------------------------------------------------------------- /samples/bubbleget.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/bubbleget.wav -------------------------------------------------------------------------------- /samples/bumper.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/bumper.wav -------------------------------------------------------------------------------- /samples/cannon.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/cannon.ogg -------------------------------------------------------------------------------- /samples/cash.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/cash.wav -------------------------------------------------------------------------------- /samples/charge.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/charge.wav -------------------------------------------------------------------------------- /samples/charging_up.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/charging_up.wav -------------------------------------------------------------------------------- /samples/checkpoint.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/checkpoint.wav -------------------------------------------------------------------------------- /samples/choose.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/choose.wav -------------------------------------------------------------------------------- /samples/collectible.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/collectible.wav -------------------------------------------------------------------------------- /samples/collectible_count.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/collectible_count.wav -------------------------------------------------------------------------------- /samples/collectible_loss.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/collectible_loss.wav -------------------------------------------------------------------------------- /samples/crococopter.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/crococopter.wav -------------------------------------------------------------------------------- /samples/crococopter_swoop_down.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/crococopter_swoop_down.wav -------------------------------------------------------------------------------- /samples/crococopter_swoop_up.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/crococopter_swoop_up.wav -------------------------------------------------------------------------------- /samples/damaged.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/damaged.wav -------------------------------------------------------------------------------- /samples/death.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/death.wav -------------------------------------------------------------------------------- /samples/deny.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/deny.wav -------------------------------------------------------------------------------- /samples/destroy.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/destroy.wav -------------------------------------------------------------------------------- /samples/discharge.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/discharge.wav -------------------------------------------------------------------------------- /samples/door1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/door1.wav -------------------------------------------------------------------------------- /samples/door2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/door2.wav -------------------------------------------------------------------------------- /samples/drown.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/drown.wav -------------------------------------------------------------------------------- /samples/electric_bulb.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/electric_bulb.wav -------------------------------------------------------------------------------- /samples/endsign.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/endsign.wav -------------------------------------------------------------------------------- /samples/fireshield.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/fireshield.wav -------------------------------------------------------------------------------- /samples/fish.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/fish.wav -------------------------------------------------------------------------------- /samples/floorhit.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/floorhit.wav -------------------------------------------------------------------------------- /samples/glasses.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/glasses.wav -------------------------------------------------------------------------------- /samples/growlmod.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/growlmod.wav -------------------------------------------------------------------------------- /samples/help.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/help.wav -------------------------------------------------------------------------------- /samples/impact.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/impact.wav -------------------------------------------------------------------------------- /samples/jetpack.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/jetpack.wav -------------------------------------------------------------------------------- /samples/jetpack2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/jetpack2.wav -------------------------------------------------------------------------------- /samples/jump.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/jump.wav -------------------------------------------------------------------------------- /samples/lightning_boom.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/lightning_boom.wav -------------------------------------------------------------------------------- /samples/lightning_smash.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/lightning_smash.wav -------------------------------------------------------------------------------- /samples/pause_appear.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/pause_appear.wav -------------------------------------------------------------------------------- /samples/pause_cancel.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/pause_cancel.wav -------------------------------------------------------------------------------- /samples/pause_confirm.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/pause_confirm.wav -------------------------------------------------------------------------------- /samples/pause_highlight.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/pause_highlight.wav -------------------------------------------------------------------------------- /samples/pipe_in.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/pipe_in.wav -------------------------------------------------------------------------------- /samples/pipe_out.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/pipe_out.wav -------------------------------------------------------------------------------- /samples/power_pluggy_enter.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/power_pluggy_enter.wav -------------------------------------------------------------------------------- /samples/power_pluggy_exit.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/power_pluggy_exit.wav -------------------------------------------------------------------------------- /samples/powerup.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/powerup.wav -------------------------------------------------------------------------------- /samples/release.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/release.wav -------------------------------------------------------------------------------- /samples/return.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/return.wav -------------------------------------------------------------------------------- /samples/roar.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/roar.ogg -------------------------------------------------------------------------------- /samples/roll.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/roll.wav -------------------------------------------------------------------------------- /samples/salamander_ascent.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/salamander_ascent.ogg -------------------------------------------------------------------------------- /samples/salamander_boom.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/salamander_boom.ogg -------------------------------------------------------------------------------- /samples/salamander_charge.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/salamander_charge.ogg -------------------------------------------------------------------------------- /samples/secret.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/secret.wav -------------------------------------------------------------------------------- /samples/select.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/select.wav -------------------------------------------------------------------------------- /samples/select_2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/select_2.wav -------------------------------------------------------------------------------- /samples/shield.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/shield.wav -------------------------------------------------------------------------------- /samples/shot.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/shot.wav -------------------------------------------------------------------------------- /samples/skaterbug.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/skaterbug.wav -------------------------------------------------------------------------------- /samples/slide.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/slide.wav -------------------------------------------------------------------------------- /samples/spikes.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/spikes.wav -------------------------------------------------------------------------------- /samples/spikes_appearing.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/spikes_appearing.wav -------------------------------------------------------------------------------- /samples/spikes_disappearing.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/spikes_disappearing.wav -------------------------------------------------------------------------------- /samples/spring.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/spring.wav -------------------------------------------------------------------------------- /samples/springfling.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/springfling.wav -------------------------------------------------------------------------------- /samples/switch.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/switch.wav -------------------------------------------------------------------------------- /samples/talk.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/talk.wav -------------------------------------------------------------------------------- /samples/teleport_appear.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/teleport_appear.wav -------------------------------------------------------------------------------- /samples/teleport_disappear.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/teleport_disappear.wav -------------------------------------------------------------------------------- /samples/teleporter.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/teleporter.wav -------------------------------------------------------------------------------- /samples/teleporter_backwards.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/teleporter_backwards.wav -------------------------------------------------------------------------------- /samples/thundershield.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/thundershield.wav -------------------------------------------------------------------------------- /samples/trash_empty.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/trash_empty.wav -------------------------------------------------------------------------------- /samples/trotada.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/trotada.wav -------------------------------------------------------------------------------- /samples/tube.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/tube.wav -------------------------------------------------------------------------------- /samples/underwater_tick.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/underwater_tick.wav -------------------------------------------------------------------------------- /samples/vibrate.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/vibrate.wav -------------------------------------------------------------------------------- /samples/walk_on_water.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/walk_on_water.wav -------------------------------------------------------------------------------- /samples/water_in.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/water_in.wav -------------------------------------------------------------------------------- /samples/water_out.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/water_out.wav -------------------------------------------------------------------------------- /samples/waterfall.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/waterfall.wav -------------------------------------------------------------------------------- /samples/waterlevel.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/waterlevel.wav -------------------------------------------------------------------------------- /samples/watershield.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/watershield.wav -------------------------------------------------------------------------------- /samples/windshield.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/windshield.wav -------------------------------------------------------------------------------- /samples/zipline.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/zipline.wav -------------------------------------------------------------------------------- /samples/zipline2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/samples/zipline2.wav -------------------------------------------------------------------------------- /screenshots/screenshots.txt: -------------------------------------------------------------------------------- 1 | Screenshots are placed here. -------------------------------------------------------------------------------- /scripts/core/surge_gameplay.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: surge_gameplay.ss 3 | // Description: a setup object that enables basic mechanics of the game 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | object "Surge Gameplay" is "setup" 10 | { 11 | // handles character switching 12 | switchController = spawn("Switch Controller"); 13 | 14 | // handles water-related stuff 15 | waterController = spawn("Water Controller"); 16 | 17 | // handles the little animals that appear in the levels 18 | animalManager = Level.spawn("Animals"); 19 | 20 | // give an extra life every time the player picks up 100 collectibles 21 | collectiblesListener = spawn("Collectibles Listener").triggers("Give Extra Life").every(100); 22 | } -------------------------------------------------------------------------------- /scripts/debug_mode/plugins/exit.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: exit.ss 3 | // Description: exit plugin (Debug Mode) 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | /* 9 | 10 | This plugin lets the user exit the Debug Mode. 11 | 12 | */ 13 | 14 | object "Debug Mode - Exit" is "debug-mode-plugin" 15 | { 16 | input = spawn("Debug Mode - Input"); 17 | debugMode = null; 18 | 19 | state "main" 20 | { 21 | // return to the game if the back button is pressed 22 | if(input.buttonPressed("back")) 23 | debugMode.exit(); 24 | } 25 | 26 | fun onLoad(debugModeObject) 27 | { 28 | debugMode = debugModeObject; 29 | } 30 | 31 | fun onUnload(debugModeObject) 32 | { 33 | } 34 | } -------------------------------------------------------------------------------- /scripts/debug_mode/plugins/time_stopper.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: time_stopper.ss 3 | // Description: time stopper plugin (Debug Mode) 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | /* 9 | 10 | This plugin stops time while the Debug Mode is activated. 11 | 12 | */ 13 | 14 | using SurgeEngine.Level; 15 | 16 | object "Debug Mode - Time Stopper" is "debug-mode-plugin" 17 | { 18 | frozenTime = 0; 19 | 20 | state "main" 21 | { 22 | Level.time = 0; 23 | } 24 | 25 | fun onLoad(debugMode) 26 | { 27 | frozenTime = Level.time; 28 | } 29 | 30 | fun onUnload(debugMode) 31 | { 32 | Level.time = frozenTime; 33 | } 34 | } -------------------------------------------------------------------------------- /scripts/debug_mode/plugins/ui_settings.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: ui_settings.ss 3 | // Description: UI Settings plugin (Debug Mode) 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | /* 9 | 10 | This plugin has UI settings that are useful to other plugins. 11 | 12 | */ 13 | 14 | object "Debug Mode - UI Settings" is "debug-mode-plugin" 15 | { 16 | public readonly zindex = 10000; 17 | } -------------------------------------------------------------------------------- /scripts/debug_mode/plugins/video_changer.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: video_changer.ss 3 | // Description: video changer plugin (Debug Mode) 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | /* 9 | 10 | This plugin changes the video mode of the engine in Desktop computers. 11 | 12 | */ 13 | 14 | using SurgeEngine; 15 | using SurgeEngine.Video; 16 | 17 | object "Debug Mode - Video Changer" is "debug-mode-plugin" 18 | { 19 | previousVideoMode = ""; 20 | 21 | fun onLoad(debugMode) 22 | { 23 | if(SurgeEngine.mobile) 24 | return; 25 | 26 | previousVideoMode = Video.mode; 27 | Video.mode = "fill"; 28 | } 29 | 30 | fun onUnload(debugMode) 31 | { 32 | if(SurgeEngine.mobile) 33 | return; 34 | 35 | Video.mode = previousVideoMode; 36 | } 37 | } -------------------------------------------------------------------------------- /scripts/enemies/marmot.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: marmot.ss 3 | // Description: Chain Marmot enemy script 4 | // Author: Cody Licorish 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Actor; 8 | using SurgeEngine.Behaviors.Enemy; 9 | using SurgeEngine.Behaviors.Platformer; 10 | 11 | // Green Marmot is a baddie that simply walks around 12 | object "GreenMarmot" is "entity", "enemy" 13 | { 14 | actor = Actor("GreenMarmot"); 15 | enemy = Enemy(); 16 | platformer = Platformer().walk(); 17 | 18 | state "main" 19 | { 20 | platformer.speed = 60; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /scripts/enemies/mosquito.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: mosquito.ss 3 | // Description: Mosquito enemy script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Actor; 8 | using SurgeEngine.Vector2; 9 | using SurgeEngine.Behaviors.Enemy; 10 | using SurgeEngine.Behaviors.DirectionalMovement; 11 | 12 | // Mosquito is a flying baddie 13 | object "Mosquito" is "entity", "enemy" 14 | { 15 | public anim = 0; 16 | 17 | actor = Actor("Mosquito"); 18 | enemy = Enemy(); 19 | movement = DirectionalMovement(); 20 | 21 | state "main" 22 | { 23 | actor.anim = anim; 24 | actor.hflip = true; 25 | movement.direction = Vector2.left; 26 | movement.speed = 60; 27 | } 28 | } -------------------------------------------------------------------------------- /scripts/functions/audio/play_boss_music.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: play_boss_music.ss 3 | // Description: a function object that plays the Boss Music 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Play Boss Music is a function object that 11 | // plays the Boss Music. 12 | // 13 | object "Play Boss Music" 14 | { 15 | music = Level.child("Boss Music") || Level.spawn("Boss Music"); 16 | 17 | fun call() 18 | { 19 | if(!music.playing) 20 | music.play(); 21 | } 22 | } -------------------------------------------------------------------------------- /scripts/functions/audio/play_level_music.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: play_level_music.ss 3 | // Description: a function object that plays the Level Music 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Play Level Music is a function object that 11 | // plays the Level Music. 12 | // 13 | object "Play Level Music" 14 | { 15 | fun call() 16 | { 17 | if(!Level.music.playing) 18 | Level.music.play(); 19 | } 20 | } -------------------------------------------------------------------------------- /scripts/functions/audio/play_sound.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: play_sound.ss 3 | // Description: a function object that plays a sound 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Audio.Sound; 8 | 9 | // 10 | // Play Sound is a function object that plays a sound. 11 | // 12 | // Arguments: 13 | // - path: string. The path of the sound file to be played 14 | // (e.g., "samples/collectible.wav") 15 | // 16 | object "Play Sound" 17 | { 18 | fun call(path) 19 | { 20 | sfx = Sound(path); 21 | sfx.play(); 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/functions/audio/stop_boss_music.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: stop_boss_music.ss 3 | // Description: a function object that stops the Boss Music 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Stop Boss Music is a function object that 11 | // stops the Boss Music. 12 | // 13 | object "Stop Boss Music" 14 | { 15 | music = Level.child("Boss Music") || Level.spawn("Boss Music"); 16 | 17 | fun call() 18 | { 19 | if(music.playing) 20 | music.stop(); 21 | } 22 | } -------------------------------------------------------------------------------- /scripts/functions/camera/unlock_camera.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: unlock_camera.ss 3 | // Description: a function object that unlocks the camera 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Unlock Camera is a function object that 11 | // unlocks the camera if previously locked 12 | // 13 | object "Unlock Camera" 14 | { 15 | fun call() 16 | { 17 | camlock = Level.child("Camera Locker") || Level.spawn("Camera Locker"); 18 | camlock.unlock(); 19 | } 20 | } -------------------------------------------------------------------------------- /scripts/functions/effects/fade_in.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: fade_in.ss 3 | // Description: a function object that performs a fade-in effect 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Fade In is a function object that performs a 11 | // fade-in effect. 12 | // 13 | // Arguments: 14 | // - duration: number. The duration of the effect, 15 | // in seconds (example: 0.5) 16 | // 17 | object "Fade In" 18 | { 19 | fader = null; 20 | 21 | fun call(duration) 22 | { 23 | if(duration > 0) { 24 | fader = fader || Level.spawn("Fader"); 25 | fader.fadeTime = duration; 26 | fader.fadeIn(); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /scripts/functions/effects/fade_out.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: fade_out.ss 3 | // Description: a function object that performs a fade-out effect 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Fade Out is a function object that performs a 11 | // fade-out effect. 12 | // 13 | // Arguments: 14 | // - duration: number. The duration of the effect, 15 | // in seconds (example: 0.5) 16 | // 17 | object "Fade Out" 18 | { 19 | fader = null; 20 | 21 | fun call(duration) 22 | { 23 | if(duration > 0) { 24 | fader = fader || Level.spawn("Fader"); 25 | fader.fadeTime = duration; 26 | fader.fadeOut(); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /scripts/functions/level/change_background.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: change_background.ss 3 | // Description: a function object that changes the background 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Change Background is a function object that changes the background. 11 | // 12 | // Arguments: 13 | // - path: string. The path of the .bg file to be displayed 14 | // (e.g., "themes/waterworks-zone-indoors.bg") 15 | // 16 | object "Change Background" 17 | { 18 | fun call(path) 19 | { 20 | Level.background = path; 21 | } 22 | } -------------------------------------------------------------------------------- /scripts/functions/level/clear_level.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: clear_level.ss 3 | // Description: a function object that clears the level 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Clear Level is a function object that clears 11 | // the current level. 12 | // 13 | object "Clear Level" 14 | { 15 | fun call() 16 | { 17 | Level.clear(); 18 | } 19 | } -------------------------------------------------------------------------------- /scripts/functions/level/load_level.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: level_level.ss 3 | // Description: a function object that loads a level 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Load Level is a function object that loads 11 | // a specific level. 12 | // 13 | // Arguments: 14 | // - path: string. The path of the .lev file to be loaded 15 | // (e.g., "levels/sunshine-1.lev") 16 | // 17 | object "Load Level" 18 | { 19 | fun call(path) 20 | { 21 | Level.load(path); 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/functions/level/spawn_entity.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: spawn_entity.ss 3 | // Description: a function object that spawns an entity 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Spawn Entity is a function object that spawns an entity 11 | // at a certain position (coordinates given in world space) 12 | // 13 | // Arguments: 14 | // - entityName: string. The name of the entity to be spawned. 15 | // - position: Vector2 object. A point given in world coordinates. 16 | // 17 | object "Spawn Entity" 18 | { 19 | fun call(entityName, position) 20 | { 21 | Level.spawnEntity(entityName, position); 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/functions/level/undo_clear_level.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: undo_clear_level.ss 3 | // Description: a function object that disables the cleared state of the level 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Undo Clear Level is a function object that disables the cleared state of the 11 | // level 12 | // 13 | object "Undo Clear Level" 14 | { 15 | fun call() 16 | { 17 | Level.undoClear(); 18 | } 19 | } -------------------------------------------------------------------------------- /scripts/functions/misc/launch_url.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: launch_url.ss 3 | // Description: a function object that launches a URL 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Web; 8 | 9 | // 10 | // Launch URL is a function object that launches a URL 11 | // 12 | // Arguments: 13 | // - url: string. The URL to be launched. Make sure to include 14 | // the protocol (http://, https://, mailto:) 15 | // e.g., "http://opensurge2d.org" 16 | // 17 | object "Launch URL" 18 | { 19 | fun call(url) 20 | { 21 | Web.launchURL(url); 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/functions/misc/print.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: print.ss 3 | // Description: a function object that prints a message 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // 9 | // Print is a function object that prints a message 10 | // 11 | // Arguments: 12 | // - message: string. The message to be printed. 13 | // 14 | object "Print" 15 | { 16 | fun call(message) 17 | { 18 | Console.print(message); 19 | } 20 | } -------------------------------------------------------------------------------- /scripts/functions/player/add_to_score.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: add_to_score.ss 3 | // Description: a function object that adds a value to the score of the player 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | using SurgeEngine.Level; 9 | 10 | // 11 | // Add to Score is a function object that adds a value 12 | // to the score of the player. 13 | // 14 | // Arguments: 15 | // - value: number. A positive or negative integer. 16 | // 17 | object "Add to Score" 18 | { 19 | fun call(value) 20 | { 21 | player = Player.active; 22 | score = Math.floor(value); 23 | if(score != 0) { 24 | player.score += score; 25 | Level.spawnEntity("Score Text", player.collider.center).setText(score); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /scripts/functions/player/disable_character_switching.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: disable_character_switching.ss 3 | // Description: a function object that disables character switching 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Disable Character Switching is a function object that 11 | // disables character switching 12 | // 13 | object "Disable Character Switching" 14 | { 15 | fun call() 16 | { 17 | switchController = Level.findObject("Switch Controller"); 18 | if(switchController != null) 19 | switchController.enabled = false; 20 | else 21 | Console.print("Can't disable character switching: missing Switch Controller"); 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/functions/player/disable_controls.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: disable_controls.ss 3 | // Description: a function object that disables input controls 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | // 10 | // Disable Controls is a function object that 11 | // disables the input controls of the active player 12 | // 13 | object "Disable Controls" 14 | { 15 | fun call() 16 | { 17 | Player.active.input.enabled = false; 18 | } 19 | } -------------------------------------------------------------------------------- /scripts/functions/player/enable_character_switching.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: enable_character_switching.ss 3 | // Description: a function object that enables character switching 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | 9 | // 10 | // Enable Character Switching is a function object that 11 | // enables character switching 12 | // 13 | object "Enable Character Switching" 14 | { 15 | fun call() 16 | { 17 | switchController = Level.findObject("Switch Controller"); 18 | if(switchController != null) 19 | switchController.enabled = true; 20 | else 21 | Console.print("Can't enable character switching: missing Switch Controller"); 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/functions/player/enable_controls.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: enable_controls.ss 3 | // Description: a function object that enables input controls 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | // 10 | // Enable Controls is a function object that 11 | // enables the input controls of the active player 12 | // 13 | object "Enable Controls" 14 | { 15 | fun call() 16 | { 17 | Player.active.input.enabled = true; 18 | } 19 | } -------------------------------------------------------------------------------- /scripts/functions/player/freeze_player.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: freeze_player.ss 3 | // Description: a function object that freezes the player 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | // 10 | // Freeze Player is a function object that 11 | // freezes the active player (disables physics) 12 | // 13 | object "Freeze Player" 14 | { 15 | fun call() 16 | { 17 | Player.active.frozen = true; 18 | } 19 | } -------------------------------------------------------------------------------- /scripts/functions/player/give_extra_life.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: give_extra_life.ss 3 | // Description: a function object that gives the player an extra life 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | using SurgeEngine.Audio.Sound; 9 | 10 | // 11 | // Give Extra Life is a function object that gives 12 | // the player a single extra life. 13 | // 14 | object "Give Extra Life" 15 | { 16 | functor = spawn("Give Extra Lives"); 17 | 18 | fun call() 19 | { 20 | functor.call(1); 21 | } 22 | } -------------------------------------------------------------------------------- /scripts/functions/player/hit_player.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: hit_player.ss 3 | // Description: a function object that hits the player 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | // 10 | // Hit Player is a function object that hits 11 | // the active player. 12 | // 13 | object "Hit Player" 14 | { 15 | fun call() 16 | { 17 | Player.active.hit(); 18 | } 19 | } -------------------------------------------------------------------------------- /scripts/functions/player/kill_player.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: kill_player.ss 3 | // Description: a function object that kills the player 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | // 10 | // Kill Player is a function object that kills 11 | // the active player. 12 | // 13 | object "Kill Player" 14 | { 15 | fun call() 16 | { 17 | Player.active.kill(); 18 | } 19 | } -------------------------------------------------------------------------------- /scripts/functions/player/switch_character.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: switch_character.ss 3 | // Description: a function object that switches the character 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | // 10 | // Switch Character is a function object that switches 11 | // the character (i.e., changes the active player) 12 | // 13 | // Arguments: 14 | // - playerName: string. The name of a character. 15 | // 16 | object "Switch Character" 17 | { 18 | fun call(playerName) 19 | { 20 | player = Player(playerName); 21 | if(player != null) 22 | player.focus(); 23 | } 24 | } -------------------------------------------------------------------------------- /scripts/functions/player/translate_player.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: translate_player.ss 3 | // Description: a function object that translates the active player 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | // 10 | // Translate Player is a function object that translates the active player 11 | // by a given offset. 12 | // 13 | // Arguments: 14 | // - offset: Vector2. 15 | // 16 | object "Translate Player" 17 | { 18 | fun call(offset) 19 | { 20 | player = Player.active; 21 | player.transform.translate(offset); 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/functions/player/unfreeze_player.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: unfreeze_player.ss 3 | // Description: a function object that unfreezes the player 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | // 10 | // Unfreeze Player is a function object that 11 | // unfreezes the active player (enables physics) 12 | // 13 | object "Unfreeze Player" 14 | { 15 | fun call() 16 | { 17 | Player.active.frozen = false; 18 | } 19 | } -------------------------------------------------------------------------------- /scripts/functions/ui/hide_mobile_gamepad.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: hide_mobile_gamepad.ss 3 | // Description: a function object that hides the Mobile Gamepad 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Input.MobileGamepad; 8 | 9 | // 10 | // Hide Mobile Gamepad is a function object that hides the Mobile Gamepad 11 | // 12 | object "Hide Mobile Gamepad" 13 | { 14 | fun call() 15 | { 16 | MobileGamepad.fadeOut(); 17 | } 18 | } -------------------------------------------------------------------------------- /scripts/functions/ui/show_message.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: show_message.ss 3 | // Description: a function object that displays a Message Box 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | using SurgeEngine.Vector2; 9 | 10 | // 11 | // Show Message is a function object that displays a Message Box 12 | // 13 | // Arguments: 14 | // - text: string. The message to be displayed. 15 | // 16 | object "Show Message" 17 | { 18 | fun call(message) 19 | { 20 | mb = Level.spawnEntity("Message Box", Vector2.zero); 21 | mb.text = message; 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/functions/ui/show_mobile_gamepad.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: show_mobile_gamepad.ss 3 | // Description: a function object that shows the Mobile Gamepad 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Input.MobileGamepad; 8 | 9 | // 10 | // Show Mobile Gamepad is a function object that shows the Mobile Gamepad 11 | // 12 | object "Show Mobile Gamepad" 13 | { 14 | fun call() 15 | { 16 | MobileGamepad.fadeIn(); 17 | } 18 | } -------------------------------------------------------------------------------- /scripts/legacy/player/none.obj: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // Open Surge Engine 3 | // http://opensurge2d.org 4 | // 5 | // File: default_companions/none.inc 6 | // Desc: None's companion 7 | // Author: Alexandre 8 | // Date: 2011-02-09 9 | // --------------------------------------------------------------------------- 10 | 11 | object ".none_companion" 12 | { 13 | requires 0.2.0 14 | always_active 15 | 16 | state "main" 17 | { 18 | hide 19 | disable_player_movement 20 | change_state "wait" 21 | } 22 | 23 | state "wait" 24 | { 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /scripts/legacy/player/readme.txt: -------------------------------------------------------------------------------- 1 | The scripts in this folder are the "player companions": they enhance the abilities of the characters. 2 | -------------------------------------------------------------------------------- /scripts/legacy/readme.txt: -------------------------------------------------------------------------------- 1 | This is the legacy folder for scripts. Scripts placed here use the old scripting system (.obj files). SurgeScript files (.ss) should NOT be placed here. -------------------------------------------------------------------------------- /scripts/legacy/startup/pause.obj: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // Open Surge Engine 3 | // http://opensurge2d.org 4 | // 5 | // File: objects/default_startup/pause.obj 6 | // Desc: enables the player to pause the game 7 | // Author: Alexandre 8 | // Date: 2010-12-22 9 | // --------------------------------------------------------------------------- 10 | 11 | object ".default_startup.pause" 12 | { 13 | requires 0.2.0 14 | always_active 15 | 16 | state "main" 17 | { 18 | hide 19 | on_button_pressed "fire3" "paused" 20 | } 21 | 22 | state "paused" 23 | { 24 | pause 25 | change_state "main" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /scripts/legacy/startup/quit.obj: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // Open Surge Engine 3 | // http://opensurge2d.org 4 | // 5 | // File: objects/default_startup/quit.obj 6 | // Desc: enables the player to leave the level 7 | // Author: Alexandre 8 | // Date: 2010-12-22 9 | // --------------------------------------------------------------------------- 10 | 11 | object ".default_startup.quit" 12 | { 13 | requires 0.2.0 14 | always_active 15 | 16 | state "main" 17 | { 18 | hide 19 | on_button_pressed "fire4" "quit" 20 | } 21 | 22 | state "quit" 23 | { 24 | ask_to_leave 25 | change_state "main" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /scripts/legacy/startup/readme.txt: -------------------------------------------------------------------------------- 1 | The scripts in this directory take care of basic funcionalities like the HUD, the character switching, etc. 2 | -------------------------------------------------------------------------------- /scripts/players/lock_angle.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: lock_angle.ss 3 | // Description: locks the angle of the player, so it doesn't rotate on slopes 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // 9 | // Lock Angle is a companion object that locks the player angle 10 | // to zero, so it doesn't rotate on slopes. This is useful for 11 | // regular platformers. 12 | // 13 | object "Lock Angle" is "companion" 14 | { 15 | player = parent; 16 | 17 | fun lateUpdate() 18 | { 19 | player.angle = 0; 20 | } 21 | } -------------------------------------------------------------------------------- /scripts/players/none.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: none.ss 3 | // Description: companion object for playable character 'None' 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Player; 8 | 9 | object "None" is "companion" 10 | { 11 | player = parent; 12 | 13 | state "main" 14 | { 15 | // disable physics 16 | player.frozen = true; 17 | 18 | // make it non-focusable 19 | player.focusable = false; 20 | } 21 | } -------------------------------------------------------------------------------- /scripts/players/old_school_angle.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: old_school_angle.ss 3 | // Description: sets the angle of the player to a multiple of 45 degrees 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | object "Old School Angle" is "companion" 9 | { 10 | player = parent; 11 | 12 | fun lateUpdate() 13 | { 14 | if(player.rolling || player.dying) 15 | return; 16 | 17 | if(wantZero()) { 18 | player.angle = 0; 19 | return; 20 | } 21 | 22 | bin = Math.floor((player.slope + 22.5) / 45); 23 | player.angle = 45 * bin; 24 | } 25 | 26 | fun wantZero() 27 | { 28 | if(player.walking || player.running || player.braking || player.springing) 29 | return false; 30 | 31 | return player.slope < 45 || player.slope > 315; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /scripts/setup/scenes/splash.ss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: splash.ss 3 | // Description: a setup object for displaying a Splash Screen 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | using SurgeEngine.Level; 8 | using SurgeEngine.Player; 9 | 10 | object "Splash" 11 | { 12 | input = Player.active.input; 13 | fader = spawn("Fader"); 14 | waitTime = 2.0; 15 | 16 | state "main" { fader.fadeIn(); state = "fade in"; } 17 | state "fade in" { if(timeout(fader.fadeTime)) state = "wait"; } 18 | state "wait" { if(timeout(waitTime) || skip()) { fader.fadeOut(); state = "fade out"; } } 19 | state "fade out" { if(timeout(fader.fadeTime)) state = "done"; } 20 | state "done" { Level.loadNext(); } 21 | 22 | fun skip() { return input.buttonPressed("fire1") || input.buttonPressed("fire3") || input.buttonPressed("fire4"); } 23 | } -------------------------------------------------------------------------------- /sprites/core/camera.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: camera.spr 3 | // Description: sprite script of the default camera 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | sprite "Default Camera" 9 | { 10 | source_file "images/core.png" 11 | source_rect 128 0 32 32 12 | frame_size 32 32 13 | hot_spot 16 16 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } -------------------------------------------------------------------------------- /sprites/core/null.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: null.spr 3 | // Description: null sprite 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | sprite "null" 9 | { 10 | source_file "images/core.png" 11 | source_rect 96 0 32 32 12 | frame_size 32 32 13 | hot_spot 16 16 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } -------------------------------------------------------------------------------- /sprites/core/profiler.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: profiler.spr 3 | // Description: sprite script of the SurgeScript profiler 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Profiler" 9 | { 10 | source_file "images/core.png" 11 | source_rect 64 0 32 32 12 | frame_size 32 32 13 | hot_spot 16 16 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } -------------------------------------------------------------------------------- /sprites/debug_mode/mouse_cursor.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: mouse_cursor.spr 3 | // Description: sprite script of the mouse cursor (Debug Mode) 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | // art by qubodup (opengameart.org) 9 | sprite "Debug Mode - Mouse Cursor" 10 | { 11 | source_file "images/debug_mode/mouse_cursor.png" 12 | source_rect 0 0 16 16 13 | frame_size 16 16 14 | hot_spot 0 0 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 0 21 | } 22 | } -------------------------------------------------------------------------------- /sprites/enemies/crococopter.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: crococopter.spr 3 | // Description: Crococopter sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // art by squirrel 9 | sprite "Crococopter" 10 | { 11 | source_file "images/enemies/waterworks_zone.png" 12 | source_rect 0 368 256 48 13 | frame_size 32 48 14 | hot_spot 16 24 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 24 20 | data 0 1 2 3 4 5 6 7 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sprites/enemies/fish.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: fish.spr 3 | // Description: Fish sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // art by Alexandre 9 | sprite "Fish" 10 | { 11 | source_file "images/enemies/waterworks_zone.png" 12 | source_rect 16 448 96 32 13 | frame_size 48 32 14 | hot_spot 24 16 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 6 20 | data 0 1 21 | } 22 | } 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /sprites/enemies/jumping_fish.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: jumping_fish.spr 3 | // Description: Jumping Fish sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Jumping Fish" 9 | { 10 | source_file "images/jumping_fish.png" 11 | source_rect 0 16 160 144 12 | frame_size 32 48 13 | hot_spot 16 0 14 | 15 | // Blowfish (art by João Victor) 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 12 20 | data 0 1 21 | } 22 | 23 | // Fishburne (art by Alexandre) 24 | animation 1 25 | { 26 | repeat TRUE 27 | fps 12 28 | data 5 6 29 | } 30 | } 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sprites/enemies/marmot.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: marmot.spr 3 | // Description: Chain marmot sprite script 4 | // Author: Cody Licorish 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // art by Cody Licorish 9 | sprite "GreenMarmot" 10 | { 11 | source_file "images/enemies/waterworks_zone.png" 12 | source_rect 400 432 240 40 13 | frame_size 40 40 14 | hot_spot 20 40 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 14 20 | data 0 1 2 3 4 5 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /sprites/enemies/mosquito.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: mosquito.spr 3 | // Description: Mosquito sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // art by João Victor 9 | sprite "Mosquito" 10 | { 11 | source_file "images/mosquito.png" 12 | source_rect 0 16 180 64 13 | frame_size 36 32 14 | hot_spot 18 16 15 | 16 | // Standard Mosquito 17 | animation 0 18 | { 19 | repeat TRUE 20 | fps 12 21 | data 0 1 22 | } 23 | } 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /sprites/enemies/wolfey.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: wolfey.spr 3 | // Description: Wolfey sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // art by João Victor 9 | sprite "Wolfey" 10 | { 11 | source_file "images/wolfey.png" 12 | source_rect 0 0 255 33 13 | frame_size 51 33 14 | hot_spot 26 33 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 16 20 | data 0 1 2 3 4 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /sprites/items/audio_source.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: audio_source.spr 3 | // Description: audio source sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Audio Source" 9 | { 10 | source_file "images/core.png" 11 | source_rect 0 96 32 32 12 | frame_size 32 32 13 | hot_spot 16 16 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /sprites/items/bg_xchg.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: bg_xchg.spr 3 | // Description: background exchanger sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Background Exchanger" 9 | { 10 | source_file "images/core.png" 11 | source_rect 0 64 32 32 12 | frame_size 32 32 13 | hot_spot 16 16 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } 22 | 23 | sprite "Background Restorer" 24 | { 25 | source_file "images/core.png" 26 | source_rect 32 64 32 32 27 | frame_size 32 32 28 | hot_spot 16 16 29 | 30 | animation 0 31 | { 32 | repeat TRUE 33 | fps 8 34 | data 0 35 | } 36 | } -------------------------------------------------------------------------------- /sprites/items/bubbles.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: bubbles.spr 3 | // Description: sprite definition for water bubbles 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Water Bubbles" 9 | { 10 | source_file "images/water.png" 11 | source_rect 0 96 96 32 12 | frame_size 32 32 13 | hot_spot 16 32 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 1 2 20 | } 21 | } -------------------------------------------------------------------------------- /sprites/items/bumpers.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: bumpers.spr 3 | // Description: bumpers sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Bumper" 9 | { 10 | source_file "images/bumper.png" 11 | source_rect 10 60 40 80 12 | frame_size 40 40 13 | hot_spot 20 20 14 | 15 | // idle 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 1 21 | } 22 | 23 | // active! 24 | animation 1 25 | { 26 | repeat FALSE 27 | fps 8 28 | data 0 29 | } 30 | } -------------------------------------------------------------------------------- /sprites/items/checkpoint.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: checkpoint.spr 3 | // Description: checkpoint sprite 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Checkpoint" 9 | { 10 | source_file "images/items/checkpoint.png" 11 | source_rect 0 32 432 64 12 | frame_size 48 64 13 | hot_spot 24 64 14 | 15 | // inactive 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 0 21 | } 22 | 23 | // turning on 24 | animation 1 25 | { 26 | repeat FALSE 27 | fps 30 28 | data 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 29 | } 30 | 31 | // turned on 32 | animation 2 33 | { 34 | repeat TRUE 35 | fps 8 36 | data 8 37 | } 38 | } -------------------------------------------------------------------------------- /sprites/items/collectible.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: collectible.spr 3 | // Description: collectible sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Collectible" 9 | { 10 | source_file "images/collectibles.png" 11 | source_rect 0 0 304 16 12 | frame_size 16 16 13 | hot_spot 8 8 14 | 15 | // spinning 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 16 20 | data 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 21 | } 22 | 23 | // disappearing 24 | animation 1 25 | { 26 | repeat FALSE 27 | fps 8 28 | data 16 17 18 29 | } 30 | } -------------------------------------------------------------------------------- /sprites/items/conveyor_belt.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: conveyor_belt.spr 3 | // Description: conveyor belt sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Conveyor Belt A" 9 | { 10 | source_file "images/items/conveyor_belt.png" 11 | source_rect 0 0 32 32 12 | frame_size 32 32 13 | hot_spot 16 16 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } 22 | 23 | sprite "Conveyor Belt B" 24 | { 25 | source_file "images/items/conveyor_belt.png" 26 | source_rect 32 0 32 32 27 | frame_size 32 32 28 | hot_spot 16 16 29 | 30 | animation 0 31 | { 32 | repeat TRUE 33 | fps 8 34 | data 0 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /sprites/items/layers.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: layers.spr 3 | // Description: layer system sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Layer Green" 9 | { 10 | source_file "images/core.png" 11 | source_rect 0 0 32 32 12 | frame_size 32 32 13 | hot_spot 16 16 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } 22 | 23 | sprite "Layer Yellow" 24 | { 25 | source_file "images/core.png" 26 | source_rect 32 0 32 32 27 | frame_size 32 32 28 | hot_spot 16 16 29 | 30 | animation 0 31 | { 32 | repeat TRUE 33 | fps 8 34 | data 0 35 | } 36 | } -------------------------------------------------------------------------------- /sprites/items/salamander_wall.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: salamander_wall.spr 3 | // Description: Exploding wall sprite script for Salamander boss 4 | // Author: Cody Licorish 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // art by Cody Licorish 9 | sprite "Salamander Exploding Wall" 10 | { 11 | source_file "images/salamander_wall.png" 12 | source_rect 0 0 128 128 13 | frame_size 128 128 14 | hot_spot 0 0 15 | 16 | animation 0 17 | { 18 | repeat FALSE 19 | fps 1 20 | data 0 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sprites/items/tubes.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: tubes.spr 3 | // Description: object sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Tube In" 9 | { 10 | source_file "images/core.png" 11 | source_rect 64 64 32 32 12 | frame_size 32 32 13 | hot_spot 16 16 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } 22 | 23 | sprite "Tube Out" 24 | { 25 | source_file "images/core.png" 26 | source_rect 96 64 32 32 27 | frame_size 32 32 28 | hot_spot 16 16 29 | 30 | animation 0 31 | { 32 | repeat TRUE 33 | fps 8 34 | data 0 35 | } 36 | } -------------------------------------------------------------------------------- /sprites/legacy/cutscenes/allegro.spr: -------------------------------------------------------------------------------- 1 | // Allegro logo 2 | // script by Alexandre 3 | sprite "SD_ALLEGRO" 4 | { 5 | source_file "images/scenes/allegro_splash.png" 6 | source_rect 0 0 1704 2640 7 | frame_size 426 240 8 | hot_spot 213 120 9 | 10 | // appearing 11 | animation 0 12 | { 13 | repeat FALSE 14 | fps 30 15 | data 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 16 | } 17 | 18 | // logo 19 | animation 1 20 | { 21 | repeat TRUE 22 | fps 8 23 | data 43 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /sprites/legacy/cutscenes/creativecommons.spr: -------------------------------------------------------------------------------- 1 | // Creative Commons logo 2 | // script by Alexandre 3 | 4 | sprite SD_CREATIVECOMMONS 5 | { 6 | source_file images/creativecommons.png 7 | source_rect 0 0 198 75 8 | frame_size 198 75 9 | hot_spot 0 0 10 | 11 | animation 0 12 | { 13 | repeat TRUE 14 | fps 8 15 | data 0 16 | } 17 | } -------------------------------------------------------------------------------- /sprites/legacy/cutscenes/cutscene.spr: -------------------------------------------------------------------------------- 1 | // cutscene stuff (movie effect) 2 | // script by Alexandre 3 | 4 | // Cutscene top strip 5 | sprite SD_CUTSCENETOPSTRIP 6 | { 7 | source_file images/fade_effect.png 8 | source_rect 0 0 426 30 9 | frame_size 426 30 10 | hot_spot 0 0 11 | 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | } 19 | 20 | // Cutscene bottom strip 21 | sprite SD_CUTSCENEBOTTOMSTRIP 22 | { 23 | source_file images/fade_effect.png 24 | source_rect 0 0 426 30 25 | frame_size 426 30 26 | hot_spot 0 0 27 | 28 | animation 0 29 | { 30 | repeat TRUE 31 | fps 8 32 | data 0 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /sprites/legacy/fx/fade_effect.spr: -------------------------------------------------------------------------------- 1 | // Fade effect 2 | // by Alexandre 3 | 4 | sprite SD_FADEEFFECT 5 | { 6 | source_file "images/fade_effect.png" 7 | source_rect 0 0 426 480 8 | frame_size 426 240 9 | hot_spot 0 0 10 | 11 | // black 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | 19 | // white 20 | animation 1 21 | { 22 | repeat TRUE 23 | fps 8 24 | data 1 25 | } 26 | } -------------------------------------------------------------------------------- /sprites/legacy/fx/impact.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | // date: 2012-12-25 3 | 4 | sprite SD_IMPACT 5 | { 6 | source_file "images/impact.png" 7 | source_rect 0 0 80 96 8 | frame_size 80 32 9 | hot_spot 40 27 10 | 11 | animation 0 12 | { 13 | repeat FALSE 14 | fps 16 15 | data 0 1 2 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /sprites/legacy/fx/pixel.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // A single pixel 4 | sprite SD_PIXEL 5 | { 6 | source_file images/pixel.png 7 | source_rect 0 0 5 1 8 | frame_size 1 1 9 | hot_spot 0 0 10 | 11 | // black 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | 19 | // dark grey 20 | animation 1 21 | { 22 | repeat TRUE 23 | fps 8 24 | data 1 25 | } 26 | 27 | // grey 28 | animation 2 29 | { 30 | repeat TRUE 31 | fps 8 32 | data 2 33 | } 34 | 35 | // silver 36 | animation 3 37 | { 38 | repeat TRUE 39 | fps 8 40 | data 3 41 | } 42 | 43 | // white 44 | animation 4 45 | { 46 | repeat TRUE 47 | fps 8 48 | data 4 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /sprites/legacy/fx/stars.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // Invincibility stars 4 | sprite SD_INVSTAR 5 | { 6 | source_file images/stars.png 7 | source_rect 0 0 48 32 8 | frame_size 16 16 9 | hot_spot 8 8 10 | 11 | // default 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 1 2 3 4 5 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sprites/legacy/hud/arrow.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // GUI Arrow 4 | sprite SD_GUIARROW 5 | { 6 | source_file images/core.png 7 | source_rect 236 12 7 8 8 | frame_size 7 8 9 | hot_spot -5 -2 10 | 11 | // idle 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sprites/legacy/hud/editor.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // Arrow 4 | sprite SD_ARROW 5 | { 6 | source_file images/cursor.png 7 | source_rect 0 0 12 16 8 | frame_size 12 16 9 | hot_spot 0 0 10 | 11 | animation 0 12 | { 13 | repeat TRUE 14 | fps 8 15 | data 0 16 | } 17 | } 18 | 19 | // Eraser 20 | sprite SD_ERASER 21 | { 22 | source_file images/eraser.png 23 | source_rect 0 0 19 18 24 | frame_size 19 18 25 | hot_spot 9 9 26 | 27 | animation 0 28 | { 29 | repeat TRUE 30 | fps 8 31 | data 0 32 | } 33 | } 34 | 35 | // Question Mark 36 | sprite SD_QUESTIONMARK 37 | { 38 | source_file images/core.png 39 | source_rect 96 0 32 32 40 | frame_size 32 32 41 | hot_spot 16 16 42 | 43 | animation 0 44 | { 45 | repeat TRUE 46 | fps 8 47 | data 0 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /sprites/legacy/hud/levelact.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // Level Act 4 | sprite SD_LEVELACT 5 | { 6 | source_file images/acts.png 7 | source_rect 0 0 144 32 8 | frame_size 48 32 9 | hot_spot 0 0 10 | 11 | // act 1 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | 19 | // act 2 20 | animation 1 21 | { 22 | repeat TRUE 23 | fps 8 24 | data 1 25 | } 26 | 27 | // act 3 28 | animation 2 29 | { 30 | repeat TRUE 31 | fps 8 32 | data 2 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /sprites/legacy/hud/pause.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // Pause 4 | sprite SD_PAUSE 5 | { 6 | source_file images/pause.png 7 | source_rect 0 0 23 20 8 | frame_size 23 20 9 | hot_spot 0 0 10 | 11 | // default 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sprites/legacy/hud/title_screen.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | sprite SD_LOGO 3 | { 4 | source_file images/logo.png 5 | source_rect 0 0 256 75 6 | frame_size 256 75 7 | hot_spot 0 0 8 | 9 | // stopped 10 | animation 0 11 | { 12 | repeat TRUE 13 | fps 8 14 | data 0 15 | } 16 | } 17 | 18 | sprite SD_SURGEENTRANCE 19 | { 20 | source_file images/surge_entrance.png 21 | source_rect 0 0 414 276 22 | frame_size 138 138 23 | hot_spot 0 0 24 | 25 | // stopped 26 | animation 0 27 | { 28 | repeat TRUE 29 | fps 8 30 | data 0 31 | } 32 | 33 | // entrance 34 | animation 1 35 | { 36 | repeat FALSE 37 | fps 12 38 | data 0 1 2 3 4 5 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /sprites/legacy/items/barrel.spr: -------------------------------------------------------------------------------- 1 | // ShootBarrel 2 | // image by svgmovement, script by Alexandre 3 | sprite Barrel 4 | { 5 | source_file images/barrel.png 6 | source_rect 0 0 38 32 7 | frame_size 38 32 8 | hot_spot 19 16 9 | 10 | animation 0 11 | { 12 | repeat TRUE 13 | fps 8 14 | data 0 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /sprites/legacy/items/bigring.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // Big ring 4 | sprite SD_BIGRING 5 | { 6 | source_file images/rings.png 7 | source_rect 0 0 1024 128 8 | frame_size 128 128 9 | hot_spot 64 64 10 | 11 | // spinning 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 16 16 | data 0 1 2 3 4 5 6 7 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sprites/legacy/items/bumper.spr: -------------------------------------------------------------------------------- 1 | // script by Celdecea, modified by Alexandre 2 | 3 | // Bumper 4 | sprite SD_BUMPER 5 | { 6 | source_file images/bumper.png 7 | source_rect 10 60 40 80 8 | frame_size 40 40 9 | hot_spot 20 20 10 | 11 | // idle 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 1 17 | } 18 | 19 | // active 20 | animation 1 21 | { 22 | repeat FALSE 23 | fps 8 24 | data 0 1 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /sprites/legacy/items/checkpointorb.spr: -------------------------------------------------------------------------------- 1 | // script by Celdecea, modified by Alexandre 2 | 3 | // Checkpoint orb 4 | sprite SD_CHECKPOINT 5 | { 6 | source_file images/checkpoint_orb.png 7 | source_rect 0 80 259 65 8 | frame_size 37 65 9 | hot_spot 18 63 10 | 11 | // disabled 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | 19 | // activating... 20 | animation 1 21 | { 22 | repeat FALSE 23 | fps 24 24 | data 1 2 3 4 5 0 1 2 3 4 5 25 | } 26 | 27 | // active 28 | animation 2 29 | { 30 | repeat TRUE 31 | fps 8 32 | data 6 0 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /sprites/legacy/items/door.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // Door 4 | sprite SD_DOOR 5 | { 6 | source_file images/switches.png 7 | source_rect 0 0 24 64 8 | frame_size 24 64 9 | hot_spot 0 0 10 | 11 | // default 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sprites/legacy/items/explosion.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // Explosion 4 | sprite SD_EXPLOSION 5 | { 6 | source_file images/explosion.png 7 | source_rect 0 0 192 92 8 | frame_size 48 46 9 | hot_spot 24 23 10 | 11 | animation 0 12 | { 13 | repeat FALSE 14 | fps 16 15 | data 0 1 2 3 4 5 6 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /sprites/legacy/items/loop.spr: -------------------------------------------------------------------------------- 1 | // Loop objects 2 | // script by Alexandre 3 | 4 | sprite SD_LOOPGREEN 5 | { 6 | source_file "images/core.png" 7 | source_rect 0 0 32 32 8 | frame_size 32 32 9 | hot_spot 0 0 10 | 11 | animation 0 12 | { 13 | repeat TRUE 14 | fps 8 15 | data 0 16 | } 17 | } 18 | 19 | sprite SD_LOOPYELLOW 20 | { 21 | source_file "images/core.png" 22 | source_rect 32 0 32 32 23 | frame_size 32 32 24 | hot_spot 0 0 25 | 26 | animation 0 27 | { 28 | repeat TRUE 29 | fps 8 30 | data 0 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /sprites/legacy/items/spikes.spr: -------------------------------------------------------------------------------- 1 | // script by Celdecea, modified by Alexandre 2 | 3 | // Spikes 4 | sprite SD_SPIKES 5 | { 6 | source_file images/spikes.png 7 | source_rect 10 80 128 32 8 | frame_size 32 32 9 | hot_spot 16 31 10 | 11 | // floor 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | 19 | // left wall 20 | animation 1 21 | { 22 | repeat TRUE 23 | fps 8 24 | data 1 25 | } 26 | 27 | // ceiling 28 | animation 2 29 | { 30 | repeat TRUE 31 | fps 8 32 | data 2 33 | } 34 | 35 | // right wall 36 | animation 3 37 | { 38 | repeat TRUE 39 | fps 8 40 | data 3 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /sprites/legacy/items/switch.spr: -------------------------------------------------------------------------------- 1 | // script by Celdecea, modified by Alexandre 2 | 3 | // Switch 4 | sprite SD_SWITCH 5 | { 6 | source_file images/switches.png 7 | source_rect 288 64 64 8 8 | frame_size 32 8 9 | hot_spot 16 8 10 | 11 | // default 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | 19 | // pressed 20 | animation 1 21 | { 22 | repeat TRUE 23 | fps 8 24 | data 1 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /sprites/legacy/items/teleporter.spr: -------------------------------------------------------------------------------- 1 | // script by Alexandre 2 | 3 | // Teleporter 4 | sprite SD_TELEPORTER 5 | { 6 | source_file images/teleporter.png 7 | source_rect 0 0 220 111 8 | frame_size 110 111 9 | hot_spot 55 110 10 | 11 | // idle 12 | animation 0 13 | { 14 | repeat TRUE 15 | fps 8 16 | data 0 17 | } 18 | 19 | // active 20 | animation 1 21 | { 22 | repeat TRUE 23 | fps 16 24 | data 1 0 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /sprites/misc/explosion.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: explosion.spr 3 | // Description: explosion sprite script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // art by thekingphoenix 9 | sprite "Explosion" 10 | { 11 | source_file "images/explode.png" 12 | source_rect 0 32 512 64 13 | frame_size 64 64 14 | hot_spot 32 32 15 | 16 | animation 0 17 | { 18 | repeat FALSE 19 | fps 20 20 | data 0 1 2 3 4 5 6 7 21 | } 22 | } -------------------------------------------------------------------------------- /sprites/misc/invincibility.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: invincibility.spr 3 | // Description: sprite definition for the invincibility stars 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Invincibility" 9 | { 10 | source_file "images/stars.png" 11 | source_rect 0 0 48 32 12 | frame_size 16 16 13 | hot_spot 8 8 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 1 2 3 4 5 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /sprites/overrides/README.txt: -------------------------------------------------------------------------------- 1 | == Folder sprites/overrides/ == 2 | 3 | Sprites defined in this folder override sprites defined elsewhere. 4 | 5 | If you want to modify a sprite that is shipped with Open Surge, do not modify 6 | its .spr file directly. If you do so, you'll lose your changes as soon as you 7 | upgrade the engine. Instead, copy the file you want to modify into this folder 8 | and modify YOUR COPY instead. Files stored in this folder won't be overwritten 9 | when upgrading the engine. 10 | 11 | When modifying a sprite, do not edit the original image files that are shipped 12 | with Open Surge. Instead, make a copy and edit YOUR COPY. This helps you keep 13 | your changes if you upgrade the engine. 14 | -------------------------------------------------------------------------------- /sprites/players/none.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: none.spr 3 | // Description: sprite definition file (.spr) for character "None" 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // A transparent sprite 9 | sprite "None" 10 | { 11 | source_file "images/core.png" 12 | source_rect 200 8 16 16 13 | frame_size 16 16 14 | hot_spot 8 8 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 0 21 | } 22 | } -------------------------------------------------------------------------------- /sprites/scenes/end_of_demo.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: end_of_demo.spr 3 | // Description: sprite script - "End of Demo" scene 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "End of Demo - Pointer" 9 | { 10 | source_file "images/scenes/end_of_demo.png" 11 | source_rect 432 0 22 11 12 | frame_size 11 11 13 | hot_spot 12 -2 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 4 19 | data 0 1 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /sprites/scenes/title_screen.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: title_screen.spr 3 | // Description: script describing the sprites displayed on the Title Screen 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "Title Screen - Logo" 9 | { 10 | source_file "images/scenes/title_screen.png" 11 | source_rect 0 0 128 240 12 | frame_size 128 240 13 | hot_spot 64 120 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } 22 | 23 | sprite "Title Screen - Pointer" 24 | { 25 | source_file "images/scenes/title_screen.png" 26 | source_rect 0 240 16 16 27 | frame_size 16 16 28 | hot_spot 16 1 29 | 30 | animation 0 31 | { 32 | repeat TRUE 33 | fps 8 34 | data 0 35 | } 36 | } -------------------------------------------------------------------------------- /sprites/ui/dialogs.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: dialogs.spr 3 | // Description: dialog boxes 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | // Confirm Box 9 | sprite "Confirm Box" 10 | { 11 | source_file "images/dialogbox.png" 12 | source_rect 0 68 179 63 13 | frame_size 179 63 14 | hot_spot 0 0 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 0 21 | } 22 | } 23 | 24 | // Message Box 25 | sprite "Message Box" 26 | { 27 | source_file images/dialogbox.png 28 | source_rect 0 0 272 68 29 | frame_size 272 68 30 | hot_spot 0 0 31 | 32 | animation 0 33 | { 34 | repeat TRUE 35 | fps 8 36 | data 0 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /sprites/ui/editor.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: editor.spr 3 | // Description: script for editor sprites 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | // art by Colin Beard 9 | sprite "Eraser" 10 | { 11 | source_file "images/eraser.png" 12 | source_rect 0 0 19 18 13 | frame_size 19 18 14 | hot_spot 9 9 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 0 21 | } 22 | } -------------------------------------------------------------------------------- /sprites/ui/fade_effect.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: fade_effect.spr 3 | // Description: fade effect 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | sprite "Fade Effect" 9 | { 10 | source_file "images/fade_effect.png" 11 | source_rect 0 0 426 240 12 | frame_size 426 240 13 | hot_spot 0 0 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /sprites/ui/life_icon.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: life_icon.spr 3 | // Description: sprite definition file for a generic Life Icon 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // you shouldn't change this directly 9 | // create a Life Icon sprite for your character instead 10 | sprite "Life Icon" 11 | { 12 | source_file "images/life_icon.png" 13 | source_rect 336 24 24 24 14 | frame_size 24 24 15 | hot_spot 12 12 16 | 17 | animation 0 18 | { 19 | repeat TRUE 20 | fps 8 21 | data 0 22 | } 23 | } -------------------------------------------------------------------------------- /sprites/ui/mobile_pause_button.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: mobile_pause_button.spr 3 | // Description: pause button displayed on mobile devices (HUD) 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | sprite "Mobile Pause Button" 9 | { 10 | source_file "images/ui/mobile_pause_button.png" 11 | source_rect 0 0 64 32 12 | frame_size 32 32 13 | hot_spot 16 16 // at the center 14 | action_spot 8 8 15 | 16 | // unpressed 17 | animation 0 18 | { 19 | repeat TRUE 20 | fps 8 21 | data 0 22 | } 23 | 24 | // pressed 25 | animation 1 26 | { 27 | repeat TRUE 28 | fps 8 29 | data 1 30 | } 31 | } -------------------------------------------------------------------------------- /sprites/ui/mouse.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: mouse.spr 3 | // Description: script for the mouse cursor 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | // art by qubodup (opengameart.org) 9 | sprite "Mouse Cursor" 10 | { 11 | source_file "images/cursor.png" 12 | source_rect 0 0 12 16 13 | frame_size 12 16 14 | hot_spot 0 0 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 0 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /sprites/ui/pause_legacy.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: pause_legacy.spr 3 | // Description: sprite script for the legacy pause icon 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ---------------------------------------------------------------------------- 7 | 8 | // art by Colin Beard 9 | sprite "Pause" 10 | { 11 | source_file "images/pause.png" 12 | source_rect 0 0 23 20 13 | frame_size 23 20 14 | hot_spot 0 0 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 0 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sprites/ui/surge_circle.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: surge_circle.spr 3 | // Description: Open Surge Circle sprite 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | sprite "SurgeCircle" 9 | { 10 | source_file "images/menu.png" 11 | source_rect 0 32 512 512 12 | frame_size 512 512 13 | hot_spot 256 256 14 | 15 | animation 0 16 | { 17 | repeat TRUE 18 | fps 8 19 | data 0 20 | } 21 | } 22 | 23 | sprite "MenuCircle" 24 | { 25 | source_file "images/menu.png" 26 | source_rect 0 544 1024 1024 27 | frame_size 1024 1024 28 | hot_spot 512 512 29 | 30 | animation 0 31 | { 32 | repeat TRUE 33 | fps 8 34 | data 0 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /sprites/ui/surge_cool.spr: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: surge_cool.spr 3 | // Description: Surge Cool sprite definition file 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | // art by KZR 9 | sprite "SurgeCool" 10 | { 11 | source_file "images/surge_cool.png" 12 | source_rect 0 0 127 139 13 | frame_size 127 139 14 | hot_spot 64 139 15 | 16 | animation 0 17 | { 18 | repeat TRUE 19 | fps 8 20 | data 0 21 | } 22 | } -------------------------------------------------------------------------------- /src/misc/android/.gitignore: -------------------------------------------------------------------------------- 1 | .* 2 | build/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /src/misc/android/etc/fdroid.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # F-Droid version 3 | # new releases must be tagged 4 | # 5 | 6 | CurrentVersion: 6.1.2.1-fdroid 7 | CurrentVersionCode: 30601 8 | 9 | -------------------------------------------------------------------------------- /src/misc/android/metadata/de-DE/short_description.txt: -------------------------------------------------------------------------------- 1 | Eine Retro-Spielengine mit einem spaßigen Plattformspiel, das von 16-Bit-Sonic-Spielen inspiriert wurde. 2 | -------------------------------------------------------------------------------- /src/misc/android/metadata/de-DE/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge: Retro-Spielengine -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/changelogs/25025.txt: -------------------------------------------------------------------------------- 1 | * Initial F-Droid release -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/changelogs/30550.txt: -------------------------------------------------------------------------------- 1 | * Fixed an OpenGL-related issue in the Flatpak edition 2 | * Fixed a memory-related bug in the Entity Manager 3 | * Updated metadata and translations 4 | * Tweaked the water effect for extra performance 5 | * Reintroduced the Create option at the Main Menu 6 | * Updated the Thanks for Playing screen 7 | * Other minor changes 8 | -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/changelogs/30600.txt: -------------------------------------------------------------------------------- 1 | * Relaxed OpenGL requirements for compatibility with older hardware 2 | * Introduced an underwater audio effect and an audio mixer 3 | * Added the Team Play mechanic 4 | * Updated joystick-related code 5 | * Introduced font aliases 6 | * Made additions and fixes to SurgeScript 7 | * Other minor fixes and changes -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/icon.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/4.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/5.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/6.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/7.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/8.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/phoneScreenshots/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/phoneScreenshots/9.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/images/tvBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/metadata/en-US/images/tvBanner.png -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | A retro game engine with a fun platformer inspired by 16-bit Sonic games. -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge: retro game engine -------------------------------------------------------------------------------- /src/misc/android/metadata/en-US/video.txt: -------------------------------------------------------------------------------- 1 | https://www.youtube.com/watch?v=gJgCVMUwEt4 -------------------------------------------------------------------------------- /src/misc/android/metadata/es-ES/short_description.txt: -------------------------------------------------------------------------------- 1 | Un motor de juego retro con un divertido juego de plataformas inspirado en los juegos de Sonic de 16 bits. -------------------------------------------------------------------------------- /src/misc/android/metadata/es-ES/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge: motor para juegos retro -------------------------------------------------------------------------------- /src/misc/android/metadata/fr-FR/short_description.txt: -------------------------------------------------------------------------------- 1 | Un moteur de jeu rétro avec un platformer fun inspiré des jeux Sonic 16 bits. 2 | -------------------------------------------------------------------------------- /src/misc/android/metadata/fr-FR/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge : moteur de jeu rétro -------------------------------------------------------------------------------- /src/misc/android/metadata/it-IT/short_description.txt: -------------------------------------------------------------------------------- 1 | Un motore di gioco retrò con un divertente platform ispirato ai giochi di Sonic a 16 bit. 2 | -------------------------------------------------------------------------------- /src/misc/android/metadata/it-IT/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge: motore di gioco retrò -------------------------------------------------------------------------------- /src/misc/android/metadata/lt-LT/short_description.txt: -------------------------------------------------------------------------------- 1 | Retro žaidimo variklis su smagiu platforminiu žaidimu, kurį įkvėpė 16 bitų „Sonic“ žaidimai. -------------------------------------------------------------------------------- /src/misc/android/metadata/lt-LT/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge: retro žaidimų variklis -------------------------------------------------------------------------------- /src/misc/android/metadata/pt-BR/short_description.txt: -------------------------------------------------------------------------------- 1 | Uma game engine retrô com um divertido jogo de plataforma inspirado no Sonic de 16 bits. -------------------------------------------------------------------------------- /src/misc/android/metadata/pt-BR/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge: game engine retrô -------------------------------------------------------------------------------- /src/misc/android/metadata/ru-RU/short_description.txt: -------------------------------------------------------------------------------- 1 | Ретро игровой движок с платформером вдохнолённым 16-битными играми о Сонике -------------------------------------------------------------------------------- /src/misc/android/metadata/ru-RU/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge: ретро игровой движок -------------------------------------------------------------------------------- /src/misc/android/metadata/uk-UA/short_description.txt: -------------------------------------------------------------------------------- 1 | Ретро ігровий рушій з крутим платформером всередині, який був натхненний іграми про Соніка з 16 бітної ери. -------------------------------------------------------------------------------- /src/misc/android/metadata/uk-UA/title.txt: -------------------------------------------------------------------------------- 1 | Open Surge: ретро ігровий рушій -------------------------------------------------------------------------------- /src/misc/android/scripts/pull_allegro.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # pull_allegro.sh 8 | # Pull Allegro 9 | # 10 | set -e 11 | 12 | echo "Pulling Allegro..." 13 | 14 | src_dir="$(realpath "$(dirname "$0")/../src/cpp/allegro")" 15 | git_pull="$(realpath "$(dirname "$0")/git_pull.sh")" 16 | 17 | pushd build/parts/allegro/src 18 | 19 | if [[ ! -d "$src_dir" ]]; then 20 | 21 | # remote copy 22 | "$git_pull" \ 23 | --repository https://github.com/liballeg/allegro5.git \ 24 | --commit c4bc6dcb72f4a338c870de75f800d245c241e6c1 \ 25 | ; 26 | 27 | else 28 | 29 | # local copy 30 | pushd "$src_dir" 31 | tar cf - --exclude=.git . | ( popd && tar xvf - ) 32 | popd 33 | 34 | fi 35 | 36 | popd 37 | -------------------------------------------------------------------------------- /src/misc/android/scripts/pull_java.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # pull_java.sh 8 | # Pull the Java part 9 | # 10 | set -e 11 | 12 | echo "Pulling the Java part..." 13 | 14 | src_dir="$(realpath "$(dirname "$0")/../src")" 15 | 16 | pushd build/parts/java/src 17 | 18 | # local copy 19 | pushd "$src_dir" 20 | tar cf - --exclude=cpp . | ( popd && tar xvf - ) 21 | popd 22 | 23 | popd 24 | -------------------------------------------------------------------------------- /src/misc/android/scripts/pull_opensurge.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # pull_opensurge.sh 8 | # Pull opensurge 9 | # 10 | set -e 11 | 12 | echo "Pulling opensurge..." 13 | 14 | src_dir="$(realpath "$(dirname "$0")/../src/cpp/opensurge")" 15 | git_pull="$(realpath "$(dirname "$0")/git_pull.sh")" 16 | 17 | pushd build/parts/opensurge/src 18 | 19 | if [[ ! -d "$src_dir" ]]; then 20 | 21 | # remote copy 22 | "$git_pull" \ 23 | --repository https://github.com/alemart/opensurge.git \ 24 | --commit 1dfae734c896645242c165293c22145522f8c0c9 \ 25 | ; 26 | 27 | else 28 | 29 | # local copy 30 | #cp -v -r $src_dir/* . # unsuitable 31 | pushd "$src_dir" 32 | tar cf - --exclude=src/misc/android --exclude=.git . | ( popd && tar xvf - ) 33 | popd 34 | 35 | fi 36 | 37 | popd 38 | -------------------------------------------------------------------------------- /src/misc/android/scripts/pull_surgescript.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # pull_surgescript.sh 8 | # Pull SurgeScript 9 | # 10 | set -e 11 | 12 | echo "Pulling SurgeScript..." 13 | 14 | src_dir="$(realpath "$(dirname "$0")/../src/cpp/surgescript")" 15 | git_pull="$(realpath "$(dirname "$0")/git_pull.sh")" 16 | 17 | pushd build/parts/surgescript/src 18 | 19 | if [[ ! -d "$src_dir" ]]; then 20 | 21 | # remote copy 22 | "$git_pull" \ 23 | --repository https://github.com/alemart/surgescript.git \ 24 | --tag v0.6.1 \ 25 | ; 26 | 27 | else 28 | 29 | # local copy 30 | pushd "$src_dir" 31 | tar cf - --exclude=.git . | ( popd && tar xvf - ) 32 | popd 33 | 34 | fi 35 | 36 | popd 37 | -------------------------------------------------------------------------------- /src/misc/android/scripts/run_apk.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # run_apk.sh 8 | # Run the engine 9 | # 10 | set -e 11 | 12 | echo "Will run the engine..." 13 | source "$(dirname "$0")/set_sdk.sh" "$@" 14 | 15 | ADB="$SDK_PLATFORM_TOOLS/adb" 16 | AAPT2="$SDK_BUILD_TOOLS/aapt2" 17 | 18 | APK="build/opensurge.apk" 19 | if [[ ! -f "$APK" ]]; then 20 | echo "Can't find $APK" 21 | exit 1 22 | fi 23 | 24 | echo "Found $APK" 25 | PACKAGE_NAME="$("$AAPT2" dump packagename "$APK")" 26 | echo "Package name is $PACKAGE_NAME" 27 | 28 | echo "Installing..." 29 | "$ADB" install -r "$APK" 30 | 31 | echo "Launching..." 32 | "$ADB" shell am start -n "$PACKAGE_NAME/org.opensurge2d.surgeengine.MainActivity" 33 | -------------------------------------------------------------------------------- /src/misc/android/scripts/stage_deps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # stage_deps.sh 8 | # Stage Allegro dependencies 9 | # 10 | set -e 11 | 12 | echo "Staging Allegro dependencies..." 13 | source "$(dirname "$0")/set_ndk.sh" "$@" 14 | 15 | if [[ -z "$ABI" || -z "$PREFIX" ]]; then 16 | echo "ERROR: unspecified ABI parameters" 17 | exit 1 18 | fi 19 | 20 | # Stage 21 | for lib in libfreetype libogg libvorbis libphysfs; do 22 | pushd build/parts/deps/build/$ABI/$lib 23 | make install 24 | popd 25 | done 26 | 27 | # Validate 28 | for lib in libfreetype.a libogg.a libvorbis.a libvorbisfile.a libphysfs.so; do 29 | if [[ ! -f "$PREFIX/lib/$lib" ]]; then 30 | echo "ERROR: $lib not found!" 31 | exit 1 32 | fi 33 | done 34 | 35 | # Success! 36 | echo "The Allegro dependencies for $ABI have been staged!" 37 | -------------------------------------------------------------------------------- /src/misc/android/scripts/stage_java.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # stage_java.sh 8 | # Stage the Java part 9 | # 10 | set -e 11 | 12 | echo "Staging the Java part..." 13 | 14 | # Stage 15 | cp -v build/parts/java/build/classes.dex build/stage/ 16 | cp -v build/parts/java/src/AndroidManifest.xml build/stage/ 17 | cp -v -r build/parts/java/src/res build/stage/ 18 | 19 | # Success! 20 | echo "The Java part has been staged!" 21 | -------------------------------------------------------------------------------- /src/misc/android/scripts/stage_opensurge.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # stage_opensurge.sh 8 | # Stage opensurge 9 | # 10 | set -e 11 | 12 | echo "Staging opensurge..." 13 | source "$(dirname "$0")/set_ndk.sh" "$@" 14 | 15 | if [[ -z "$ABI" || -z "$PREFIX" ]]; then 16 | echo "ERROR: unspecified ABI parameters" 17 | exit 1 18 | fi 19 | 20 | # Stage 21 | pushd build/parts/opensurge/build/$ABI 22 | make install 23 | popd 24 | 25 | # Validate 26 | lib=libopensurge.so 27 | if [[ ! -f "$PREFIX/lib/$lib" ]]; then 28 | echo "ERROR: $lib not found!" 29 | exit 1 30 | fi 31 | 32 | # Success! 33 | echo "opensurge for $ABI has been staged!" 34 | -------------------------------------------------------------------------------- /src/misc/android/scripts/stage_surgescript.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Build scripts for the Android edition of the Open Surge Engine 4 | # Copyright 2024-present Alexandre Martins 5 | # License: GPL-3.0-or-later 6 | # 7 | # stage_surgescript.sh 8 | # Stage SurgeScript 9 | # 10 | set -e 11 | 12 | echo "Staging SurgeScript..." 13 | source "$(dirname "$0")/set_ndk.sh" "$@" 14 | 15 | if [[ -z "$ABI" || -z "$PREFIX" ]]; then 16 | echo "ERROR: unspecified ABI parameters" 17 | exit 1 18 | fi 19 | 20 | # Stage 21 | pushd build/parts/surgescript/build/$ABI 22 | make install 23 | popd 24 | 25 | # Validate 26 | lib=libsurgescript-static.a 27 | if [[ ! -f "$PREFIX/lib/$lib" ]]; then 28 | echo "ERROR: $lib not found!" 29 | exit 1 30 | fi 31 | 32 | # Success! 33 | echo "SurgeScript for $ABI has been staged!" 34 | -------------------------------------------------------------------------------- /src/misc/android/src/cpp/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-anydpi-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /src/misc/android/src/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/android/src/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/misc/android/src/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFEE11 4 | #3D3D3D 5 | -------------------------------------------------------------------------------- /src/misc/android/src/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Surge Engine 4 | Open source 2D retro game engine 5 | -------------------------------------------------------------------------------- /src/misc/android/src/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /src/misc/artwork/musics/README: -------------------------------------------------------------------------------- 1 | The files with the ".mmp" extension are project files for LMMS (https://lmms.io). -------------------------------------------------------------------------------- /src/misc/goodies/demo_level.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set EngineExecutable=opensurge.exe 4 | set EngineParameters=--level levels/demo-1.lev 5 | 6 | set ThisDirectory=%~dp0 7 | set EngineDirectory=%ThisDirectory%..\..\..\ 8 | 9 | cd "%EngineDirectory%" 10 | echo Launching %EngineExecutable% %EngineParameters% 11 | start "opensurge" "%EngineExecutable%" %EngineParameters% 12 | -------------------------------------------------------------------------------- /src/misc/goodies/import_wizard.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set EngineExecutable=opensurge.exe 4 | set EngineParameters=--import-wizard 5 | 6 | set ThisDirectory=%~dp0 7 | set EngineDirectory=%ThisDirectory%..\..\..\ 8 | 9 | cd "%EngineDirectory%" 10 | echo Launching %EngineExecutable% %EngineParameters% 11 | start "opensurge" "%EngineExecutable%" %EngineParameters% 12 | -------------------------------------------------------------------------------- /src/misc/goodies/mobile_mode.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set EngineExecutable=opensurge.exe 4 | set EngineParameters=--mobile 5 | 6 | set ThisDirectory=%~dp0 7 | set EngineDirectory=%ThisDirectory%..\..\..\ 8 | 9 | cd "%EngineDirectory%" 10 | echo Launching %EngineExecutable% %EngineParameters% 11 | start "opensurge" "%EngineExecutable%" %EngineParameters% 12 | -------------------------------------------------------------------------------- /src/misc/goodies/options_screen.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set EngineExecutable=opensurge.exe 4 | set EngineParameters=--quest quests/options.qst 5 | 6 | set ThisDirectory=%~dp0 7 | set EngineDirectory=%ThisDirectory%..\..\..\ 8 | 9 | cd "%EngineDirectory%" 10 | echo Launching %EngineExecutable% %EngineParameters% 11 | start "opensurge" "%EngineExecutable%" %EngineParameters% 12 | -------------------------------------------------------------------------------- /src/misc/goodies/verbose_logs.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set EngineExecutable=opensurge.exe 4 | set EngineParameters=--verbose 5 | 6 | set ThisDirectory=%~dp0 7 | set EngineDirectory=%ThisDirectory%..\..\..\ 8 | 9 | cd "%EngineDirectory%" 10 | echo Launching %EngineExecutable% %EngineParameters% 11 | start cmd /c "%EngineExecutable%" %EngineParameters% ^> logfile_verbose.txt 12 | -------------------------------------------------------------------------------- /src/misc/icon.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | /* icon data */ 4 | const unsigned char ICON_PNG[] = "\211PNG\15\12\32\12\0\0\0\15IHDR\0\0\0\21\0\0\0\25\10\3\0\0\0\227\"\365\336\0\0\0HPLTE\0\0\0\373\217$\261?\1\353h\7\321M\2\372\251e\367}\4\376\316\220\377\304\304\346oo\375\334\251\367\212\212\375\263h\366\201K\374\240E\307\354\363\377\262\263\377\244\245f5\0\337\376\377\347v\5\0\260\0\0\200\0\0Y\0\324qj\250\0\0\0\1tRNS\0@\346\330f\0\0\0\213IDAT\30\323U\314\333\22\203 \14\4P\222%\240U\241U\332\376\377\237J\270\14\270O\311\231\2355f7\206\315\34\34;\333\7a=v<\10K\247![\243!\237BCxy\27\232\4\2258_\0ODH!\2044\21Q J\260\334\2114l\307\226\376\332\352\373\326\21\1.\23F\305\235\247\22\365J\206\30\13q\257H\214\361{B\4\12\272\"\327u\375\376\316{\351\340_%\12\265$\336\263\265\25\232eZ\267\12\303\244\3757\25!\5\335\207\277\244l\0\0\0\0IEND\256B`\202"; 5 | const size_t ICON_SIZE = sizeof(ICON_PNG) - 1; -------------------------------------------------------------------------------- /src/misc/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/icon128.png -------------------------------------------------------------------------------- /src/misc/icon256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/icon256.png -------------------------------------------------------------------------------- /src/misc/icon_base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/icon_base.png -------------------------------------------------------------------------------- /src/misc/icon_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/icon_old.png -------------------------------------------------------------------------------- /src/misc/license.c: -------------------------------------------------------------------------------- 1 | /* License text */ 2 | const char LICENSE_TEXT[] = "" 3 | "This program is free software; you can redistribute it and/or modify " 4 | "it under the terms of the GNU General Public License as published by " 5 | "the Free Software Foundation; either version 3 of the License, or " 6 | "(at your option) any later version.\n" 7 | "\n" 8 | "This program is distributed in the hope that it will be useful, " 9 | "but WITHOUT ANY WARRANTY; without even the implied warranty of " 10 | "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " 11 | "GNU General Public License for more details. You should have received " 12 | "a copy of the GNU General Public License along with this program. If " 13 | "not, see < http://www.gnu.org/licenses/ >.\n" 14 | "\n" 15 | "Surge the Rabbit, Open Surge Engine and SurgeScript are trademarks of " 16 | "Alexandre Martins." 17 | ; -------------------------------------------------------------------------------- /src/misc/opensurge.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Surge Engine 4 | GenericName=Game Engine 5 | GenericName[de]=Spiel-Engine 6 | GenericName[ru]=Игровой движок 7 | GenericName[uk]=Ігровий рушій 8 | Comment=Open source 2D retro game engine 9 | Comment[ru]=Игровой ретро 2д движок с открытым исходным кодом 10 | Comment[uk]=Ігровий ретро 2д рушій з відкритим джерельним кодом 11 | Exec=@DESKTOP_EXEC_FULLPATH@ 12 | Icon=@DESKTOP_ICON_FULLPATH@ 13 | Terminal=false 14 | Keywords=game;open;source;engine;bunny;rabbit;cool;retro;pixel;art;2d; 15 | Keywords[ru]=game;open;source;engine;bunny;rabbit;cool;retro;pixel;art;2d;игра;открытый;исходный;движок;заец;кролик;крутой;ретро;пиксель;арт;2д; 16 | Keywords[uk]=game;open;source;engine;bunny;rabbit;cool;retro;pixel;art;2d;гра;відкритий;джерельний;рушій;заєць;кролик;крутий;ретро;піксель;арт;2д; 17 | Categories=Game;Utility;Education;Building;2DGraphics;ActionGame;ArcadeGame; 18 | -------------------------------------------------------------------------------- /src/misc/opensurge.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/opensurge.ico -------------------------------------------------------------------------------- /src/misc/opensurge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/src/misc/opensurge.png -------------------------------------------------------------------------------- /src/scenes/info.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Open Surge Engine 3 | * info.h - engine information 4 | * Copyright 2008-2024 Alexandre Martins 5 | * http://opensurge2d.org 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program. If not, see . 19 | */ 20 | 21 | #ifndef _INFO_H 22 | #define _INFO_H 23 | 24 | void info_init(void*); 25 | void info_release(); 26 | void info_update(); 27 | void info_render(); 28 | 29 | #endif -------------------------------------------------------------------------------- /surge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alemart/opensurge/91182d711c1140f85252a29b0d0592932b167b7a/surge.png -------------------------------------------------------------------------------- /themes/legacy/grassland.bg: -------------------------------------------------------------------------------- 1 | // 2 | // Grassland background 3 | // by Celdecea 4 | // 5 | 6 | background 7 | { 8 | initial_position 0 0 9 | scroll_speed 0 0 10 | behavior LINEAR -10 -10 11 | repeat_x TRUE 12 | repeat_y TRUE 13 | 14 | sprite 15 | { 16 | source_file images/grassland_template.png 17 | source_rect 0 384 48 48 18 | frame_size 48 48 19 | 20 | animation 21 | { 22 | repeat TRUE 23 | fps 8 24 | data 0 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /themes/none.bg: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: none.bg 3 | // Description: an empty background 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | background 9 | { 10 | initial_position 0 0 11 | scroll_speed 0 0 12 | behavior DEFAULT 13 | repeat_x TRUE 14 | repeat_y TRUE 15 | 16 | sprite 17 | { 18 | source_file "images/fade_effect.png" 19 | source_rect 0 0 426 240 20 | frame_size 426 240 21 | 22 | animation 23 | { 24 | repeat TRUE 25 | fps 8 26 | data 0 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /themes/none.brk: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: none.brk 3 | // Description: an empty brickset 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | brick 0 9 | { 10 | type PASSABLE 11 | behavior DEFAULT 12 | angle 0 13 | 14 | sprite 15 | { 16 | source_file "images/fade_effect.png" 17 | source_rect 0 0 16 16 18 | frame_size 16 16 19 | 20 | animation 21 | { 22 | repeat TRUE 23 | fps 8 24 | data 0 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /themes/scenes/allegro.bg: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: allegro.bg 3 | // Description: a background script displaying the Allegro image 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | background 9 | { 10 | initial_position 0 0 11 | scroll_speed 0 0 12 | behavior DEFAULT 13 | repeat_x FALSE 14 | repeat_y FALSE 15 | 16 | sprite 17 | { 18 | source_file "images/liballeg.png" 19 | source_rect 0 0 426 240 20 | frame_size 426 240 21 | 22 | animation 23 | { 24 | repeat TRUE 25 | fps 8 26 | data 0 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /themes/scenes/end_of_demo.bg: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: end_of_demo.bg 3 | // Description: background script for the "End of Demo" scene 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | background 9 | { 10 | initial_position 0 0 11 | scroll_speed 0 0 12 | behavior DEFAULT 13 | repeat_x FALSE 14 | repeat_y FALSE 15 | 16 | sprite 17 | { 18 | source_file "images/scenes/end_of_demo.png" 19 | source_rect 0 0 426 240 20 | frame_size 426 240 21 | 22 | animation 23 | { 24 | repeat TRUE 25 | fps 8 26 | data 0 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /themes/scenes/langselect.bg: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // Open Surge Engine 3 | // http://opensurge2d.org 4 | // 5 | // File: themes/langselect.bg 6 | // Desc: this background is displayed on the language selection screen 7 | // Author: script by Alexandre 8 | // --------------------------------------------------------------------------- 9 | 10 | background 11 | { 12 | initial_position 0 0 13 | scroll_speed 0 0 14 | behavior LINEAR -30 -30 15 | repeat_x TRUE 16 | repeat_y TRUE 17 | 18 | sprite 19 | { 20 | source_file "images/surgebg.png" 21 | source_rect 0 0 48 48 22 | frame_size 48 48 23 | 24 | animation 25 | { 26 | repeat TRUE 27 | fps 8 28 | data 0 29 | } 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /themes/scenes/levelselect.bg: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // Open Surge Engine 3 | // http://opensurge2d.org 4 | // 5 | // File: themes/levelselect.bg 6 | // Desc: this background is displayed on the level selection screen 7 | // Author: script by Alexandre 8 | // --------------------------------------------------------------------------- 9 | 10 | background 11 | { 12 | initial_position 0 0 13 | scroll_speed 0 0 14 | behavior LINEAR -30 -30 15 | repeat_x TRUE 16 | repeat_y TRUE 17 | 18 | sprite 19 | { 20 | source_file "images/surgebg.png" 21 | source_rect 0 0 48 48 22 | frame_size 48 48 23 | 24 | animation 25 | { 26 | repeat TRUE 27 | fps 8 28 | data 0 29 | } 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /themes/scenes/mainmenu.bg: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: mainmenu.bg 3 | // Description: menu background script 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | background 9 | { 10 | initial_position 0 0 11 | scroll_speed 0 0 12 | behavior DEFAULT 13 | repeat_x TRUE 14 | repeat_y TRUE 15 | 16 | sprite 17 | { 18 | source_file "images/menu.png" 19 | source_rect 512 0 512 32 20 | frame_size 512 32 21 | 22 | animation 23 | { 24 | repeat TRUE 25 | fps 8 26 | data 0 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /themes/scenes/options.bg: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // Open Surge Engine 3 | // http://opensurge2d.org 4 | // 5 | // File: themes/options.bg 6 | // Desc: this background is displayed on the options screen 7 | // Author: script by Alexandre 8 | // --------------------------------------------------------------------------- 9 | 10 | background 11 | { 12 | initial_position 0 0 13 | scroll_speed 0 0 14 | behavior LINEAR -30 -30 15 | repeat_x TRUE 16 | repeat_y TRUE 17 | 18 | sprite 19 | { 20 | source_file "images/surgebg.png" 21 | source_rect 0 0 48 48 22 | frame_size 48 48 23 | 24 | animation 25 | { 26 | repeat TRUE 27 | fps 8 28 | data 0 29 | } 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /themes/scenes/play_classic_levels.bg: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: play_classic_levels.bg 3 | // Description: background script for the "Play Classic Levels" scene 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | background 9 | { 10 | initial_position 0 0 11 | scroll_speed 0 0 12 | behavior DEFAULT 13 | repeat_x FALSE 14 | repeat_y FALSE 15 | 16 | sprite 17 | { 18 | source_file "images/scenes/end_of_demo.png" 19 | source_rect 0 0 426 240 20 | frame_size 426 240 21 | 22 | animation 23 | { 24 | repeat TRUE 25 | fps 8 26 | data 0 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /themes/scenes/rate_game.bg: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // File: rate_game.bg 3 | // Description: background script for the "Rate the Game" scene 4 | // Author: Alexandre Martins 5 | // License: MIT 6 | // ----------------------------------------------------------------------------- 7 | 8 | background 9 | { 10 | initial_position 0 0 11 | scroll_speed 0 0 12 | behavior LINEAR -32 32 13 | repeat_x TRUE 14 | repeat_y TRUE 15 | 16 | sprite 17 | { 18 | source_file "images/scenes/rate_game.png" 19 | source_rect 0 240 128 128 20 | frame_size 128 128 21 | 22 | animation 23 | { 24 | repeat TRUE 25 | fps 8 26 | data 0 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /themes/template.bg: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // Open Surge Engine 3 | // http://opensurge2d.org 4 | // 5 | // File: themes/options.bg 6 | // Desc: this background is displayed on the options screen 7 | // Author: script by Alexandre 8 | // --------------------------------------------------------------------------- 9 | 10 | background 11 | { 12 | initial_position 0 0 13 | scroll_speed 0 0 14 | behavior LINEAR -15 -15 15 | repeat_x TRUE 16 | repeat_y TRUE 17 | 18 | sprite 19 | { 20 | source_file "images/surgebg.png" 21 | source_rect 0 0 48 48 22 | frame_size 48 48 23 | 24 | animation 25 | { 26 | repeat TRUE 27 | fps 8 28 | data 0 29 | } 30 | } 31 | } 32 | 33 | --------------------------------------------------------------------------------