From 3e3025abccb38c48d98cde0a40b88fe9588b66b1 Mon Sep 17 00:00:00 2001 From: pelya Date: Thu, 16 Sep 2010 15:53:05 +0300 Subject: [PATCH] Added initial LBreakout2 sources, already slightly modified - it does not work yet! --- project/jni/application/lbreakout2/ABOUT-NLS | 768 + project/jni/application/lbreakout2/AUTHORS | 38 + .../lbreakout2/AndroidAppSettings.cfg | 24 + .../application/lbreakout2/AndroidBuild.sh | 8 + project/jni/application/lbreakout2/COPYING | 280 + project/jni/application/lbreakout2/ChangeLog | 665 + project/jni/application/lbreakout2/INSTALL | 167 + .../jni/application/lbreakout2/Makefile.am | 74 + .../jni/application/lbreakout2/Makefile.in | 781 + project/jni/application/lbreakout2/NEWS | 0 project/jni/application/lbreakout2/README | 235 + .../jni/application/lbreakout2/README-SDL.txt | 13 + project/jni/application/lbreakout2/TODO | 11 + .../jni/application/lbreakout2/acinclude.m4 | 175 + project/jni/application/lbreakout2/aclocal.m4 | 891 + .../application/lbreakout2/client/Makefile.am | 68 + .../application/lbreakout2/client/Makefile.in | 689 + .../jni/application/lbreakout2/client/balls.c | 252 + .../jni/application/lbreakout2/client/balls.h | 30 + .../application/lbreakout2/client/bricks.c | 342 + .../application/lbreakout2/client/bricks.h | 42 + .../jni/application/lbreakout2/client/chart.c | 423 + .../jni/application/lbreakout2/client/chart.h | 98 + .../application/lbreakout2/client/client.c | 510 + .../application/lbreakout2/client/client.h | 51 + .../lbreakout2/client/client_data.c | 357 + .../lbreakout2/client/client_data.h | 118 + .../lbreakout2/client/client_handlers.c | 626 + .../lbreakout2/client/client_handlers.h | 186 + .../lbreakout2/client/client_recv.c | 357 + .../jni/application/lbreakout2/client/comm.c | 462 + .../jni/application/lbreakout2/client/comm.h | 32 + .../application/lbreakout2/client/config.c | 273 + .../application/lbreakout2/client/config.h | 103 + .../application/lbreakout2/client/credit.c | 124 + .../application/lbreakout2/client/credit.h | 33 + .../application/lbreakout2/client/display.c | 194 + .../application/lbreakout2/client/display.h | 75 + .../application/lbreakout2/client/editor.c | 822 + .../application/lbreakout2/client/editor.h | 38 + .../application/lbreakout2/client/empty.hscr | 31 + .../jni/application/lbreakout2/client/event.c | 60 + .../jni/application/lbreakout2/client/event.h | 56 + .../application/lbreakout2/client/extras.c | 635 + .../application/lbreakout2/client/extras.h | 42 + .../jni/application/lbreakout2/client/file.c | 530 + .../jni/application/lbreakout2/client/file.h | 107 + .../jni/application/lbreakout2/client/frame.c | 363 + .../jni/application/lbreakout2/client/frame.h | 85 + .../jni/application/lbreakout2/client/game.c | 1531 ++ .../jni/application/lbreakout2/client/game.h | 67 + .../lbreakout2/client/gfx/AbsoluteB/ABOUT | 6 + .../client/gfx/AbsoluteB/Makefile.am | 15 + .../client/gfx/AbsoluteB/Makefile.in | 372 + .../lbreakout2/client/gfx/AbsoluteB/README | 13 + .../lbreakout2/client/gfx/AbsoluteB/back0.png | Bin 0 -> 14996 bytes .../lbreakout2/client/gfx/AbsoluteB/back1.png | Bin 0 -> 50438 bytes .../lbreakout2/client/gfx/AbsoluteB/back2.png | Bin 0 -> 221810 bytes .../lbreakout2/client/gfx/AbsoluteB/back3.png | Bin 0 -> 131249 bytes .../lbreakout2/client/gfx/AbsoluteB/back4.png | Bin 0 -> 2403 bytes .../lbreakout2/client/gfx/AbsoluteB/back5.png | Bin 0 -> 100934 bytes .../client/gfx/AbsoluteB/bricks.png | Bin 0 -> 18628 bytes .../client/gfx/AbsoluteB/extras.png | Bin 0 -> 26733 bytes .../client/gfx/AbsoluteB/fr_left.png | Bin 0 -> 721 bytes .../client/gfx/AbsoluteB/fr_right.png | Bin 0 -> 2229 bytes .../client/gfx/AbsoluteB/fr_top.png | Bin 0 -> 2674 bytes .../lbreakout2/client/gfx/AbsoluteB/life.png | Bin 0 -> 955 bytes .../client/gfx/AbsoluteB/menuback.png | Bin 0 -> 58674 bytes .../client/gfx/AbsoluteB/paddle.png | Bin 0 -> 3417 bytes .../lbreakout2/client/gfx/AbsoluteB/shot.png | Bin 0 -> 417 bytes .../client/gfx/AbsoluteB/weapon.png | Bin 0 -> 620 bytes .../lbreakout2/client/gfx/Classic/ABOUT | 4 + .../lbreakout2/client/gfx/Classic/Makefile.am | 12 + .../lbreakout2/client/gfx/Classic/Makefile.in | 368 + .../lbreakout2/client/gfx/Makefile.am | 32 + .../lbreakout2/client/gfx/Makefile.in | 545 + .../lbreakout2/client/gfx/Moiree/ABOUT | 6 + .../lbreakout2/client/gfx/Moiree/Makefile.am | 16 + .../lbreakout2/client/gfx/Moiree/Makefile.in | 373 + .../lbreakout2/client/gfx/Moiree/back0.png | Bin 0 -> 221 bytes .../lbreakout2/client/gfx/Moiree/back1.png | Bin 0 -> 260 bytes .../lbreakout2/client/gfx/Moiree/back2.png | Bin 0 -> 188 bytes .../lbreakout2/client/gfx/Moiree/back3.png | Bin 0 -> 447 bytes .../lbreakout2/client/gfx/Moiree/back4.png | Bin 0 -> 427 bytes .../lbreakout2/client/gfx/Moiree/back5.png | Bin 0 -> 433 bytes .../lbreakout2/client/gfx/Moiree/bricks.png | Bin 0 -> 15408 bytes .../lbreakout2/client/gfx/Moiree/extras.png | Bin 0 -> 10823 bytes .../lbreakout2/client/gfx/Moiree/fr_left.png | Bin 0 -> 2623 bytes .../client/gfx/Moiree/fr_mp_left.png | Bin 0 -> 295 bytes .../client/gfx/Moiree/fr_mp_right.png | Bin 0 -> 289 bytes .../lbreakout2/client/gfx/Moiree/fr_right.png | Bin 0 -> 367 bytes .../lbreakout2/client/gfx/Moiree/fr_top.png | Bin 0 -> 6605 bytes .../lbreakout2/client/gfx/Moiree/life.png | Bin 0 -> 340 bytes .../lbreakout2/client/gfx/Moiree/paddle.png | Bin 0 -> 653 bytes .../lbreakout2/client/gfx/Oz/Makefile.am | 15 + .../lbreakout2/client/gfx/Oz/Makefile.in | 372 + .../lbreakout2/client/gfx/Oz/README | 8 + .../lbreakout2/client/gfx/Oz/back0.png | Bin 0 -> 62610 bytes .../lbreakout2/client/gfx/Oz/back1.png | Bin 0 -> 58342 bytes .../lbreakout2/client/gfx/Oz/back2.png | Bin 0 -> 36991 bytes .../lbreakout2/client/gfx/Oz/back3.png | Bin 0 -> 54217 bytes .../lbreakout2/client/gfx/Oz/back4.png | Bin 0 -> 64186 bytes .../lbreakout2/client/gfx/Oz/bricks.png | Bin 0 -> 29329 bytes .../lbreakout2/client/gfx/Oz/fr_left.png | Bin 0 -> 22810 bytes .../lbreakout2/client/gfx/Oz/fr_right.png | Bin 0 -> 39229 bytes .../lbreakout2/client/gfx/Oz/fr_top.png | Bin 0 -> 20189 bytes .../lbreakout2/client/gfx/Oz/life.png | Bin 0 -> 3309 bytes .../lbreakout2/client/gfx/Oz/paddle.png | Bin 0 -> 5189 bytes .../lbreakout2/client/gfx/ammo.png | Bin 0 -> 439 bytes .../lbreakout2/client/gfx/back0.png | Bin 0 -> 7449 bytes .../lbreakout2/client/gfx/back1.png | Bin 0 -> 58342 bytes .../lbreakout2/client/gfx/back2.png | Bin 0 -> 36991 bytes .../lbreakout2/client/gfx/back3.png | Bin 0 -> 54217 bytes .../lbreakout2/client/gfx/back4.png | Bin 0 -> 64186 bytes .../lbreakout2/client/gfx/back5.png | Bin 0 -> 47019 bytes .../lbreakout2/client/gfx/ball.png | Bin 0 -> 1425 bytes .../lbreakout2/client/gfx/balloon.png | Bin 0 -> 816 bytes .../lbreakout2/client/gfx/balloon_peek.png | Bin 0 -> 500 bytes .../lbreakout2/client/gfx/bricks.png | Bin 0 -> 22350 bytes .../lbreakout2/client/gfx/buttons.png | Bin 0 -> 3478 bytes .../lbreakout2/client/gfx/confirm_buttons.png | Bin 0 -> 1944 bytes .../lbreakout2/client/gfx/cr_back.png | Bin 0 -> 13752 bytes .../lbreakout2/client/gfx/explosions.png | Bin 0 -> 92807 bytes .../lbreakout2/client/gfx/explosions_dark.png | Bin 0 -> 116601 bytes .../lbreakout2/client/gfx/extras.png | Bin 0 -> 34187 bytes .../lbreakout2/client/gfx/f_frame.png | Bin 0 -> 3811 bytes .../lbreakout2/client/gfx/f_game.png | Bin 0 -> 5392 bytes .../lbreakout2/client/gfx/f_small_red.png | Bin 0 -> 1954 bytes .../lbreakout2/client/gfx/f_small_white.png | Bin 0 -> 2110 bytes .../lbreakout2/client/gfx/f_small_yellow.png | Bin 0 -> 3301 bytes .../lbreakout2/client/gfx/f_tiny_black.png | Bin 0 -> 645 bytes .../lbreakout2/client/gfx/f_white.png | Bin 0 -> 4575 bytes .../lbreakout2/client/gfx/f_yellow.png | Bin 0 -> 5392 bytes .../lbreakout2/client/gfx/fr_hori.png | Bin 0 -> 973 bytes .../lbreakout2/client/gfx/fr_left.png | Bin 0 -> 9984 bytes .../lbreakout2/client/gfx/fr_llc.png | Bin 0 -> 262 bytes .../lbreakout2/client/gfx/fr_luc.png | Bin 0 -> 233 bytes .../lbreakout2/client/gfx/fr_mp_left.png | Bin 0 -> 864 bytes .../lbreakout2/client/gfx/fr_mp_right.png | Bin 0 -> 864 bytes .../lbreakout2/client/gfx/fr_right.png | Bin 0 -> 11265 bytes .../lbreakout2/client/gfx/fr_rlc.png | Bin 0 -> 251 bytes .../lbreakout2/client/gfx/fr_ruc.png | Bin 0 -> 246 bytes .../lbreakout2/client/gfx/fr_top.png | Bin 0 -> 7013 bytes .../lbreakout2/client/gfx/fr_vert.png | Bin 0 -> 1142 bytes .../lbreakout2/client/gfx/life.png | Bin 0 -> 2794 bytes .../lbreakout2/client/gfx/loading.png | Bin 0 -> 8484 bytes .../lbreakout2/client/gfx/menuback.png | Bin 0 -> 215003 bytes .../lbreakout2/client/gfx/nukeback.png | Bin 0 -> 14996 bytes .../lbreakout2/client/gfx/paddle.png | Bin 0 -> 6613 bytes .../lbreakout2/client/gfx/scroll_down.png | Bin 0 -> 423 bytes .../lbreakout2/client/gfx/scroll_track.png | Bin 0 -> 226 bytes .../lbreakout2/client/gfx/scroll_up.png | Bin 0 -> 412 bytes .../lbreakout2/client/gfx/sel_frame.png | Bin 0 -> 195 bytes .../lbreakout2/client/gfx/shine.png | Bin 0 -> 435 bytes .../lbreakout2/client/gfx/shot.png | Bin 0 -> 265 bytes .../lbreakout2/client/gfx/warp.png | Bin 0 -> 470 bytes .../lbreakout2/client/gfx/weapon.png | Bin 0 -> 768 bytes .../lbreakout2/client/gfx/win_icon.png | Bin 0 -> 689 bytes .../lbreakout2/client/gui_theme/Makefile.am | 19 + .../lbreakout2/client/gui_theme/Makefile.in | 375 + .../lbreakout2/client/gui_theme/box_frame.png | Bin 0 -> 411 bytes .../client/gui_theme/box_wallpaper.png | Bin 0 -> 10810 bytes .../client/gui_theme/button_frame_clicked.png | Bin 0 -> 206 bytes .../client/gui_theme/button_frame_normal.png | Bin 0 -> 195 bytes .../gui_theme/button_wallpaper_focused.png | Bin 0 -> 59348 bytes .../gui_theme/button_wallpaper_normal.png | Bin 0 -> 54169 bytes .../lbreakout2/client/gui_theme/checkbox.png | Bin 0 -> 187 bytes .../lbreakout2/client/gui_theme/click.wav | Bin 0 -> 3056 bytes .../lbreakout2/client/gui_theme/edit.wav | Bin 0 -> 2274 bytes .../lbreakout2/client/gui_theme/font.png | Bin 0 -> 2126 bytes .../client/gui_theme/list_item_color.png | Bin 0 -> 143 bytes .../client/gui_theme/progress_high.png | Bin 0 -> 1119 bytes .../client/gui_theme/progress_low.png | Bin 0 -> 1102 bytes .../client/gui_theme/progress_medium.png | Bin 0 -> 1382 bytes .../client/gui_theme/scrollbar_arrows.png | Bin 0 -> 411 bytes .../client/gui_theme/spinbutton_arrows.png | Bin 0 -> 233 bytes .../client/gui_theme/widget_frame.png | Bin 0 -> 240 bytes .../client/gui_theme/widget_wallpaper.png | Bin 0 -> 10810 bytes .../jni/application/lbreakout2/client/help.c | 388 + .../jni/application/lbreakout2/client/help.h | 36 + .../jni/application/lbreakout2/client/hint.c | 277 + .../jni/application/lbreakout2/client/hint.h | 83 + .../jni/application/lbreakout2/client/item.c | 241 + .../jni/application/lbreakout2/client/item.h | 106 + .../application/lbreakout2/client/lbreakout.h | 83 + .../lbreakout2/client/levels/1010011010 | 288 + .../application/lbreakout2/client/levels/Abc | 1354 ++ .../application/lbreakout2/client/levels/Afl | 780 + .../application/lbreakout2/client/levels/Alex | 329 + .../lbreakout2/client/levels/Alexandre | 206 + .../lbreakout2/client/levels/AllNighter | 9718 +++++++++++ .../lbreakout2/client/levels/Arcade | 534 + .../lbreakout2/client/levels/Arkanoid | 329 + .../lbreakout2/client/levels/BeOS-4ever | 410 + .../lbreakout2/client/levels/Bertrand | 288 + .../lbreakout2/client/levels/BigBang | 164 + .../lbreakout2/client/levels/Biolab428 | 821 + .../lbreakout2/client/levels/Blues | 821 + .../lbreakout2/client/levels/Bombs | 1025 ++ .../lbreakout2/client/levels/CalendarFun | 657 + .../lbreakout2/client/levels/Celine | 206 + .../lbreakout2/client/levels/Chaos | 535 + .../lbreakout2/client/levels/Choices | 658 + .../lbreakout2/client/levels/Circle | 698 + .../lbreakout2/client/levels/Classique | 206 + .../lbreakout2/client/levels/Color | 1641 ++ .../lbreakout2/client/levels/Composers | 494 + .../lbreakout2/client/levels/Crossing | 862 + .../application/lbreakout2/client/levels/D2K | 1026 ++ .../lbreakout2/client/levels/Daves | 698 + .../lbreakout2/client/levels/Demons | 492 + .../lbreakout2/client/levels/Family | 821 + .../lbreakout2/client/levels/Fantaisie | 821 + .../lbreakout2/client/levels/FatalDoomsday | 1641 ++ .../lbreakout2/client/levels/FatalDoomsday2 | 698 + .../lbreakout2/client/levels/Flower | 206 + .../application/lbreakout2/client/levels/Fly | 821 + .../lbreakout2/client/levels/Freek | 1599 ++ .../lbreakout2/client/levels/FunCity | 698 + .../lbreakout2/client/levels/Gatinha | 2912 ++++ .../lbreakout2/client/levels/GreenWall | 1641 ++ .../lbreakout2/client/levels/GreenWall2 | 1641 ++ .../lbreakout2/client/levels/GreenWall3 | 1641 ++ .../lbreakout2/client/levels/GreenWall4 | 1641 ++ .../application/lbreakout2/client/levels/Hans | 821 + .../lbreakout2/client/levels/HereWeGo | 492 + .../lbreakout2/client/levels/Heroes | 616 + .../lbreakout2/client/levels/HighBall | 287 + .../lbreakout2/client/levels/Holidays | 615 + .../lbreakout2/client/levels/Hommage | 820 + .../lbreakout2/client/levels/Impossibility | 411 + .../lbreakout2/client/levels/Invisible | 165 + .../lbreakout2/client/levels/IoriYagami | 575 + .../application/lbreakout2/client/levels/Iris | 1641 ++ .../lbreakout2/client/levels/IrrenhausAh | 1600 ++ .../lbreakout2/client/levels/Izusiowe | 575 + .../lbreakout2/client/levels/JediAdventure | 452 + .../lbreakout2/client/levels/Kazan-1 | 617 + .../lbreakout2/client/levels/Kevin | 820 + .../lbreakout2/client/levels/KungFu | 616 + .../lbreakout2/client/levels/LBreakout1 | 1231 ++ .../lbreakout2/client/levels/LBreakout2 | 1026 ++ .../lbreakout2/client/levels/Lapis | 369 + .../lbreakout2/client/levels/Lattsville | 1641 ++ .../lbreakout2/client/levels/LinuxFun | 615 + .../application/lbreakout2/client/levels/Lord | 1641 ++ .../lbreakout2/client/levels/Makefile.am | 123 + .../lbreakout2/client/levels/Makefile.in | 480 + .../application/lbreakout2/client/levels/Maze | 370 + .../lbreakout2/client/levels/Megadoomer | 1641 ++ .../lbreakout2/client/levels/MontyHall | 1107 ++ .../application/lbreakout2/client/levels/NES | 411 + .../lbreakout2/client/levels/N_Arenas | 247 + .../lbreakout2/client/levels/N_Snapshots | 411 + .../lbreakout2/client/levels/Nations | 534 + .../lbreakout2/client/levels/Negundoid | 862 + .../lbreakout2/client/levels/NewOERG1 | 1190 ++ .../lbreakout2/client/levels/ObiWan | 206 + .../lbreakout2/client/levels/OpenSource | 615 + .../lbreakout2/client/levels/OurWorld | 780 + .../lbreakout2/client/levels/P.I.T.A. | 1313 ++ .../lbreakout2/client/levels/Pabelo | 412 + .../lbreakout2/client/levels/Patience | 985 ++ .../lbreakout2/client/levels/Pawset | 493 + .../lbreakout2/client/levels/Ph33r | 410 + .../lbreakout2/client/levels/PlayAgain | 1026 ++ .../lbreakout2/client/levels/Popcorn | 821 + .../lbreakout2/client/levels/R-World | 985 ++ .../lbreakout2/client/levels/RichQuick | 370 + .../lbreakout2/client/levels/Runes | 984 ++ .../lbreakout2/client/levels/Sadistic | 247 + .../lbreakout2/client/levels/Shimitar | 657 + .../lbreakout2/client/levels/Silly | 616 + .../lbreakout2/client/levels/SkillShot | 739 + .../lbreakout2/client/levels/Smilies | 821 + .../lbreakout2/client/levels/SnyMaxx | 944 ++ .../lbreakout2/client/levels/StarWars | 288 + .../lbreakout2/client/levels/Symmetry | 370 + .../lbreakout2/client/levels/Symmetry-MKII | 411 + .../lbreakout2/client/levels/T.C.S. | 944 ++ .../lbreakout2/client/levels/TheEnd | 534 + .../lbreakout2/client/levels/TheGauntlet | 288 + .../lbreakout2/client/levels/TimeWaster | 1641 ++ .../lbreakout2/client/levels/TrickShot | 698 + .../lbreakout2/client/levels/Tricky | 616 + .../lbreakout2/client/levels/Twilight | 1067 ++ .../lbreakout2/client/levels/Vader | 411 + .../application/lbreakout2/client/levels/WTF | 1436 ++ .../lbreakout2/client/levels/Weirdness | 1395 ++ .../lbreakout2/client/levels/Wolvie | 410 + .../lbreakout2/client/levels/WonderWalls | 575 + .../application/lbreakout2/client/levels/X | 493 + .../lbreakout2/client/levels/Yexter | 1641 ++ .../application/lbreakout2/client/levels/Yoda | 124 + .../lbreakout2/client/levels/Zigies | 411 + .../lbreakout2/client/levels/Zooligan | 657 + .../lbreakout2/client/levels/Zufallswelt | 862 + .../jni/application/lbreakout2/client/main.c | 240 + .../application/lbreakout2/client/manager.c | 892 + .../application/lbreakout2/client/manager.h | 77 + .../jni/application/lbreakout2/client/menu.c | 430 + .../jni/application/lbreakout2/client/menu.h | 115 + .../jni/application/lbreakout2/client/misc.c | 518 + .../jni/application/lbreakout2/client/misc.h | 91 + .../application/lbreakout2/client/paddle.c | 374 + .../application/lbreakout2/client/paddle.h | 43 + .../application/lbreakout2/client/player.c | 116 + .../application/lbreakout2/client/player.h | 66 + .../jni/application/lbreakout2/client/shine.c | 124 + .../jni/application/lbreakout2/client/shine.h | 49 + .../jni/application/lbreakout2/client/shots.c | 122 + .../jni/application/lbreakout2/client/shots.h | 29 + .../lbreakout2/client/shrapnells.c | 341 + .../lbreakout2/client/shrapnells.h | 75 + .../jni/application/lbreakout2/client/slot.c | 105 + .../jni/application/lbreakout2/client/slot.h | 53 + .../lbreakout2/client/sounds/Makefile.am | 18 + .../lbreakout2/client/sounds/Makefile.in | 375 + .../lbreakout2/client/sounds/attach.wav | Bin 0 -> 666 bytes .../lbreakout2/client/sounds/bonus_magnet.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/chaos.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/click.wav | Bin 0 -> 3056 bytes .../lbreakout2/client/sounds/dammit.wav | Bin 0 -> 17064 bytes .../lbreakout2/client/sounds/damn.wav | Bin 0 -> 16982 bytes .../lbreakout2/client/sounds/darkness.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/disable.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/excellent.wav | Bin 0 -> 24794 bytes .../lbreakout2/client/sounds/exp.wav | Bin 0 -> 45312 bytes .../lbreakout2/client/sounds/expand.wav | Bin 0 -> 4462 bytes .../lbreakout2/client/sounds/expl_ball.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/extraball.wav | Bin 0 -> 582 bytes .../lbreakout2/client/sounds/freeze.wav | Bin 0 -> 13704 bytes .../lbreakout2/client/sounds/gainlife.wav | Bin 0 -> 6708 bytes .../lbreakout2/client/sounds/ghost.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/goldshower.wav | Bin 0 -> 23652 bytes .../lbreakout2/client/sounds/joker.wav | Bin 0 -> 18168 bytes .../lbreakout2/client/sounds/looselife.wav | Bin 0 -> 6708 bytes .../lbreakout2/client/sounds/malus_magnet.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/menu_click.wav | Bin 0 -> 3056 bytes .../lbreakout2/client/sounds/menu_motion.wav | Bin 0 -> 3556 bytes .../lbreakout2/client/sounds/metal.wav | Bin 0 -> 25940 bytes .../client/sounds/reflect_brick.wav | Bin 0 -> 298 bytes .../client/sounds/reflect_paddle.wav | Bin 0 -> 298 bytes .../lbreakout2/client/sounds/score.wav | Bin 0 -> 2898 bytes .../lbreakout2/client/sounds/shot.wav | Bin 0 -> 13222 bytes .../lbreakout2/client/sounds/shrink.wav | Bin 0 -> 4462 bytes .../lbreakout2/client/sounds/speeddown.wav | Bin 0 -> 26152 bytes .../lbreakout2/client/sounds/speedup.wav | Bin 0 -> 18396 bytes .../lbreakout2/client/sounds/standard.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/timeadd.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/verygood.wav | Bin 0 -> 31214 bytes .../lbreakout2/client/sounds/wall.wav | Bin 0 -> 15938 bytes .../lbreakout2/client/sounds/weak_ball.wav | Bin 0 -> 5332 bytes .../lbreakout2/client/sounds/wontgiveup.wav | Bin 0 -> 31214 bytes .../jni/application/lbreakout2/client/theme.c | 704 + .../jni/application/lbreakout2/client/theme.h | 47 + .../jni/application/lbreakout2/client/value.c | 261 + .../jni/application/lbreakout2/client/value.h | 115 + .../application/lbreakout2/client/win32.ico | Bin 0 -> 11886 bytes .../application/lbreakout2/common/Makefile.am | 8 + .../application/lbreakout2/common/Makefile.in | 459 + .../application/lbreakout2/common/gettext.h | 69 + .../application/lbreakout2/common/libcommon.a | Bin 0 -> 126666 bytes .../jni/application/lbreakout2/common/list.c | 360 + .../jni/application/lbreakout2/common/list.h | 202 + .../application/lbreakout2/common/messages.h | 273 + .../jni/application/lbreakout2/common/net.c | 765 + .../jni/application/lbreakout2/common/net.h | 121 + .../application/lbreakout2/common/parser.c | 697 + .../application/lbreakout2/common/parser.h | 150 + .../jni/application/lbreakout2/common/tools.c | 385 + .../jni/application/lbreakout2/common/tools.h | 129 + .../jni/application/lbreakout2/config.guess | 1460 ++ project/jni/application/lbreakout2/config.h | 325 + .../jni/application/lbreakout2/config.h.in | 324 + .../jni/application/lbreakout2/config.rpath | 548 + .../jni/application/lbreakout2/config.status | 1298 ++ project/jni/application/lbreakout2/config.sub | 1549 ++ project/jni/application/lbreakout2/configure | 13727 ++++++++++++++++ .../jni/application/lbreakout2/configure.in | 155 + project/jni/application/lbreakout2/depcomp | 522 + .../dict/de/LC_MESSAGES/lbreakout2.mo | 1 + .../dict/fr/LC_MESSAGES/lbreakout2.mo | 1 + .../dict/tr/LC_MESSAGES/lbreakout2.mo | 1 + .../application/lbreakout2/docs/Makefile.am | 19 + .../application/lbreakout2/docs/Makefile.in | 376 + .../jni/application/lbreakout2/docs/b0.jpg | Bin 0 -> 617 bytes .../jni/application/lbreakout2/docs/b1.jpg | Bin 0 -> 1006 bytes .../jni/application/lbreakout2/docs/b2.jpg | Bin 0 -> 750 bytes .../jni/application/lbreakout2/docs/b3.jpg | Bin 0 -> 680 bytes .../jni/application/lbreakout2/docs/b4.jpg | Bin 0 -> 632 bytes .../jni/application/lbreakout2/docs/b5.jpg | Bin 0 -> 1027 bytes .../jni/application/lbreakout2/docs/b6.jpg | Bin 0 -> 616 bytes .../application/lbreakout2/docs/index.html | 380 + .../application/lbreakout2/docs/screen.jpg | Bin 0 -> 30567 bytes .../jni/application/lbreakout2/docs/warp.jpg | Bin 0 -> 602 bytes .../jni/application/lbreakout2/docs/x0.jpg | Bin 0 -> 2823 bytes .../jni/application/lbreakout2/docs/x1.jpg | Bin 0 -> 756 bytes .../jni/application/lbreakout2/docs/x10.jpg | Bin 0 -> 677 bytes .../jni/application/lbreakout2/docs/x11.jpg | Bin 0 -> 695 bytes .../jni/application/lbreakout2/docs/x12.jpg | Bin 0 -> 743 bytes .../jni/application/lbreakout2/docs/x13.jpg | Bin 0 -> 832 bytes .../jni/application/lbreakout2/docs/x14.jpg | Bin 0 -> 798 bytes .../jni/application/lbreakout2/docs/x15.jpg | Bin 0 -> 563 bytes .../jni/application/lbreakout2/docs/x16.jpg | Bin 0 -> 837 bytes .../jni/application/lbreakout2/docs/x17.jpg | Bin 0 -> 711 bytes .../jni/application/lbreakout2/docs/x18.jpg | Bin 0 -> 694 bytes .../jni/application/lbreakout2/docs/x19.jpg | Bin 0 -> 720 bytes .../jni/application/lbreakout2/docs/x2.jpg | Bin 0 -> 701 bytes .../jni/application/lbreakout2/docs/x20.jpg | Bin 0 -> 756 bytes .../jni/application/lbreakout2/docs/x21.jpg | Bin 0 -> 702 bytes .../jni/application/lbreakout2/docs/x22.jpg | Bin 0 -> 734 bytes .../jni/application/lbreakout2/docs/x23.jpg | Bin 0 -> 738 bytes .../jni/application/lbreakout2/docs/x3.jpg | Bin 0 -> 693 bytes .../jni/application/lbreakout2/docs/x4.jpg | Bin 0 -> 664 bytes .../jni/application/lbreakout2/docs/x5.jpg | Bin 0 -> 714 bytes .../jni/application/lbreakout2/docs/x6.jpg | Bin 0 -> 669 bytes .../jni/application/lbreakout2/docs/x7.jpg | Bin 0 -> 631 bytes .../jni/application/lbreakout2/docs/x8.jpg | Bin 0 -> 689 bytes .../jni/application/lbreakout2/docs/x9.jpg | Bin 0 -> 719 bytes .../application/lbreakout2/game/Makefile.am | 19 + .../application/lbreakout2/game/Makefile.in | 476 + .../jni/application/lbreakout2/game/balls.c | 1754 ++ .../jni/application/lbreakout2/game/balls.h | 155 + .../jni/application/lbreakout2/game/bricks.c | 1180 ++ .../jni/application/lbreakout2/game/bricks.h | 83 + .../jni/application/lbreakout2/game/comm.c | 610 + .../jni/application/lbreakout2/game/comm.h | 140 + .../jni/application/lbreakout2/game/extras.c | 477 + .../jni/application/lbreakout2/game/extras.h | 50 + .../jni/application/lbreakout2/game/game.c | 494 + .../jni/application/lbreakout2/game/game.h | 122 + .../application/lbreakout2/game/gamedefs.h | 508 + .../jni/application/lbreakout2/game/levels.c | 505 + .../jni/application/lbreakout2/game/levels.h | 130 + .../jni/application/lbreakout2/game/libgame.a | Bin 0 -> 358794 bytes .../application/lbreakout2/game/mathfuncs.c | 270 + .../application/lbreakout2/game/mathfuncs.h | 112 + .../jni/application/lbreakout2/game/paddle.c | 303 + .../jni/application/lbreakout2/game/paddle.h | 85 + .../jni/application/lbreakout2/game/shots.c | 178 + .../jni/application/lbreakout2/game/shots.h | 48 + .../application/lbreakout2/gui/Makefile.am | 16 + .../application/lbreakout2/gui/Makefile.in | 482 + project/jni/application/lbreakout2/gui/gui.c | 440 + project/jni/application/lbreakout2/gui/gui.h | 89 + .../jni/application/lbreakout2/gui/gui_box.c | 90 + .../jni/application/lbreakout2/gui/gui_box.h | 35 + .../application/lbreakout2/gui/gui_button.c | 193 + .../application/lbreakout2/gui/gui_button.h | 33 + .../jni/application/lbreakout2/gui/gui_edit.c | 539 + .../jni/application/lbreakout2/gui/gui_edit.h | 87 + .../jni/application/lbreakout2/gui/gui_icon.c | 119 + .../jni/application/lbreakout2/gui/gui_icon.h | 43 + .../application/lbreakout2/gui/gui_label.c | 276 + .../application/lbreakout2/gui/gui_label.h | 48 + .../jni/application/lbreakout2/gui/gui_list.c | 412 + .../jni/application/lbreakout2/gui/gui_list.h | 81 + .../lbreakout2/gui/gui_progressbar.c | 186 + .../lbreakout2/gui/gui_progressbar.h | 46 + .../lbreakout2/gui/gui_radiogroup.c | 244 + .../lbreakout2/gui/gui_radiogroup.h | 60 + .../lbreakout2/gui/gui_scrollbar.c | 350 + .../lbreakout2/gui/gui_scrollbar.h | 58 + .../lbreakout2/gui/gui_spinbutton.c | 256 + .../lbreakout2/gui/gui_spinbutton.h | 65 + .../application/lbreakout2/gui/gui_theme.c | 149 + .../application/lbreakout2/gui/gui_theme.h | 86 + .../application/lbreakout2/gui/gui_widget.c | 618 + .../application/lbreakout2/gui/gui_widget.h | 386 + .../jni/application/lbreakout2/gui/libGui.a | Bin 0 -> 449062 bytes project/jni/application/lbreakout2/gui/list.c | 360 + project/jni/application/lbreakout2/gui/list.h | 202 + project/jni/application/lbreakout2/gui/stk.c | 1466 ++ project/jni/application/lbreakout2/gui/stk.h | 502 + project/jni/application/lbreakout2/icon.png | Bin 0 -> 2049 bytes project/jni/application/lbreakout2/install-sh | 322 + .../jni/application/lbreakout2/intl/ChangeLog | 4 + .../application/lbreakout2/intl/Makefile.in | 493 + .../jni/application/lbreakout2/intl/VERSION | 1 + .../application/lbreakout2/intl/bindtextdom.c | 363 + .../application/lbreakout2/intl/charset.alias | 4 + .../lbreakout2/intl/config.charset | 608 + .../application/lbreakout2/intl/dcgettext.c | 56 + .../application/lbreakout2/intl/dcigettext.c | 1206 ++ .../application/lbreakout2/intl/dcngettext.c | 57 + .../application/lbreakout2/intl/dgettext.c | 58 + .../application/lbreakout2/intl/dngettext.c | 59 + .../application/lbreakout2/intl/eval-plural.h | 106 + .../application/lbreakout2/intl/explodename.c | 185 + .../application/lbreakout2/intl/finddomain.c | 192 + .../jni/application/lbreakout2/intl/gettext.c | 63 + .../application/lbreakout2/intl/gettextP.h | 215 + project/jni/application/lbreakout2/intl/gmo.h | 149 + .../application/lbreakout2/intl/hash-string.h | 48 + .../application/lbreakout2/intl/intl-compat.c | 131 + .../application/lbreakout2/intl/l10nflist.c | 421 + .../application/lbreakout2/intl/libgnuintl.h | 383 + .../lbreakout2/intl/libgnuintl.h.in | 383 + .../jni/application/lbreakout2/intl/libintl.a | Bin 0 -> 199084 bytes .../jni/application/lbreakout2/intl/libintl.h | 383 + .../application/lbreakout2/intl/loadinfo.h | 145 + .../application/lbreakout2/intl/loadmsgcat.c | 1420 ++ .../lbreakout2/intl/localcharset.c | 398 + .../lbreakout2/intl/localcharset.h | 42 + .../application/lbreakout2/intl/locale.alias | 78 + .../application/lbreakout2/intl/localealias.c | 414 + .../application/lbreakout2/intl/localename.c | 1142 ++ project/jni/application/lbreakout2/intl/log.c | 98 + .../application/lbreakout2/intl/ngettext.c | 65 + .../application/lbreakout2/intl/os2compat.c | 98 + .../application/lbreakout2/intl/os2compat.h | 46 + .../jni/application/lbreakout2/intl/osdep.c | 24 + .../application/lbreakout2/intl/plural-exp.c | 154 + .../application/lbreakout2/intl/plural-exp.h | 118 + .../jni/application/lbreakout2/intl/plural.c | 1490 ++ .../jni/application/lbreakout2/intl/plural.y | 381 + .../application/lbreakout2/intl/printf-args.c | 119 + .../application/lbreakout2/intl/printf-args.h | 137 + .../lbreakout2/intl/printf-parse.c | 537 + .../lbreakout2/intl/printf-parse.h | 75 + .../jni/application/lbreakout2/intl/printf.c | 371 + .../application/lbreakout2/intl/ref-add.sed | 10 + .../application/lbreakout2/intl/ref-add.sin | 31 + .../application/lbreakout2/intl/ref-del.sed | 5 + .../application/lbreakout2/intl/ref-del.sin | 26 + .../application/lbreakout2/intl/relocatable.c | 449 + .../application/lbreakout2/intl/relocatable.h | 77 + .../application/lbreakout2/intl/textdomain.c | 141 + .../application/lbreakout2/intl/vasnprintf.c | 887 + .../application/lbreakout2/intl/vasnprintf.h | 61 + .../application/lbreakout2/intl/vasnwprintf.h | 46 + .../lbreakout2/intl/wprintf-parse.h | 75 + .../jni/application/lbreakout2/intl/xsize.h | 109 + .../application/lbreakout2/lbreakout2.desktop | 7 + .../lbreakout2/lbreakout2.desktop.in | 7 + .../application/lbreakout2/lbreakout2.spec | 47 + .../application/lbreakout2/lbreakout32.gif | Bin 0 -> 1503 bytes .../application/lbreakout2/lbreakout48.gif | Bin 0 -> 1891 bytes .../application/lbreakout2/libapplication.so | Bin 0 -> 947024 bytes .../jni/application/lbreakout2/m4/Makefile.am | 1 + .../jni/application/lbreakout2/m4/Makefile.in | 357 + .../jni/application/lbreakout2/m4/codeset.m4 | 23 + .../jni/application/lbreakout2/m4/gettext.m4 | 487 + .../jni/application/lbreakout2/m4/glibc21.m4 | 32 + .../jni/application/lbreakout2/m4/iconv.m4 | 103 + .../jni/application/lbreakout2/m4/intdiv0.m4 | 72 + .../jni/application/lbreakout2/m4/intmax.m4 | 32 + .../application/lbreakout2/m4/inttypes-pri.m4 | 32 + .../jni/application/lbreakout2/m4/inttypes.m4 | 27 + .../application/lbreakout2/m4/inttypes_h.m4 | 28 + .../application/lbreakout2/m4/isc-posix.m4 | 26 + .../application/lbreakout2/m4/lcmessage.m4 | 32 + .../jni/application/lbreakout2/m4/lib-ld.m4 | 112 + .../jni/application/lbreakout2/m4/lib-link.m4 | 551 + .../application/lbreakout2/m4/lib-prefix.m4 | 155 + .../application/lbreakout2/m4/longdouble.m4 | 30 + .../jni/application/lbreakout2/m4/longlong.m4 | 25 + project/jni/application/lbreakout2/m4/nls.m4 | 49 + project/jni/application/lbreakout2/m4/po.m4 | 426 + .../application/lbreakout2/m4/printf-posix.m4 | 46 + .../jni/application/lbreakout2/m4/progtest.m4 | 91 + .../jni/application/lbreakout2/m4/signed.m4 | 19 + .../jni/application/lbreakout2/m4/size_max.m4 | 61 + .../jni/application/lbreakout2/m4/stdint_h.m4 | 28 + .../application/lbreakout2/m4/uintmax_t.m4 | 32 + .../application/lbreakout2/m4/ulonglong.m4 | 25 + .../jni/application/lbreakout2/m4/wchar_t.m4 | 22 + .../jni/application/lbreakout2/m4/wint_t.m4 | 22 + .../jni/application/lbreakout2/m4/xsize.m4 | 14 + project/jni/application/lbreakout2/missing | 360 + .../jni/application/lbreakout2/mkinstalldirs | 150 + project/jni/application/lbreakout2/po/LINGUAS | 1 + .../jni/application/lbreakout2/po/Makefile.in | 366 + .../application/lbreakout2/po/Makefile.in.in | 366 + .../jni/application/lbreakout2/po/Makevars | 41 + .../jni/application/lbreakout2/po/POTFILES | 20 + .../jni/application/lbreakout2/po/POTFILES.in | 20 + .../jni/application/lbreakout2/po/Rules-quot | 47 + .../application/lbreakout2/po/boldquot.sed | 10 + project/jni/application/lbreakout2/po/de.gmo | Bin 0 -> 60329 bytes project/jni/application/lbreakout2/po/de.po | 2568 +++ .../lbreakout2/po/en@boldquot.header | 25 + .../application/lbreakout2/po/en@quot.header | 22 + project/jni/application/lbreakout2/po/fr.gmo | Bin 0 -> 60152 bytes project/jni/application/lbreakout2/po/fr.po | 2579 +++ .../lbreakout2/po/insert-header.sin | 23 + .../application/lbreakout2/po/lbreakout2.pot | 2244 +++ .../jni/application/lbreakout2/po/quot.sed | 6 + .../lbreakout2/po/remove-potcdate.sin | 19 + .../jni/application/lbreakout2/po/stamp-po | 1 + project/jni/application/lbreakout2/po/tr.gmo | Bin 0 -> 60532 bytes project/jni/application/lbreakout2/po/tr.po | 2548 +++ .../application/lbreakout2/server/Makefile.am | 12 + .../application/lbreakout2/server/Makefile.in | 592 + .../lbreakout2/server/levels/Makefile.am | 13 + .../lbreakout2/server/levels/Makefile.in | 368 + .../lbreakout2/server/levels/N_Arenas | 247 + .../lbreakout2/server/levels/N_Snapshots | 411 + .../application/lbreakout2/server/server.c | 1193 ++ .../application/lbreakout2/server/server.h | 121 + .../lbreakout2/server/server_game.c | 616 + .../lbreakout2/server/server_game.h | 57 + project/jni/application/lbreakout2/stamp-h1 | 1 + project/jni/application/lbreakout2/touchall | 7 + .../jni/application/lbreakout2/win32_mancomp | 16 + .../application/lbreakout2/win32_preparchive | 22 + 607 files changed, 192118 insertions(+) create mode 100644 project/jni/application/lbreakout2/ABOUT-NLS create mode 100644 project/jni/application/lbreakout2/AUTHORS create mode 100644 project/jni/application/lbreakout2/AndroidAppSettings.cfg create mode 100755 project/jni/application/lbreakout2/AndroidBuild.sh create mode 100644 project/jni/application/lbreakout2/COPYING create mode 100644 project/jni/application/lbreakout2/ChangeLog create mode 100644 project/jni/application/lbreakout2/INSTALL create mode 100644 project/jni/application/lbreakout2/Makefile.am create mode 100644 project/jni/application/lbreakout2/Makefile.in create mode 100644 project/jni/application/lbreakout2/NEWS create mode 100644 project/jni/application/lbreakout2/README create mode 100644 project/jni/application/lbreakout2/README-SDL.txt create mode 100644 project/jni/application/lbreakout2/TODO create mode 100644 project/jni/application/lbreakout2/acinclude.m4 create mode 100644 project/jni/application/lbreakout2/aclocal.m4 create mode 100644 project/jni/application/lbreakout2/client/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/balls.c create mode 100644 project/jni/application/lbreakout2/client/balls.h create mode 100644 project/jni/application/lbreakout2/client/bricks.c create mode 100644 project/jni/application/lbreakout2/client/bricks.h create mode 100644 project/jni/application/lbreakout2/client/chart.c create mode 100644 project/jni/application/lbreakout2/client/chart.h create mode 100644 project/jni/application/lbreakout2/client/client.c create mode 100644 project/jni/application/lbreakout2/client/client.h create mode 100644 project/jni/application/lbreakout2/client/client_data.c create mode 100644 project/jni/application/lbreakout2/client/client_data.h create mode 100644 project/jni/application/lbreakout2/client/client_handlers.c create mode 100644 project/jni/application/lbreakout2/client/client_handlers.h create mode 100644 project/jni/application/lbreakout2/client/client_recv.c create mode 100644 project/jni/application/lbreakout2/client/comm.c create mode 100644 project/jni/application/lbreakout2/client/comm.h create mode 100644 project/jni/application/lbreakout2/client/config.c create mode 100644 project/jni/application/lbreakout2/client/config.h create mode 100644 project/jni/application/lbreakout2/client/credit.c create mode 100644 project/jni/application/lbreakout2/client/credit.h create mode 100644 project/jni/application/lbreakout2/client/display.c create mode 100644 project/jni/application/lbreakout2/client/display.h create mode 100644 project/jni/application/lbreakout2/client/editor.c create mode 100644 project/jni/application/lbreakout2/client/editor.h create mode 100644 project/jni/application/lbreakout2/client/empty.hscr create mode 100644 project/jni/application/lbreakout2/client/event.c create mode 100644 project/jni/application/lbreakout2/client/event.h create mode 100644 project/jni/application/lbreakout2/client/extras.c create mode 100644 project/jni/application/lbreakout2/client/extras.h create mode 100644 project/jni/application/lbreakout2/client/file.c create mode 100644 project/jni/application/lbreakout2/client/file.h create mode 100644 project/jni/application/lbreakout2/client/frame.c create mode 100644 project/jni/application/lbreakout2/client/frame.h create mode 100644 project/jni/application/lbreakout2/client/game.c create mode 100644 project/jni/application/lbreakout2/client/game.h create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/ABOUT create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/README create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/back0.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/back1.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/back2.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/back3.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/back4.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/back5.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/bricks.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/extras.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/fr_left.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/fr_right.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/fr_top.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/life.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/menuback.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/paddle.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/shot.png create mode 100644 project/jni/application/lbreakout2/client/gfx/AbsoluteB/weapon.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Classic/ABOUT create mode 100644 project/jni/application/lbreakout2/client/gfx/Classic/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/gfx/Classic/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/gfx/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/gfx/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/ABOUT create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/back0.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/back1.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/back2.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/back3.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/back4.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/back5.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/bricks.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/extras.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/fr_left.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/fr_mp_left.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/fr_mp_right.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/fr_right.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/fr_top.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/life.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Moiree/paddle.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/README create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/back0.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/back1.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/back2.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/back3.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/back4.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/bricks.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/fr_left.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/fr_right.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/fr_top.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/life.png create mode 100644 project/jni/application/lbreakout2/client/gfx/Oz/paddle.png create mode 100644 project/jni/application/lbreakout2/client/gfx/ammo.png create mode 100644 project/jni/application/lbreakout2/client/gfx/back0.png create mode 100644 project/jni/application/lbreakout2/client/gfx/back1.png create mode 100644 project/jni/application/lbreakout2/client/gfx/back2.png create mode 100644 project/jni/application/lbreakout2/client/gfx/back3.png create mode 100644 project/jni/application/lbreakout2/client/gfx/back4.png create mode 100644 project/jni/application/lbreakout2/client/gfx/back5.png create mode 100644 project/jni/application/lbreakout2/client/gfx/ball.png create mode 100644 project/jni/application/lbreakout2/client/gfx/balloon.png create mode 100644 project/jni/application/lbreakout2/client/gfx/balloon_peek.png create mode 100644 project/jni/application/lbreakout2/client/gfx/bricks.png create mode 100644 project/jni/application/lbreakout2/client/gfx/buttons.png create mode 100644 project/jni/application/lbreakout2/client/gfx/confirm_buttons.png create mode 100644 project/jni/application/lbreakout2/client/gfx/cr_back.png create mode 100644 project/jni/application/lbreakout2/client/gfx/explosions.png create mode 100644 project/jni/application/lbreakout2/client/gfx/explosions_dark.png create mode 100644 project/jni/application/lbreakout2/client/gfx/extras.png create mode 100644 project/jni/application/lbreakout2/client/gfx/f_frame.png create mode 100644 project/jni/application/lbreakout2/client/gfx/f_game.png create mode 100644 project/jni/application/lbreakout2/client/gfx/f_small_red.png create mode 100644 project/jni/application/lbreakout2/client/gfx/f_small_white.png create mode 100644 project/jni/application/lbreakout2/client/gfx/f_small_yellow.png create mode 100644 project/jni/application/lbreakout2/client/gfx/f_tiny_black.png create mode 100644 project/jni/application/lbreakout2/client/gfx/f_white.png create mode 100644 project/jni/application/lbreakout2/client/gfx/f_yellow.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_hori.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_left.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_llc.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_luc.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_mp_left.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_mp_right.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_right.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_rlc.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_ruc.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_top.png create mode 100644 project/jni/application/lbreakout2/client/gfx/fr_vert.png create mode 100644 project/jni/application/lbreakout2/client/gfx/life.png create mode 100644 project/jni/application/lbreakout2/client/gfx/loading.png create mode 100644 project/jni/application/lbreakout2/client/gfx/menuback.png create mode 100644 project/jni/application/lbreakout2/client/gfx/nukeback.png create mode 100644 project/jni/application/lbreakout2/client/gfx/paddle.png create mode 100644 project/jni/application/lbreakout2/client/gfx/scroll_down.png create mode 100644 project/jni/application/lbreakout2/client/gfx/scroll_track.png create mode 100644 project/jni/application/lbreakout2/client/gfx/scroll_up.png create mode 100644 project/jni/application/lbreakout2/client/gfx/sel_frame.png create mode 100644 project/jni/application/lbreakout2/client/gfx/shine.png create mode 100644 project/jni/application/lbreakout2/client/gfx/shot.png create mode 100644 project/jni/application/lbreakout2/client/gfx/warp.png create mode 100644 project/jni/application/lbreakout2/client/gfx/weapon.png create mode 100644 project/jni/application/lbreakout2/client/gfx/win_icon.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/gui_theme/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/gui_theme/box_frame.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/box_wallpaper.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/button_frame_clicked.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/button_frame_normal.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/button_wallpaper_focused.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/button_wallpaper_normal.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/checkbox.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/click.wav create mode 100644 project/jni/application/lbreakout2/client/gui_theme/edit.wav create mode 100644 project/jni/application/lbreakout2/client/gui_theme/font.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/list_item_color.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/progress_high.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/progress_low.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/progress_medium.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/scrollbar_arrows.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/spinbutton_arrows.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/widget_frame.png create mode 100644 project/jni/application/lbreakout2/client/gui_theme/widget_wallpaper.png create mode 100644 project/jni/application/lbreakout2/client/help.c create mode 100644 project/jni/application/lbreakout2/client/help.h create mode 100644 project/jni/application/lbreakout2/client/hint.c create mode 100644 project/jni/application/lbreakout2/client/hint.h create mode 100644 project/jni/application/lbreakout2/client/item.c create mode 100644 project/jni/application/lbreakout2/client/item.h create mode 100644 project/jni/application/lbreakout2/client/lbreakout.h create mode 100644 project/jni/application/lbreakout2/client/levels/1010011010 create mode 100644 project/jni/application/lbreakout2/client/levels/Abc create mode 100644 project/jni/application/lbreakout2/client/levels/Afl create mode 100644 project/jni/application/lbreakout2/client/levels/Alex create mode 100644 project/jni/application/lbreakout2/client/levels/Alexandre create mode 100644 project/jni/application/lbreakout2/client/levels/AllNighter create mode 100644 project/jni/application/lbreakout2/client/levels/Arcade create mode 100644 project/jni/application/lbreakout2/client/levels/Arkanoid create mode 100644 project/jni/application/lbreakout2/client/levels/BeOS-4ever create mode 100644 project/jni/application/lbreakout2/client/levels/Bertrand create mode 100644 project/jni/application/lbreakout2/client/levels/BigBang create mode 100644 project/jni/application/lbreakout2/client/levels/Biolab428 create mode 100644 project/jni/application/lbreakout2/client/levels/Blues create mode 100644 project/jni/application/lbreakout2/client/levels/Bombs create mode 100644 project/jni/application/lbreakout2/client/levels/CalendarFun create mode 100644 project/jni/application/lbreakout2/client/levels/Celine create mode 100644 project/jni/application/lbreakout2/client/levels/Chaos create mode 100644 project/jni/application/lbreakout2/client/levels/Choices create mode 100644 project/jni/application/lbreakout2/client/levels/Circle create mode 100644 project/jni/application/lbreakout2/client/levels/Classique create mode 100644 project/jni/application/lbreakout2/client/levels/Color create mode 100644 project/jni/application/lbreakout2/client/levels/Composers create mode 100644 project/jni/application/lbreakout2/client/levels/Crossing create mode 100644 project/jni/application/lbreakout2/client/levels/D2K create mode 100644 project/jni/application/lbreakout2/client/levels/Daves create mode 100644 project/jni/application/lbreakout2/client/levels/Demons create mode 100644 project/jni/application/lbreakout2/client/levels/Family create mode 100644 project/jni/application/lbreakout2/client/levels/Fantaisie create mode 100644 project/jni/application/lbreakout2/client/levels/FatalDoomsday create mode 100644 project/jni/application/lbreakout2/client/levels/FatalDoomsday2 create mode 100644 project/jni/application/lbreakout2/client/levels/Flower create mode 100644 project/jni/application/lbreakout2/client/levels/Fly create mode 100644 project/jni/application/lbreakout2/client/levels/Freek create mode 100644 project/jni/application/lbreakout2/client/levels/FunCity create mode 100644 project/jni/application/lbreakout2/client/levels/Gatinha create mode 100644 project/jni/application/lbreakout2/client/levels/GreenWall create mode 100644 project/jni/application/lbreakout2/client/levels/GreenWall2 create mode 100644 project/jni/application/lbreakout2/client/levels/GreenWall3 create mode 100644 project/jni/application/lbreakout2/client/levels/GreenWall4 create mode 100644 project/jni/application/lbreakout2/client/levels/Hans create mode 100644 project/jni/application/lbreakout2/client/levels/HereWeGo create mode 100644 project/jni/application/lbreakout2/client/levels/Heroes create mode 100644 project/jni/application/lbreakout2/client/levels/HighBall create mode 100644 project/jni/application/lbreakout2/client/levels/Holidays create mode 100644 project/jni/application/lbreakout2/client/levels/Hommage create mode 100644 project/jni/application/lbreakout2/client/levels/Impossibility create mode 100644 project/jni/application/lbreakout2/client/levels/Invisible create mode 100644 project/jni/application/lbreakout2/client/levels/IoriYagami create mode 100644 project/jni/application/lbreakout2/client/levels/Iris create mode 100644 project/jni/application/lbreakout2/client/levels/IrrenhausAh create mode 100644 project/jni/application/lbreakout2/client/levels/Izusiowe create mode 100644 project/jni/application/lbreakout2/client/levels/JediAdventure create mode 100644 project/jni/application/lbreakout2/client/levels/Kazan-1 create mode 100644 project/jni/application/lbreakout2/client/levels/Kevin create mode 100644 project/jni/application/lbreakout2/client/levels/KungFu create mode 100644 project/jni/application/lbreakout2/client/levels/LBreakout1 create mode 100644 project/jni/application/lbreakout2/client/levels/LBreakout2 create mode 100644 project/jni/application/lbreakout2/client/levels/Lapis create mode 100644 project/jni/application/lbreakout2/client/levels/Lattsville create mode 100644 project/jni/application/lbreakout2/client/levels/LinuxFun create mode 100644 project/jni/application/lbreakout2/client/levels/Lord create mode 100644 project/jni/application/lbreakout2/client/levels/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/levels/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/levels/Maze create mode 100644 project/jni/application/lbreakout2/client/levels/Megadoomer create mode 100644 project/jni/application/lbreakout2/client/levels/MontyHall create mode 100644 project/jni/application/lbreakout2/client/levels/NES create mode 100644 project/jni/application/lbreakout2/client/levels/N_Arenas create mode 100644 project/jni/application/lbreakout2/client/levels/N_Snapshots create mode 100644 project/jni/application/lbreakout2/client/levels/Nations create mode 100644 project/jni/application/lbreakout2/client/levels/Negundoid create mode 100644 project/jni/application/lbreakout2/client/levels/NewOERG1 create mode 100644 project/jni/application/lbreakout2/client/levels/ObiWan create mode 100644 project/jni/application/lbreakout2/client/levels/OpenSource create mode 100644 project/jni/application/lbreakout2/client/levels/OurWorld create mode 100644 project/jni/application/lbreakout2/client/levels/P.I.T.A. create mode 100644 project/jni/application/lbreakout2/client/levels/Pabelo create mode 100644 project/jni/application/lbreakout2/client/levels/Patience create mode 100644 project/jni/application/lbreakout2/client/levels/Pawset create mode 100644 project/jni/application/lbreakout2/client/levels/Ph33r create mode 100644 project/jni/application/lbreakout2/client/levels/PlayAgain create mode 100644 project/jni/application/lbreakout2/client/levels/Popcorn create mode 100644 project/jni/application/lbreakout2/client/levels/R-World create mode 100644 project/jni/application/lbreakout2/client/levels/RichQuick create mode 100644 project/jni/application/lbreakout2/client/levels/Runes create mode 100644 project/jni/application/lbreakout2/client/levels/Sadistic create mode 100644 project/jni/application/lbreakout2/client/levels/Shimitar create mode 100644 project/jni/application/lbreakout2/client/levels/Silly create mode 100644 project/jni/application/lbreakout2/client/levels/SkillShot create mode 100644 project/jni/application/lbreakout2/client/levels/Smilies create mode 100644 project/jni/application/lbreakout2/client/levels/SnyMaxx create mode 100644 project/jni/application/lbreakout2/client/levels/StarWars create mode 100644 project/jni/application/lbreakout2/client/levels/Symmetry create mode 100644 project/jni/application/lbreakout2/client/levels/Symmetry-MKII create mode 100644 project/jni/application/lbreakout2/client/levels/T.C.S. create mode 100644 project/jni/application/lbreakout2/client/levels/TheEnd create mode 100644 project/jni/application/lbreakout2/client/levels/TheGauntlet create mode 100644 project/jni/application/lbreakout2/client/levels/TimeWaster create mode 100644 project/jni/application/lbreakout2/client/levels/TrickShot create mode 100644 project/jni/application/lbreakout2/client/levels/Tricky create mode 100644 project/jni/application/lbreakout2/client/levels/Twilight create mode 100644 project/jni/application/lbreakout2/client/levels/Vader create mode 100644 project/jni/application/lbreakout2/client/levels/WTF create mode 100644 project/jni/application/lbreakout2/client/levels/Weirdness create mode 100644 project/jni/application/lbreakout2/client/levels/Wolvie create mode 100644 project/jni/application/lbreakout2/client/levels/WonderWalls create mode 100644 project/jni/application/lbreakout2/client/levels/X create mode 100644 project/jni/application/lbreakout2/client/levels/Yexter create mode 100644 project/jni/application/lbreakout2/client/levels/Yoda create mode 100644 project/jni/application/lbreakout2/client/levels/Zigies create mode 100644 project/jni/application/lbreakout2/client/levels/Zooligan create mode 100644 project/jni/application/lbreakout2/client/levels/Zufallswelt create mode 100644 project/jni/application/lbreakout2/client/main.c create mode 100644 project/jni/application/lbreakout2/client/manager.c create mode 100644 project/jni/application/lbreakout2/client/manager.h create mode 100644 project/jni/application/lbreakout2/client/menu.c create mode 100644 project/jni/application/lbreakout2/client/menu.h create mode 100644 project/jni/application/lbreakout2/client/misc.c create mode 100644 project/jni/application/lbreakout2/client/misc.h create mode 100644 project/jni/application/lbreakout2/client/paddle.c create mode 100644 project/jni/application/lbreakout2/client/paddle.h create mode 100644 project/jni/application/lbreakout2/client/player.c create mode 100644 project/jni/application/lbreakout2/client/player.h create mode 100644 project/jni/application/lbreakout2/client/shine.c create mode 100644 project/jni/application/lbreakout2/client/shine.h create mode 100644 project/jni/application/lbreakout2/client/shots.c create mode 100644 project/jni/application/lbreakout2/client/shots.h create mode 100644 project/jni/application/lbreakout2/client/shrapnells.c create mode 100644 project/jni/application/lbreakout2/client/shrapnells.h create mode 100644 project/jni/application/lbreakout2/client/slot.c create mode 100644 project/jni/application/lbreakout2/client/slot.h create mode 100644 project/jni/application/lbreakout2/client/sounds/Makefile.am create mode 100644 project/jni/application/lbreakout2/client/sounds/Makefile.in create mode 100644 project/jni/application/lbreakout2/client/sounds/attach.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/bonus_magnet.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/chaos.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/click.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/dammit.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/damn.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/darkness.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/disable.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/excellent.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/exp.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/expand.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/expl_ball.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/extraball.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/freeze.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/gainlife.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/ghost.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/goldshower.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/joker.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/looselife.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/malus_magnet.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/menu_click.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/menu_motion.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/metal.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/reflect_brick.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/reflect_paddle.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/score.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/shot.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/shrink.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/speeddown.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/speedup.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/standard.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/timeadd.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/verygood.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/wall.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/weak_ball.wav create mode 100644 project/jni/application/lbreakout2/client/sounds/wontgiveup.wav create mode 100644 project/jni/application/lbreakout2/client/theme.c create mode 100644 project/jni/application/lbreakout2/client/theme.h create mode 100644 project/jni/application/lbreakout2/client/value.c create mode 100644 project/jni/application/lbreakout2/client/value.h create mode 100644 project/jni/application/lbreakout2/client/win32.ico create mode 100644 project/jni/application/lbreakout2/common/Makefile.am create mode 100644 project/jni/application/lbreakout2/common/Makefile.in create mode 100644 project/jni/application/lbreakout2/common/gettext.h create mode 100644 project/jni/application/lbreakout2/common/libcommon.a create mode 100644 project/jni/application/lbreakout2/common/list.c create mode 100644 project/jni/application/lbreakout2/common/list.h create mode 100644 project/jni/application/lbreakout2/common/messages.h create mode 100644 project/jni/application/lbreakout2/common/net.c create mode 100644 project/jni/application/lbreakout2/common/net.h create mode 100644 project/jni/application/lbreakout2/common/parser.c create mode 100644 project/jni/application/lbreakout2/common/parser.h create mode 100644 project/jni/application/lbreakout2/common/tools.c create mode 100644 project/jni/application/lbreakout2/common/tools.h create mode 100755 project/jni/application/lbreakout2/config.guess create mode 100644 project/jni/application/lbreakout2/config.h create mode 100644 project/jni/application/lbreakout2/config.h.in create mode 100755 project/jni/application/lbreakout2/config.rpath create mode 100755 project/jni/application/lbreakout2/config.status create mode 100755 project/jni/application/lbreakout2/config.sub create mode 100755 project/jni/application/lbreakout2/configure create mode 100644 project/jni/application/lbreakout2/configure.in create mode 100755 project/jni/application/lbreakout2/depcomp create mode 120000 project/jni/application/lbreakout2/dict/de/LC_MESSAGES/lbreakout2.mo create mode 120000 project/jni/application/lbreakout2/dict/fr/LC_MESSAGES/lbreakout2.mo create mode 120000 project/jni/application/lbreakout2/dict/tr/LC_MESSAGES/lbreakout2.mo create mode 100644 project/jni/application/lbreakout2/docs/Makefile.am create mode 100644 project/jni/application/lbreakout2/docs/Makefile.in create mode 100644 project/jni/application/lbreakout2/docs/b0.jpg create mode 100644 project/jni/application/lbreakout2/docs/b1.jpg create mode 100644 project/jni/application/lbreakout2/docs/b2.jpg create mode 100644 project/jni/application/lbreakout2/docs/b3.jpg create mode 100644 project/jni/application/lbreakout2/docs/b4.jpg create mode 100644 project/jni/application/lbreakout2/docs/b5.jpg create mode 100644 project/jni/application/lbreakout2/docs/b6.jpg create mode 100644 project/jni/application/lbreakout2/docs/index.html create mode 100644 project/jni/application/lbreakout2/docs/screen.jpg create mode 100644 project/jni/application/lbreakout2/docs/warp.jpg create mode 100644 project/jni/application/lbreakout2/docs/x0.jpg create mode 100644 project/jni/application/lbreakout2/docs/x1.jpg create mode 100644 project/jni/application/lbreakout2/docs/x10.jpg create mode 100644 project/jni/application/lbreakout2/docs/x11.jpg create mode 100644 project/jni/application/lbreakout2/docs/x12.jpg create mode 100644 project/jni/application/lbreakout2/docs/x13.jpg create mode 100644 project/jni/application/lbreakout2/docs/x14.jpg create mode 100644 project/jni/application/lbreakout2/docs/x15.jpg create mode 100644 project/jni/application/lbreakout2/docs/x16.jpg create mode 100644 project/jni/application/lbreakout2/docs/x17.jpg create mode 100644 project/jni/application/lbreakout2/docs/x18.jpg create mode 100644 project/jni/application/lbreakout2/docs/x19.jpg create mode 100644 project/jni/application/lbreakout2/docs/x2.jpg create mode 100644 project/jni/application/lbreakout2/docs/x20.jpg create mode 100644 project/jni/application/lbreakout2/docs/x21.jpg create mode 100644 project/jni/application/lbreakout2/docs/x22.jpg create mode 100644 project/jni/application/lbreakout2/docs/x23.jpg create mode 100644 project/jni/application/lbreakout2/docs/x3.jpg create mode 100644 project/jni/application/lbreakout2/docs/x4.jpg create mode 100644 project/jni/application/lbreakout2/docs/x5.jpg create mode 100644 project/jni/application/lbreakout2/docs/x6.jpg create mode 100644 project/jni/application/lbreakout2/docs/x7.jpg create mode 100644 project/jni/application/lbreakout2/docs/x8.jpg create mode 100644 project/jni/application/lbreakout2/docs/x9.jpg create mode 100644 project/jni/application/lbreakout2/game/Makefile.am create mode 100644 project/jni/application/lbreakout2/game/Makefile.in create mode 100644 project/jni/application/lbreakout2/game/balls.c create mode 100644 project/jni/application/lbreakout2/game/balls.h create mode 100644 project/jni/application/lbreakout2/game/bricks.c create mode 100644 project/jni/application/lbreakout2/game/bricks.h create mode 100644 project/jni/application/lbreakout2/game/comm.c create mode 100644 project/jni/application/lbreakout2/game/comm.h create mode 100644 project/jni/application/lbreakout2/game/extras.c create mode 100644 project/jni/application/lbreakout2/game/extras.h create mode 100644 project/jni/application/lbreakout2/game/game.c create mode 100644 project/jni/application/lbreakout2/game/game.h create mode 100644 project/jni/application/lbreakout2/game/gamedefs.h create mode 100644 project/jni/application/lbreakout2/game/levels.c create mode 100644 project/jni/application/lbreakout2/game/levels.h create mode 100644 project/jni/application/lbreakout2/game/libgame.a create mode 100644 project/jni/application/lbreakout2/game/mathfuncs.c create mode 100644 project/jni/application/lbreakout2/game/mathfuncs.h create mode 100644 project/jni/application/lbreakout2/game/paddle.c create mode 100644 project/jni/application/lbreakout2/game/paddle.h create mode 100644 project/jni/application/lbreakout2/game/shots.c create mode 100644 project/jni/application/lbreakout2/game/shots.h create mode 100644 project/jni/application/lbreakout2/gui/Makefile.am create mode 100644 project/jni/application/lbreakout2/gui/Makefile.in create mode 100644 project/jni/application/lbreakout2/gui/gui.c create mode 100644 project/jni/application/lbreakout2/gui/gui.h create mode 100644 project/jni/application/lbreakout2/gui/gui_box.c create mode 100644 project/jni/application/lbreakout2/gui/gui_box.h create mode 100644 project/jni/application/lbreakout2/gui/gui_button.c create mode 100644 project/jni/application/lbreakout2/gui/gui_button.h create mode 100644 project/jni/application/lbreakout2/gui/gui_edit.c create mode 100644 project/jni/application/lbreakout2/gui/gui_edit.h create mode 100644 project/jni/application/lbreakout2/gui/gui_icon.c create mode 100644 project/jni/application/lbreakout2/gui/gui_icon.h create mode 100644 project/jni/application/lbreakout2/gui/gui_label.c create mode 100644 project/jni/application/lbreakout2/gui/gui_label.h create mode 100644 project/jni/application/lbreakout2/gui/gui_list.c create mode 100644 project/jni/application/lbreakout2/gui/gui_list.h create mode 100644 project/jni/application/lbreakout2/gui/gui_progressbar.c create mode 100644 project/jni/application/lbreakout2/gui/gui_progressbar.h create mode 100644 project/jni/application/lbreakout2/gui/gui_radiogroup.c create mode 100644 project/jni/application/lbreakout2/gui/gui_radiogroup.h create mode 100644 project/jni/application/lbreakout2/gui/gui_scrollbar.c create mode 100644 project/jni/application/lbreakout2/gui/gui_scrollbar.h create mode 100644 project/jni/application/lbreakout2/gui/gui_spinbutton.c create mode 100644 project/jni/application/lbreakout2/gui/gui_spinbutton.h create mode 100644 project/jni/application/lbreakout2/gui/gui_theme.c create mode 100644 project/jni/application/lbreakout2/gui/gui_theme.h create mode 100644 project/jni/application/lbreakout2/gui/gui_widget.c create mode 100644 project/jni/application/lbreakout2/gui/gui_widget.h create mode 100644 project/jni/application/lbreakout2/gui/libGui.a create mode 100644 project/jni/application/lbreakout2/gui/list.c create mode 100644 project/jni/application/lbreakout2/gui/list.h create mode 100644 project/jni/application/lbreakout2/gui/stk.c create mode 100644 project/jni/application/lbreakout2/gui/stk.h create mode 100644 project/jni/application/lbreakout2/icon.png create mode 100755 project/jni/application/lbreakout2/install-sh create mode 100644 project/jni/application/lbreakout2/intl/ChangeLog create mode 100644 project/jni/application/lbreakout2/intl/Makefile.in create mode 100644 project/jni/application/lbreakout2/intl/VERSION create mode 100644 project/jni/application/lbreakout2/intl/bindtextdom.c create mode 100644 project/jni/application/lbreakout2/intl/charset.alias create mode 100755 project/jni/application/lbreakout2/intl/config.charset create mode 100644 project/jni/application/lbreakout2/intl/dcgettext.c create mode 100644 project/jni/application/lbreakout2/intl/dcigettext.c create mode 100644 project/jni/application/lbreakout2/intl/dcngettext.c create mode 100644 project/jni/application/lbreakout2/intl/dgettext.c create mode 100644 project/jni/application/lbreakout2/intl/dngettext.c create mode 100644 project/jni/application/lbreakout2/intl/eval-plural.h create mode 100644 project/jni/application/lbreakout2/intl/explodename.c create mode 100644 project/jni/application/lbreakout2/intl/finddomain.c create mode 100644 project/jni/application/lbreakout2/intl/gettext.c create mode 100644 project/jni/application/lbreakout2/intl/gettextP.h create mode 100644 project/jni/application/lbreakout2/intl/gmo.h create mode 100644 project/jni/application/lbreakout2/intl/hash-string.h create mode 100644 project/jni/application/lbreakout2/intl/intl-compat.c create mode 100644 project/jni/application/lbreakout2/intl/l10nflist.c create mode 100644 project/jni/application/lbreakout2/intl/libgnuintl.h create mode 100644 project/jni/application/lbreakout2/intl/libgnuintl.h.in create mode 100644 project/jni/application/lbreakout2/intl/libintl.a create mode 100644 project/jni/application/lbreakout2/intl/libintl.h create mode 100644 project/jni/application/lbreakout2/intl/loadinfo.h create mode 100644 project/jni/application/lbreakout2/intl/loadmsgcat.c create mode 100644 project/jni/application/lbreakout2/intl/localcharset.c create mode 100644 project/jni/application/lbreakout2/intl/localcharset.h create mode 100644 project/jni/application/lbreakout2/intl/locale.alias create mode 100644 project/jni/application/lbreakout2/intl/localealias.c create mode 100644 project/jni/application/lbreakout2/intl/localename.c create mode 100644 project/jni/application/lbreakout2/intl/log.c create mode 100644 project/jni/application/lbreakout2/intl/ngettext.c create mode 100644 project/jni/application/lbreakout2/intl/os2compat.c create mode 100644 project/jni/application/lbreakout2/intl/os2compat.h create mode 100644 project/jni/application/lbreakout2/intl/osdep.c create mode 100644 project/jni/application/lbreakout2/intl/plural-exp.c create mode 100644 project/jni/application/lbreakout2/intl/plural-exp.h create mode 100644 project/jni/application/lbreakout2/intl/plural.c create mode 100644 project/jni/application/lbreakout2/intl/plural.y create mode 100644 project/jni/application/lbreakout2/intl/printf-args.c create mode 100644 project/jni/application/lbreakout2/intl/printf-args.h create mode 100644 project/jni/application/lbreakout2/intl/printf-parse.c create mode 100644 project/jni/application/lbreakout2/intl/printf-parse.h create mode 100644 project/jni/application/lbreakout2/intl/printf.c create mode 100644 project/jni/application/lbreakout2/intl/ref-add.sed create mode 100644 project/jni/application/lbreakout2/intl/ref-add.sin create mode 100644 project/jni/application/lbreakout2/intl/ref-del.sed create mode 100644 project/jni/application/lbreakout2/intl/ref-del.sin create mode 100644 project/jni/application/lbreakout2/intl/relocatable.c create mode 100644 project/jni/application/lbreakout2/intl/relocatable.h create mode 100644 project/jni/application/lbreakout2/intl/textdomain.c create mode 100644 project/jni/application/lbreakout2/intl/vasnprintf.c create mode 100644 project/jni/application/lbreakout2/intl/vasnprintf.h create mode 100644 project/jni/application/lbreakout2/intl/vasnwprintf.h create mode 100644 project/jni/application/lbreakout2/intl/wprintf-parse.h create mode 100644 project/jni/application/lbreakout2/intl/xsize.h create mode 100644 project/jni/application/lbreakout2/lbreakout2.desktop create mode 100644 project/jni/application/lbreakout2/lbreakout2.desktop.in create mode 100644 project/jni/application/lbreakout2/lbreakout2.spec create mode 100644 project/jni/application/lbreakout2/lbreakout32.gif create mode 100644 project/jni/application/lbreakout2/lbreakout48.gif create mode 100755 project/jni/application/lbreakout2/libapplication.so create mode 100644 project/jni/application/lbreakout2/m4/Makefile.am create mode 100644 project/jni/application/lbreakout2/m4/Makefile.in create mode 100644 project/jni/application/lbreakout2/m4/codeset.m4 create mode 100644 project/jni/application/lbreakout2/m4/gettext.m4 create mode 100644 project/jni/application/lbreakout2/m4/glibc21.m4 create mode 100644 project/jni/application/lbreakout2/m4/iconv.m4 create mode 100644 project/jni/application/lbreakout2/m4/intdiv0.m4 create mode 100644 project/jni/application/lbreakout2/m4/intmax.m4 create mode 100644 project/jni/application/lbreakout2/m4/inttypes-pri.m4 create mode 100644 project/jni/application/lbreakout2/m4/inttypes.m4 create mode 100644 project/jni/application/lbreakout2/m4/inttypes_h.m4 create mode 100644 project/jni/application/lbreakout2/m4/isc-posix.m4 create mode 100644 project/jni/application/lbreakout2/m4/lcmessage.m4 create mode 100644 project/jni/application/lbreakout2/m4/lib-ld.m4 create mode 100644 project/jni/application/lbreakout2/m4/lib-link.m4 create mode 100644 project/jni/application/lbreakout2/m4/lib-prefix.m4 create mode 100644 project/jni/application/lbreakout2/m4/longdouble.m4 create mode 100644 project/jni/application/lbreakout2/m4/longlong.m4 create mode 100644 project/jni/application/lbreakout2/m4/nls.m4 create mode 100644 project/jni/application/lbreakout2/m4/po.m4 create mode 100644 project/jni/application/lbreakout2/m4/printf-posix.m4 create mode 100644 project/jni/application/lbreakout2/m4/progtest.m4 create mode 100644 project/jni/application/lbreakout2/m4/signed.m4 create mode 100644 project/jni/application/lbreakout2/m4/size_max.m4 create mode 100644 project/jni/application/lbreakout2/m4/stdint_h.m4 create mode 100644 project/jni/application/lbreakout2/m4/uintmax_t.m4 create mode 100644 project/jni/application/lbreakout2/m4/ulonglong.m4 create mode 100644 project/jni/application/lbreakout2/m4/wchar_t.m4 create mode 100644 project/jni/application/lbreakout2/m4/wint_t.m4 create mode 100644 project/jni/application/lbreakout2/m4/xsize.m4 create mode 100755 project/jni/application/lbreakout2/missing create mode 100755 project/jni/application/lbreakout2/mkinstalldirs create mode 100644 project/jni/application/lbreakout2/po/LINGUAS create mode 100644 project/jni/application/lbreakout2/po/Makefile.in create mode 100644 project/jni/application/lbreakout2/po/Makefile.in.in create mode 100644 project/jni/application/lbreakout2/po/Makevars create mode 100644 project/jni/application/lbreakout2/po/POTFILES create mode 100644 project/jni/application/lbreakout2/po/POTFILES.in create mode 100644 project/jni/application/lbreakout2/po/Rules-quot create mode 100644 project/jni/application/lbreakout2/po/boldquot.sed create mode 100644 project/jni/application/lbreakout2/po/de.gmo create mode 100644 project/jni/application/lbreakout2/po/de.po create mode 100644 project/jni/application/lbreakout2/po/en@boldquot.header create mode 100644 project/jni/application/lbreakout2/po/en@quot.header create mode 100644 project/jni/application/lbreakout2/po/fr.gmo create mode 100644 project/jni/application/lbreakout2/po/fr.po create mode 100644 project/jni/application/lbreakout2/po/insert-header.sin create mode 100644 project/jni/application/lbreakout2/po/lbreakout2.pot create mode 100644 project/jni/application/lbreakout2/po/quot.sed create mode 100644 project/jni/application/lbreakout2/po/remove-potcdate.sin create mode 100644 project/jni/application/lbreakout2/po/stamp-po create mode 100644 project/jni/application/lbreakout2/po/tr.gmo create mode 100644 project/jni/application/lbreakout2/po/tr.po create mode 100644 project/jni/application/lbreakout2/server/Makefile.am create mode 100644 project/jni/application/lbreakout2/server/Makefile.in create mode 100644 project/jni/application/lbreakout2/server/levels/Makefile.am create mode 100644 project/jni/application/lbreakout2/server/levels/Makefile.in create mode 100644 project/jni/application/lbreakout2/server/levels/N_Arenas create mode 100644 project/jni/application/lbreakout2/server/levels/N_Snapshots create mode 100644 project/jni/application/lbreakout2/server/server.c create mode 100644 project/jni/application/lbreakout2/server/server.h create mode 100644 project/jni/application/lbreakout2/server/server_game.c create mode 100644 project/jni/application/lbreakout2/server/server_game.h create mode 100644 project/jni/application/lbreakout2/stamp-h1 create mode 100755 project/jni/application/lbreakout2/touchall create mode 100755 project/jni/application/lbreakout2/win32_mancomp create mode 100755 project/jni/application/lbreakout2/win32_preparchive diff --git a/project/jni/application/lbreakout2/ABOUT-NLS b/project/jni/application/lbreakout2/ABOUT-NLS new file mode 100644 index 000000000..2f50c6693 --- /dev/null +++ b/project/jni/application/lbreakout2/ABOUT-NLS @@ -0,0 +1,768 @@ +Notes on the Free Translation Project +************************************* + +Free software is going international! The Free Translation Project is +a way to get maintainers of free software, translators, and users all +together, so that will gradually become able to speak many languages. +A few packages already provide translations for their messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +Quick configuration advice +========================== + +If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +INSTALL Matters +=============== + +Some packages are "localizable" when properly installed; the programs +they contain can be made to speak your own native language. Most such +packages use GNU `gettext'. Other packages have their own ways to +internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. If not, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is _not_ required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will respectively bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages have usually many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +Using This Package +================== + +As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, +and `CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your country by running the command +`locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +Translating Teams +================= + +For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" +area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skill are praised more than +programming skill, here. + +Available Packages +================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of January +2004. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es + +----------------------------------------------------+ + a2ps | [] [] [] [] | + aegis | () | + ant-phone | () | + anubis | | + ap-utils | | + aspell | [] | + bash | [] [] [] [] | + batchelor | | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] | + bluez-pin | [] [] [] | + clisp | | + clisp | [] [] [] | + console-tools | [] [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + darkstat | [] () [] | + diffutils | [] [] [] [] [] [] [] | + e2fsprogs | [] [] [] | + enscript | [] [] [] [] | + error | [] [] [] [] [] | + fetchmail | [] () [] [] [] [] | + fileutils | [] [] [] | + findutils | [] [] [] [] [] [] [] | + flex | [] [] [] [] | + fslint | | + gas | [] | + gawk | [] [] [] [] | + gbiff | [] | + gcal | [] | + gcc | [] [] | + gettext | [] [] [] [] [] | + gettext-examples | [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] [] | + gimp-print | [] [] [] [] [] | + gliv | | + glunarclock | [] [] | + gnubiff | [] | + gnucash | [] () [] [] | + gnucash-glossary | [] () [] | + gnupg | [] () [] [] [] [] | + gpe-aerial | [] | + gpe-beam | [] [] | + gpe-calendar | [] [] | + gpe-clock | [] [] | + gpe-conf | [] [] | + gpe-contacts | [] [] | + gpe-edit | [] | + gpe-go | [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] | + gpe-taskmanager | [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] | + gpsdrive | () () () | + gramadoir | [] | + grep | [] [] [] [] [] [] | + gretl | [] | + gtick | [] () | + hello | [] [] [] [] [] [] | + id-utils | [] [] | + indent | [] [] [] [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] | + iso_3166_1 | [] [] [] [] [] [] | + iso_3166_2 | | + iso_3166_3 | [] | + iso_4217 | [] [] [] [] | + iso_639 | | + jpilot | [] [] [] | + jtag | | + jwhois | [] | + kbd | [] [] [] [] [] | + latrine | () | + ld | [] [] | + libc | [] [] [] [] [] [] | + libgpewidget | [] [] | + libiconv | [] [] [] [] [] | + lifelines | [] () | + lilypond | [] | + lingoteach | | + lingoteach_lessons | () () | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailutils | [] [] | + make | [] [] [] | + man-db | [] () [] [] () | + minicom | [] [] [] | + mysecretdiary | [] [] [] | + nano | [] () [] [] [] | + nano_1_0 | [] () [] [] [] | + opcodes | [] | + parted | [] [] [] [] [] | + ptx | [] [] [] [] [] | + python | | + radius | [] | + recode | [] [] [] [] [] [] [] | + rpm | [] [] | + screem | | + scrollkeeper | [] [] [] [] [] [] | + sed | [] [] [] [] [] [] | + sh-utils | [] [] [] | + shared-mime-info | | + sharutils | [] [] [] [] [] [] | + silky | () | + skencil | [] () [] | + sketch | [] () [] | + soundtracker | [] [] [] | + sp | [] | + tar | [] [] [] [] | + texinfo | [] [] [] | + textutils | [] [] [] [] | + tin | () () | + tp-robot | | + tuxpaint | [] [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] [] | + vorbis-tools | [] [] [] [] | + wastesedge | () | + wdiff | [] [] [] [] | + wget | [] [] [] [] [] [] | + xchat | [] [] [] [] | + xfree86_xkb_xml | [] [] | + xpad | [] | + +----------------------------------------------------+ + af am ar az be bg bs ca cs da de el en en_GB eo es + 4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68 + + et eu fa fi fr ga gl he hr hu id is it ja ko lg + +-------------------------------------------------+ + a2ps | [] [] [] () () | + aegis | | + ant-phone | [] | + anubis | [] | + ap-utils | [] | + aspell | [] [] | + bash | [] [] | + batchelor | [] [] | + bfd | [] | + binutils | [] [] | + bison | [] [] [] [] | + bluez-pin | [] [] [] [] [] | + clisp | | + clisp | [] | + console-tools | | + coreutils | [] [] [] [] [] [] | + cpio | [] [] [] [] | + darkstat | () [] [] [] | + diffutils | [] [] [] [] [] [] [] | + e2fsprogs | | + enscript | [] [] | + error | [] [] [] [] | + fetchmail | [] | + fileutils | [] [] [] [] [] [] | + findutils | [] [] [] [] [] [] [] [] [] [] [] | + flex | [] [] [] | + fslint | [] | + gas | [] | + gawk | [] [] [] | + gbiff | [] | + gcal | [] | + gcc | [] | + gettext | [] [] [] | + gettext-examples | [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] [] | + gimp-print | [] [] | + gliv | () | + glunarclock | [] [] [] [] | + gnubiff | [] | + gnucash | () [] | + gnucash-glossary | [] | + gnupg | [] [] [] [] [] [] [] | + gpe-aerial | [] | + gpe-beam | [] | + gpe-calendar | [] [] [] | + gpe-clock | [] | + gpe-conf | [] | + gpe-contacts | [] [] | + gpe-edit | [] [] | + gpe-go | [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] [] | + gpe-sketchbook | [] | + gpe-su | [] | + gpe-taskmanager | [] | + gpe-timesheet | [] [] [] | + gpe-today | [] [] | + gpe-todo | [] [] | + gphoto2 | [] [] [] | + gprof | [] [] | + gpsdrive | () () () | + gramadoir | [] [] | + grep | [] [] [] [] [] [] [] [] [] [] [] | + gretl | [] [] | + gtick | [] [] [] | + hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] [] | + indent | [] [] [] [] [] [] [] [] [] | + iso_3166 | [] [] [] [] [] [] [] | + iso_3166_1 | [] [] [] [] [] | + iso_3166_2 | | + iso_3166_3 | | + iso_4217 | [] [] [] [] [] [] | + iso_639 | | + jpilot | [] () | + jtag | [] | + jwhois | [] [] [] [] | + kbd | [] | + latrine | [] | + ld | [] | + libc | [] [] [] [] [] [] | + libgpewidget | [] [] [] [] | + libiconv | [] [] [] [] [] [] [] [] [] | + lifelines | () | + lilypond | [] | + lingoteach | [] [] | + lingoteach_lessons | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailutils | | + make | [] [] [] [] [] [] | + man-db | () () | + minicom | [] [] [] [] | + mysecretdiary | [] [] | + nano | [] [] [] [] | + nano_1_0 | [] [] [] [] | + opcodes | [] | + parted | [] [] [] | + ptx | [] [] [] [] [] [] [] | + python | | + radius | [] | + recode | [] [] [] [] [] [] | + rpm | [] [] | + screem | | + scrollkeeper | [] | + sed | [] [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] [] | + shared-mime-info | [] [] [] | + sharutils | [] [] [] [] [] | + silky | () [] () () | + skencil | [] | + sketch | [] | + soundtracker | [] [] | + sp | [] () | + tar | [] [] [] [] [] [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] [] [] [] [] | + tin | [] () | + tp-robot | [] | + tuxpaint | [] [] [] [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux | [] [] [] [] () [] | + vorbis-tools | [] | + wastesedge | () | + wdiff | [] [] [] [] [] [] | + wget | [] [] [] [] [] [] [] | + xchat | [] [] [] | + xfree86_xkb_xml | [] [] | + xpad | [] [] | + +-------------------------------------------------+ + et eu fa fi fr ga gl he hr hu id is it ja ko lg + 22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0 + + lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru + +-----------------------------------------------------+ + a2ps | [] [] () () [] [] [] | + aegis | () () () | + ant-phone | [] [] | + anubis | [] [] [] [] [] [] | + ap-utils | [] () [] | + aspell | [] | + bash | [] [] [] | + batchelor | [] | + bfd | [] | + binutils | [] | + bison | [] [] [] [] [] | + bluez-pin | [] [] [] | + clisp | | + clisp | [] | + console-tools | [] | + coreutils | [] [] | + cpio | [] [] [] [] [] | + darkstat | [] [] [] [] | + diffutils | [] [] [] [] [] [] | + e2fsprogs | [] | + enscript | [] [] [] [] | + error | [] [] [] | + fetchmail | [] [] () [] | + fileutils | [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] | + fslint | [] [] | + gas | | + gawk | [] [] [] | + gbiff | [] [] | + gcal | | + gcc | | + gettext | [] [] [] | + gettext-examples | [] [] [] | + gettext-runtime | [] [] [] [] | + gettext-tools | [] [] | + gimp-print | [] | + gliv | [] [] [] | + glunarclock | [] [] [] [] | + gnubiff | [] | + gnucash | [] [] () [] | + gnucash-glossary | [] [] | + gnupg | [] | + gpe-aerial | [] [] [] [] | + gpe-beam | [] [] [] [] | + gpe-calendar | [] [] [] [] | + gpe-clock | [] [] [] [] | + gpe-conf | [] [] [] [] | + gpe-contacts | [] [] [] [] | + gpe-edit | [] [] [] [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] [] | + gpe-ownerinfo | [] [] [] [] | + gpe-sketchbook | [] [] [] [] | + gpe-su | [] [] [] [] | + gpe-taskmanager | [] [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] [] [] [] | + gphoto2 | [] | + gprof | [] [] | + gpsdrive | () () [] | + gramadoir | () [] | + grep | [] [] [] [] [] | + gretl | | + gtick | [] [] [] | + hello | [] [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] [] | + indent | [] [] [] [] | + iso_3166 | [] [] [] | + iso_3166_1 | [] [] | + iso_3166_2 | | + iso_3166_3 | [] | + iso_4217 | [] [] [] [] [] [] [] [] | + iso_639 | [] | + jpilot | () () | + jtag | | + jwhois | [] [] [] [] () | + kbd | [] [] [] | + latrine | [] | + ld | | + libc | [] [] [] [] | + libgpewidget | [] [] [] | + libiconv | [] [] [] [] [] | + lifelines | | + lilypond | | + lingoteach | | + lingoteach_lessons | | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailutils | [] [] [] | + make | [] [] [] [] | + man-db | [] | + minicom | [] [] [] [] | + mysecretdiary | [] [] [] | + nano | [] [] [] [] [] | + nano_1_0 | [] [] [] [] [] [] | + opcodes | [] [] | + parted | [] [] [] [] | + ptx | [] [] [] [] [] [] [] [] | + python | | + radius | [] [] | + recode | [] [] [] [] | + rpm | [] [] [] | + screem | | + scrollkeeper | [] [] [] [] [] | + sed | [] [] [] | + sh-utils | [] [] | + shared-mime-info | [] [] | + sharutils | [] [] | + silky | () | + skencil | [] [] | + sketch | [] [] | + soundtracker | | + sp | | + tar | [] [] [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] | + tin | | + tp-robot | [] | + tuxpaint | [] [] [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] | + vorbis-tools | [] [] [] | + wastesedge | | + wdiff | [] [] [] [] [] | + wget | [] [] [] | + xchat | [] [] [] | + xfree86_xkb_xml | [] [] | + xpad | [] [] | + +-----------------------------------------------------+ + lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru + 1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63 + + sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu + +-----------------------------------------------------+ + a2ps | [] [] [] [] | 16 + aegis | | 0 + ant-phone | | 3 + anubis | [] [] | 9 + ap-utils | () | 3 + aspell | | 4 + bash | | 9 + batchelor | | 3 + bfd | [] [] | 6 + binutils | [] [] [] | 8 + bison | [] [] | 14 + bluez-pin | [] [] [] | 14 + clisp | | 0 + clisp | | 5 + console-tools | | 3 + coreutils | [] [] [] [] | 16 + cpio | [] [] | 14 + darkstat | [] [] [] () () | 12 + diffutils | [] [] [] | 23 + e2fsprogs | [] [] | 6 + enscript | [] [] | 12 + error | [] [] [] | 15 + fetchmail | [] [] | 11 + fileutils | [] [] [] [] [] | 17 + findutils | [] [] [] [] [] [] | 29 + flex | [] [] | 13 + fslint | | 3 + gas | [] | 3 + gawk | [] [] | 12 + gbiff | | 4 + gcal | [] [] | 4 + gcc | [] | 4 + gettext | [] [] [] [] [] | 16 + gettext-examples | [] [] [] [] [] | 14 + gettext-runtime | [] [] [] [] [] [] [] [] | 22 + gettext-tools | [] [] [] [] [] [] | 14 + gimp-print | [] [] | 10 + gliv | | 3 + glunarclock | [] [] [] | 13 + gnubiff | | 3 + gnucash | [] [] | 9 + gnucash-glossary | [] [] [] | 8 + gnupg | [] [] [] [] | 17 + gpe-aerial | [] | 7 + gpe-beam | [] | 8 + gpe-calendar | [] [] [] [] | 13 + gpe-clock | [] [] [] | 10 + gpe-conf | [] [] | 9 + gpe-contacts | [] [] [] | 11 + gpe-edit | [] [] [] [] [] | 12 + gpe-go | | 5 + gpe-login | [] [] [] [] [] | 13 + gpe-ownerinfo | [] [] [] [] | 13 + gpe-sketchbook | [] [] | 9 + gpe-su | [] [] [] | 10 + gpe-taskmanager | [] [] [] | 10 + gpe-timesheet | [] [] [] [] | 12 + gpe-today | [] [] [] [] [] | 13 + gpe-todo | [] [] [] [] | 12 + gphoto2 | [] [] [] | 11 + gprof | [] [] | 9 + gpsdrive | [] [] | 3 + gramadoir | [] | 5 + grep | [] [] [] [] | 26 + gretl | | 3 + gtick | | 7 + hello | [] [] [] [] [] | 34 + id-utils | [] [] | 12 + indent | [] [] [] [] | 21 + iso_3166 | [] [] [] [] [] [] [] | 27 + iso_3166_1 | [] [] [] | 16 + iso_3166_2 | | 0 + iso_3166_3 | | 2 + iso_4217 | [] [] [] [] [] [] | 24 + iso_639 | | 1 + jpilot | [] [] [] [] [] | 9 + jtag | [] | 2 + jwhois | () [] [] | 11 + kbd | [] [] | 11 + latrine | | 2 + ld | [] [] | 5 + libc | [] [] [] [] | 20 + libgpewidget | [] [] [] [] | 13 + libiconv | [] [] [] [] [] [] [] [] | 27 + lifelines | [] | 2 + lilypond | [] | 3 + lingoteach | | 2 + lingoteach_lessons | () | 0 + lynx | [] [] [] | 14 + m4 | [] [] | 15 + mailutils | | 5 + make | [] [] [] | 16 + man-db | [] | 5 + minicom | | 11 + mysecretdiary | [] [] | 10 + nano | [] [] [] [] | 17 + nano_1_0 | [] [] [] | 17 + opcodes | [] [] | 6 + parted | [] [] [] | 15 + ptx | [] [] | 22 + python | | 0 + radius | | 4 + recode | [] [] [] | 20 + rpm | [] [] | 9 + screem | [] [] | 2 + scrollkeeper | [] [] [] | 15 + sed | [] [] [] [] [] [] | 24 + sh-utils | [] [] | 14 + shared-mime-info | [] [] | 7 + sharutils | [] [] [] [] | 17 + silky | () | 3 + skencil | [] | 6 + sketch | [] | 6 + soundtracker | [] [] | 7 + sp | [] | 3 + tar | [] [] [] [] [] | 24 + texinfo | [] [] [] | 14 + textutils | [] [] [] [] | 16 + tin | | 1 + tp-robot | | 2 + tuxpaint | [] [] [] [] [] | 29 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux | [] [] | 15 + vorbis-tools | | 8 + wastesedge | | 0 + wdiff | [] [] [] | 18 + wget | [] [] [] [] [] [] [] [] | 24 + xchat | [] [] [] [] [] | 15 + xfree86_xkb_xml | [] [] [] [] [] | 11 + xpad | | 5 + +-----------------------------------------------------+ + 63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu + 131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If January 2004 seems to be old, you may fetch a more recent copy of +this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date +matrix with full percentage details can be found at +`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. + +Using `gettext' in new packages +=============================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`translation@iro.umontreal.ca' to make the `.pot' files available to +the translation teams. + diff --git a/project/jni/application/lbreakout2/AUTHORS b/project/jni/application/lbreakout2/AUTHORS new file mode 100644 index 000000000..687fcbbc3 --- /dev/null +++ b/project/jni/application/lbreakout2/AUTHORS @@ -0,0 +1,38 @@ +Michael Speck + +**** Contributions **** + +Patch to add a very easy difficulty level for kids. - Zooko + +Patch to fix the insane speedup of balls after a SLOW/FAST +bonus expired that came up in 2.5beta. - Mark Tomich + +Patch to load all themes from installation path. - Michal Cihar + +Fixes to make LBreakout run on FreeBSD. - Sammy Mannaert + +Option for playing with balls above debris and +explosions. - Jochen Striepe + +Fix for input bug in Win32, a better installation +system and blinking cursor for editable menu items. - Lee Read + +Modifications to make LBreakout2 compileable on +Win32 with MinGW. - Claudio Chimera + +Fix for the bug where the bonus floor disappeared to slow +on fast machines. - Trevor Spiteri + +New explosions, various backgrounds, ideas and graphics for +extras and bricks: +TIME_ADD, DISABLE, EXPLOSIVE_BALL, BONUS/MALUS MAGNET, +WEAK BALL, CHAOS BRICK, REGENERATIVE BRICK. - Dante + +Fix for a bug where balls where attached to the wall +instead of the paddle when paddle and brick where hit +in the same programme cycle. - Patrick Hohmeyer + +**** + +Also thanks to all guys that made suggestions to +improve LBreakout2!!! diff --git a/project/jni/application/lbreakout2/AndroidAppSettings.cfg b/project/jni/application/lbreakout2/AndroidAppSettings.cfg new file mode 100644 index 000000000..e5dc91d0e --- /dev/null +++ b/project/jni/application/lbreakout2/AndroidAppSettings.cfg @@ -0,0 +1,24 @@ +# The application settings for Android libSDL port +AppSettingVersion=7 +LibSdlVersion=1.2 +AppName="LBreakout2" +AppFullName=net.sourceforge.lgames.lbreakout2 +ScreenOrientation=h +AppDataDownloadUrl="App data size is 5 Mb|https://sourceforge.net/projects/libsdl-android/files/LBreakout2/lbreakout2-2.6.1-data.zip/download|http://sites.google.com/site/xpelyax/Home/lbreakout2-2.6.1-data.zip?attredirects=0&d=1|http://sitesproxy.goapk.com/site/xpelyax/Home/lbreakout2-2.6.1-data.zip" +SdlVideoResize=y +NeedDepthBuffer=n +AppUsesMouse=y +AppNeedsArrowKeys=n +AppUsesJoystick=n +AppUsesMultitouch=n +RedefinedKeys="RETURN SPACE PAGEUP PAGEDOWN" +AppTouchscreenKeyboardKeysAmount=0 +AppTouchscreenKeyboardKeysAmountAutoFire=0 +MultiABI=n +AppVersionCode=26101 +AppVersionName="2.6.1.01" +CompiledLibraries="sdl_mixer sdl_image sdl_net intl" +AppCflags='-DHAVE_CONFIG_H -finline-functions -O2' +AppLdflags='' +AppSubdirsBuild='src/dummy' +ReadmeText='^You may press "Home" now - the data will be downloaded in background' diff --git a/project/jni/application/lbreakout2/AndroidBuild.sh b/project/jni/application/lbreakout2/AndroidBuild.sh new file mode 100755 index 000000000..7e523847d --- /dev/null +++ b/project/jni/application/lbreakout2/AndroidBuild.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ \! -f Makefile ] ; then + ../launchConfigure.sh --disable-install --enable-sdl-net LIBS=-lintl +fi + +make +mv -f client/lbreakout2 libapplication.so diff --git a/project/jni/application/lbreakout2/COPYING b/project/jni/application/lbreakout2/COPYING new file mode 100644 index 000000000..c7aea1896 --- /dev/null +++ b/project/jni/application/lbreakout2/COPYING @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/project/jni/application/lbreakout2/ChangeLog b/project/jni/application/lbreakout2/ChangeLog new file mode 100644 index 000000000..736133a0f --- /dev/null +++ b/project/jni/application/lbreakout2/ChangeLog @@ -0,0 +1,665 @@ +2.6.1: +- fixed missing font transparency in help screen (24/12/09 MS) +- fixed bug in menus's level set list that prevented first few entries + to show up (24/12/09 MS) +- fixed odd sound sample rates (all are 22050 now) (24/12/09 AM) +- fixed english translation issues (23/12/09 CT) + +2.6: +- added XDG desktop file (09/10/26 PT) +- fixed compiling on Fedora (09/10/26 SG) +- fixed GNU_SOURCE warning (09/10/26 MS) +- added new levelsets (09/10/26 MS) +- added hidden config option badspeech to disable swearing by default + (09/10/26 MS) +- improved french translation (08/08/24 K.C.) +- drop group rights on startup (linux only) to improve security (access + to highscore) (08/03/29 HG) +- bugfix: update levelset tooltip when changing selection with left/right +arrows (08/03/29 HG) +- added improved spec file for building RPMs (07/10/10 SG) +- configure now works for win32 (07/01/20 DY) + +2.6beta-7: +- french translation added (06/08/27 K.C.) + +2.6beta-6: +- added a hint for building on OS/2 to the README (06/05/27 DY) +- improved some german translations (06/05/26 MS) +- create some server bots per default (06/05/26 MS) +- adjusted fcntl call in net.c to work with kernel 2.6+ (and hopefully still + for lower versions... if not use SDL_net) (06/05/26 MS) +- use text from server option "-m" directly as welcome message if a file + by that name was not found (06/05/26 MS) +- read highscores file before adding new scores for usage with NFS + (06/05/12 netfab) +- inline removed from function declarations to ensure global access + (06/04/01 PM) +- removed -Wall from CC arguments for better portability + (06/04/01 PM) + +2.6beta-5: +- i18n for yes/no confirmation by y/n (05/11/29 M.S.) +- added some more missing strings to i18n (05/11/20 M.S.) +- leaving game by window manager's close button works in quick help + (05/11/20 M.S.) +- switching fullscreen/windowed mode works in quick help (05/11/20 M.S.) +- added gettext-comments for those strings that use % but not as format + modifiers to prevent errors when making gmo files (05/11/20 M.S.) + +2.6beta-4: +- added german localization (05/11/13 R.S.) +- removed client/client_game.c from POTFILES.in (05/10/31 M.S.) +- changed 'src' to 'client' directory in POTFILES.in (05/10/31 M.S.) + +2.6beta-3: +- added missing common/gettext.h (05/10/20 M.S.) + +2.6beta-2: +- i18n support for client (05/10/19 M.S.) +- fixed some more s(n)printf bugs (05/05/22 U.H.) + +2.6beta: +- added several new levelsets (05/05/15 M.S.) +- disabled AC_PROG_STRIP from win32 build process since autotools in SuSE + does not like it??? (05/05/15 M.S.) +- moved AC_CANONICAL_HOST to beginning of configure.in (05/05/15 M.S.) +- finished bonus level DEFENDER (05/05/15 M.S.) +- added bonus level DEFENDER (05/04/6 M.S.) +- added bonus level HUNTER (05/04/01 M.S.) +- freakout levelset has bonus levels (05/04/01 M.S.) +- original levelset has bonus levels (05/04/01 M.S.) +- added bonus level SITTING_DUCKS (05/03/31 M.S.) +- made additional bonus levels optional (05/03/30 M.S.) +- normal levelsets get a bonus level every four normal levels + (05/03/30 M.S.) +- setting sound volume has effect (05/03/28 M.S.) +- added bonus levels JUMPING_JACK, OUTBREAK and BARRIER + (05/03/28 M.S.) +- security issue fixed: bad sprintf/scanf calls could lead to crashes + or potential security problems (05/02/14 U.H.) + +2.5.2: +- added a different sound for balls reflected from the paddle + (05/01/13 M.S.) +- bugfix: acceleration of balls by middle mouse button now works in + the testing mode of the editor (previously the balls got stuck in + mid-air) (05/01/13 M.S.) +- the game will be paused if the input focus is lost or the + application is iconfied (05/01/13 M.S.) +- when the 'sticky' bonus runs out, all attached balls will be + detached (05/01/13 M.S.) +- when pressing either left or right shift, the name and score of + the first chart entry of this set will be displayed at the upper + right-hand side display of the frame instead of your name and + score (05/01/12 M.S.) +- if a paddle is frozen and the mouse is moved, the paddle will no + longer jump after thawing (05/01/12 M.S.) +- when a paddle turns invisible due to the 'ghost paddle'-malus, all + attached balls will be detached (05/01/12 M.S.) +- re-implemented explosion animation for bricks directly hit by an + explosive ball (05/01/12 M.S.) + +2.5.1: +- only levelsets from the install directory are used for + Freakout (04/06/25 M.S.) +- order of Freakout levels is saved (04/09/22 M.S.) +- bugfix: balls will not start in next level with max speed when + the middle mouse button was pressed while clearing the last + brick of a level (04/09/22 M.S.) +- bonus floor uses proper brick image (blue energy wall instead + of normal wall) (04/09/22 M.S.) +- replaced chaos bricks in level 7 of N_Snapshots with normal + wall bricks (04/09/22 M.S.) +- to continue when viewing final network stats only SPACE is + allowed (04/09/22 M.S.) +- re-added continue option for single player mode, however + with 100% score loss this time (04/09/22 M.S.) + +2.5: +- added additional network support via SDL_net for portability + (04/08/07 M.S.) +- bug fixed: game crashed when quitting testing mode in the + editor (04/08/06 M.S.) +- removed 5000 points bonus for completing a level. instead + the score of the remaining destructible bricks is substracted + as a penalty when warping to the next level (04/08/06 M.S.) +- generation of bug message is disabled (04/06/24 M.S.) +- sounds are played stereo in a local game and partially stereo + in a network game (04/06/24 Greg, M.S.) + +2.5beta-8: +- admin bot commands are documented in the help (04/06/19 M.S.) +- number of online users is displayed when logging in to server + (04/06/19 M.S.) +- the number of bricks to be cleared for warp is not re-computed + when a ball is lost but always based on the initial number + of normal bricks (04/06/17 M.S.) +- saved game is removed when game is over (either all lives lost + or all levels completed) (04/06/17 M.S.) +- game cannot be quit by 'q' or ESCAPE when all lives are lost + (the player would get an extra life this way) (04/06/17 M.S.) +- new server option to add some paddle bots (04/06/17 M.S.) +- message about continue is not displayed in network game + (04/06/16 M.S.) +- network bot with variable paddle speed (04/06/16 M.S.) +- missing include added to gui.c (04/06/15 M.S.) + +2.5beta-7: +- configure option --with-hiscore-path has been replaced with + autoconf option --localstatedir (04/06/14 M.S.) +- data files will be installed to $datadir/lbreakout2 instead + of $datadir/games/lbreakout2 (04/06/14 M.S.) +- renamed configure option --with-doc-path to --with-docdir + (04/06/14 M.S.) +- bugfix: test mode of editor crashed when trying to get the total + number of levels; there were none at all (04/06/14 M.S.) + +2.5beta-6: +- network usernames must be alphanumerical (04/06/12 M.S.) +- fixed the 'snprintf'-bug that made the server exploitable to + formatted shellcode (04/06/12 M.S.) +- credits show total number of levels (04/06/12 M.S.) +- animations are now built directly from the brick graphics, using + their color key, and not from the screen; thus animations are now + transparent where the bricks are transparent, e.g. in theme + 'Aquarium' (04/06/12 M.S.) + +2.5beta-5: +- changed URL from www.lgames.org to lgames.sf.net in the README + (04/05/15 M.S.) +- if a game has been quit before it was over, it can now be resumed + (04/05/15 M.S.) +- default key 'd' is now blocked instead of normal key 'c' + (04/05/14 M.S.) +- pressing the middle mouse button or the speedup key will + accelerate all balls to maximum velocity until button/key + is released again (04/05/13 M.S.) +- a 5000 points bonus is added if a level was completely + cleared (not finished by warp) (04/05/13 M.S.) +- warp option is disabled in network game (04/05/13 M.S.) +- added hint on how to switch between the bricks/bonus set when + starting the editor (04/05/13 M.S.) + +2.5beta-4: +- changed URL from www.lgames.org to lgames.sf.net (04/01/31 M.S.) + +2.5beta-3: +- updated the quick hint of menu option 'Difficulty' (03/06/28 M.S.) +- added a VERY easy difficulty level for young kids (03/06/28 Zooko) +- invisible bricks do not vanish after being hit if the player + dies then (03/06/27 M.S.) +- speedup_level initiated correctly (03/06/27 M.T.) + +2.5beta-2: +- fixed a bug in masking of ball speed vector which had the balls + stopped in midair not moving any further (03/06/18 M.S.) +- minimum keyboard input speed is now 100 (03/06/16 M.S.) +- missing inclusion for FreeBSD added (03/06/16 S.M.) + +2.5beta: +- complete rewrite of network code (03/05/.. M.S.) +- added 8 new levels to 'Original' for a total of 25 levels and + renamed it to 'LBreakout2' (03/05/25 M.S.) +- correct size of temporary string buffer in write_text_with_cursor() + which fixes crash while editing author/title in the level editor + (03/05/25 M.S.) +- 'warp' and 'disintegrate' do not apply for the levelsets + 'Original' and 'LBreakout1' (03/05/22 M.S.) +- separated levelset 'Original' from the other sets (03/05/22 M.S.) +- added the levelset of LBreakout1 as first add-on (03/05/22 M.S.) +- melted 'Original', 'AddOn-1', 'AddOn-2' into a tighter levelset + 'Original' (03/05/22 M.S.) +- the option of buying a continue has been removed (03/05/20 M.S.) +- paddle can drop to 'middle size' 0 (03/05/20 M.S.) +- paddle size in medium difficulty decreased by one (03/05/20 M.S.) +- plasma weapon can fire permanently at a slower fire rate + (03/05/20 M.S.) +- modified bonus times to reflect the original values (03/05/20 M.S.) +- close button of window manager works in level editor (03/05/18 M.S.) +- reduced multiplayer ball respawn time to 5 seconds (03/05/17 M.S.) +- backgrounds have no colorkey (03/05/17 M.S.) +- multiplayer score table is also displayed if only one player remains + or the game is broken up (03/04/27 M.S.) +- on entering editor effects of extras are reset (03/04/27 M.S.) +- menu option 'key speed' is now in pixels per seconds and has moved + to the submenu 'controls' (03/04/23 M.S.) +- input is always grabbed and relative mouse motion is always used, + therefore their menu options were removed (03/04/23 M.S.) +- simplified internal handling of paddle fire buttons (03/04/23 M.S.) +- after 10 seconds penalty a player gets a new ball in a non-pingpong + multiplayer level when it has lost its (03/04/23 M.S.) +- balls no longer 'sink' into the sticky paddle (03/04/23 M.S.) +- description of menu options removed from documentation as each + has a context-sensitive helpbox at runtime (03/04/23 M.S.) +- simplified input handling by dropping all the stupid stuff and + sticking directly to SDL's functions (03/04/23 M.S.) +- added a 'loading' graphic at the beginning (03/04/08 M.S.) + +2.4.1: +- unlimited number of backgrounds for themes (03/03/08 M.S.) +- if a levelset is selected its highscore chart is shown (03/02/27 M.S.) +- the warp icon gets static after it blinked four times (03/02/27 M.S.) +- the official levelsets 'Original', 'AddOn-1' and 'AddOn-2' became the + first entries in the levelset list (03/02/27 M.S.) +- default warp limit is now 80% of bricks (03/02/27 M.S.) +- scores are displayed while player changes (03/02/23 M.S.) +- loading themes from installation path no longer restricted to the + default ones (03/02/23 M.C.) +- added an explanation of the 'Warp' feature to the documenation + (03/02/07 M.S.) + +2.4: +- fixed a bug were balls could get caught within the paddle if the + 'bonus floor' was active and the paddle wasn't moved (02/12/16 M.S.) +- extra balls of upper paddle (multiplayer) are created at proper position + (02/12/16 M.S.) +- shadows of extras are clipped to the playing field (02/12/15 M.S.) +- lost/gained lives are refreshed correctly (02/12/15 M.S.) +- decreased corner sensitivity and improved corner reflection (no longer + reflected at 45° but at the real perpendicular which makes it much + easier for balls to enter narrow passages) (02/12/14 M.S.) +- simplified range check for ball velocity vector (02/12/14 M.S.) +- the frame's shadow is not drawn twice (thus darker) when a brick close to + the frame is removed (02/12/13 M.S.) +- difficulty 'Hard' gives 30% score bonus (02/12/13 M.S.) +- increased ball speed for 'Medium' and 'Hard' (02/12/13 M.S.) +- added a missing check concering the reset position of reflected balls + to the target computation (without this they could get into bricks which + resulted in a corrupted next target) (02/12/13 M.S.) +- extra balls (random initial direction) can no longer move straight up + (when they did so they simply left the screen as no target could be computed + for them) (02/12/13 M.S.) +- reduced number of get_target() calls for balls and shots (02/12/11 M.S.) +- improved handling of scrollbars (02/12/11 M.S.) +- fixed color key bugs occuring at depth >=24 (02/12/10 M.S.) +- when bricks regenerate they are refreshed correctly (02/12/08 M.S.) +- player can disintegrate single bricks by pressing 'd' and spending + 5% of his/her score (02/12/08 M.S.) + +2.4beta-3: +- continues always cost 50% of the current score but fully restore the + initial amount of lives (02/12/07 M.S.) +- fixed a bug in the 'restart' code that could accidently cause the + game to quit if you hadn't paid the continue cost twice (02/12/07 M.S.) +- updated Jurgen De Backers theme AbsoluteB (02/12/07 M.S.) +- shadow creation for surfaces with no color key now works correctly + (02/12/07 M.S.) + +2.4beta-2: +- fixed security holes created by improper use of sprintf (02/11/24 D.B.) + +2.4beta: +- added a quick help for network game (02/11/03 M.S.) +- optimized drawing of balls/extras/shots/shrapnells (02/11/01 M.S.) +- removed config option shadow (is always enabled) (02/11/01 M.S.) +- 'paddle.png' may provide an additional paddle set for a different + upper paddle (02/11/01 M.S.) +- audio buffer size became config option (02/11/01 M.S.) +- network statistics are sent in one go after game is finished + (02/10/30 M.S.) +- code clean-ups in establishing direct connection (02/10/30 M.S.) +- in the highscore chart the level index is no longer 0 after + completing a levelset (02/10/29 M.S.) +- levelset transfer improved (02/10/27 M.S.) +- fading time decreased (02/10/26 M.S.) +- SDL >= 1.1.5 is now required (02/10/25 M.S.) +- invalid users are properly removed from server (02/10/25 M.S.) +- code clean-ups and performance enhancements (02/10/21 M.S.) +- improved chatroom GUI (02/10/19 M.S.) +- fixed a network leak that caused 500% more latency in 'Deathmatch' + and 900% more latency in 'Normal Multiplayer' (02/10/08 M.S.) + +2.3.5: +- added pseudo levelset !FREAKOUT! that lets you play all levels (~600) + in a random order (02/09/21 M.S.) +- moved 'Select Theme' option from 'Advanced Options' to 'Graphics' + (02/09/21 M.S.) +- bonus stack is cleared at beginning of new level (02/09/21 M.S.) +- replaced 'wontgiveup.wav' with 'verygood.wav' (02/09/20 M.S.) +- implemented 'warp' option to switch to next level before all bricks + where cleared (02/09/19 M.S.) +- bricks/bonuses/maluses may have transparency (02/09/17 M.S.) +- optional bonus floor graphic (02/09/17 M.S.) + +2.3.4: +- fixed a crash in 'Classic' theme (02/09/12 M.S.) + +2.3.3: +- added winning themes AbsoluteB, Oz, Moiree from theming contest and + the previous default theme has been renamed to Classic (02/09/10 M.S.) +- fixed a bug that crashed LBreakout when there where two alternating + players left in the last level and one finished it (02/09/05 M.S.) +- modifications to make LBreakout run on FreeBSD (02/09/05 S.M.) +- option to display balls above debris and explosions (02/09/05 J.S.) +- input bug fixes for win32 (02/09/05 L.R.) +- blinking cursor for editable menu items to distinguish them from + switches (02/09/05 L.R.) + +2.3.2: +- added all existing levelsets (27 sets, ~440 levels) (02/08/16 L.R.) +- quick help can be opened in game by pressing F1 or 'h' (02/08/16 M.S.) +- the 'select theme' hint bubble will show information on a theme (author, + version, description) if it provides an ABOUT file (02/08/16 M.S.) +- menu graphics and sounds are now themeable (02/08/16 M.S.) +- added information about version and author of levelset to the hint + bubble in the menu (02/08/16 M.S.) +- menu item added to modify challengers game port (02/08/16 M.S.) +- ip buffers resized to cover AF_INET6 addresses (02/08/16 M.S.) +- bugfix in net talk (02/08/15 M.S.) +- levelsets MP_Arenas and MP_Snapshots now have the correct contents + (02/08/14 M.S.) + +2.3.1: +- multiplayer levelsets MP_Arenas and MP_Snapshots are now installed + correctly (02/08/14 M.S.) +- configure option --disable-network now works correctly (02/08/14 M.S.) +- if your challenge is invalid an error message is displayed + (02/08/14 M.S.) + +2.3: +- no warnings when loading a theme (02/08/13 M.S.) +- two network levelsets MP_Arenas (deathmatch) and MP_Snapshots (normal) + added (02/08/13 M.S.) +- added version for levelsets (02/08/13 M.S.) +- added commands '/version', '/idletime' and '/userlimit (02/08/12 M.S.) +- 'turbo' key that temporarily doubles the paddle speed added + (02/08/10 D.B.) +- command '/transfer' implemented (02/08/10 M.S.) +- bonus info displayed at the right side of the screen is now optional + (02/08/10 M.S.) +- chatroom commands implemented (02/08/09 M.S.) +- chatroom channels implemented (02/08/08 M.S.) +- added configure option --disable-network (02/08/06 M.S.) +- network statistics implemented (02/08/06 M.S.) +- bugfix for networked weapon fire (02/08/06 M.S.) +- PNG loading routine updated (02/08/06 M.S.) +- fixed an aweful lot of bugs in normal network game (02/08/05 M.S.) +- implemented info about running games to chatroom (02/08/05 M.S.) +- users are properly unlinked after playing a network game (02/08/05 M.S.) +- pause chatroom implemented (02/08/04 M.S.) +- normal networking implemented /02/08/04 M.S.) +- network bugfixes (02/08/03 M.S.) +- screen is grayed for paused games (02/08/02 M.S.) +- deathmatch networking implemented (02/08/02 M.S.) +- bugfix for shooting bricks (02/08/02 M.S.) +- welcome message when entering chatroom and the user name is colored white + (02/08/02 M.S.) +- score modification for difficulty level is directly added (02/07/31 M.S.) +- each level gets a background assigned instead of simply changing + the background when the player changes (02/07/31 M.S.) +- plain text config (02/07/31 M.S.) +- restored compatibility with old layout (02/07/31 M.S.) +- for win32: (02/07/18 L.R.) + - edit bug fixed + - installation details added to README + - muched improved installation system + - files are always opened in binary mode +- added missing screen.jpg in the docs (02/07/18 L.R.) +- implemented network enviroment with chatroom +- implemented second fire key +- added check for libz to configure as this is required for PNG +- option to modify audio buffer size to fix sound problems + +2.2.2: +-LBreakout2 is now compileable with MinGW for Win32 +(thanks to Claudio Chimera) +-if a ball has an invalid target it returns to the paddle +(instead of exiting the program) +-own graphics and sounds my be used as theme +-autoreturn of balls is now optional +-updated trouble-shooting +-fixed a bug where the bonus floor didn't disappear after the bonus +expired (thanks to Trevor Spiteri) + +2.2.1: +-added another animation level +-if a ball didn't hit a destructible brick or the paddle within +ten seconds it moves back to the paddle to prevent 'endless +loops' +-changed the ball's size to 12x12 which is supposed to fix most +of the remaining reflection bugs (thanks to Linus Gasser) +-moved the level 'Be Smart!' from second to tenth position in +levelset AddOn-2 +-corrected a check up in line_intersect() (thanks to Linus Gasser) +-when a level is completed it's the next player's turn +(thanks to Linus Gasser) + +2.2: +-added some icons +-grown bricks are not removed when reinitating level +-all highlighted chart entries are cleared before adding players to chart +-new levelset AddOn-2 using the new extras (10 levels) +-new animations +-new extras (thanks to Dante): + -TIME_ADD: adds 7 seconds to the duration of all active bonuses/maluses + -DISABLE: disables all active bonuses/maluses + -EXPLOSIVE BALL: if ball touches a brick it explodes and destroys it's + neighbors + -BONUS/MALUS MAGNET: either bonuses or maluses are attracted by the paddle + -WEAK BALL: if active there is a 40% chance that a brick isn't damaged +-new bricks: + -CHAOS BRICK: chaotic reflection of balls (thanks to Dante) + -REGENERATIVE BRICKS: this brick will restore one point duration + within 4 seconds if not hit again (thanks to Dante) + -SHIELDED BRICK: indestructible even for energy balls +-new beautiful explosions (thanks to Dante) +-added quick hint system +-lbreakout2-level directory is created properly +-highscore is not overwritten when updating +-/var/lib/games is created when not existing + +2.1.2: +-disabled double-click for confirmation +-increased sensitivity of the reflection check-up introduced in 2.1.1 +-fixed a bug that caused reflection on an already removed brick (and +propably some crashes) +-added a grid to the editor for easier editing +-added advanced option 'Key Speed' to modify speed of keyboard input +-energy balls pulsate faster +-'exploding brick' list cleared when initiating next level +-using new backgrounds from the Arianne project (thanks to Dante) + +2.1.1: +-added an important check up for ball reflection to fix a bug that +caused a crash when using a 'bonus floor' or a 'growing brick' + +2.1: +-new levelset with 15 levels +-fixed a nasty reflection bug where the ball got stuck at the bottom +of the screen making a loud noise +-fixed a bug where the ball was attached to the wall instead of the +paddle (Thanks to Patrick Hohmeyer!) +-invisible bricks +-explosive bricks +-fixed a bug in the menu +-added a 'quick help' +-modified bonus times +-manual updated +-'blue' balls are fading in and out +-two more colored bricks (gray, white) +-added three new maluses: + -'Lights Out!': total darkness (except ball, paddle and bonuses) + -'Ghostly Paddle': paddle disappears when not moving + (won't reflect balls) + -'Chaos': balls are reflected randomly at bricks +-attached balls keep contact with paddle while resizing +-each levelset got it's own highscore chart +-jumping of paddle after smooth resize fixed + +2.0.1: +-new optimized reflection algorithm (supposed to fix all +remaining bugs) + +2.0: +-reflection bug fixes: + -stated another (less) important break condition for + multiball reflection + -range tolerance for edge reflection increased + -additional checkup for 'neighbored bricks' + reflection + +2.0-pre2: +-player scores modified correctly in the end of the game +-fixed bonus floor deadlock +-fixed a reflection bug +-you may also quit a running game by 'q' now +-faster paddle movement when keys are used +-added dummy array to config file so no corruptions will +occur when new options are initiated + +2.0-pre1: +-ball is drawn correctly when moving up/left +-modified paddle reflection conditions +-normed the perpendicular vector of brick edges +-balls are properly reset when destroying a brick +with the 'metal' bonus (and no reflection occurs) +-highscore chart saved directly after game over +-new advanced option: ball below/above bonuses +-fullscreen/windowed switch by 'f' now allowed everywhere +-added a spec file for RPMs (thanks to Dennis Bjorklund) +-added some very important range checks for reflection + +2.0beta: +-smooth paddle resize +-bonus shadows drawed correctly (doesn't overlap other bonuses) +-modified brick reflection and hopefully fixed +the 'through walls like a ghost' bug +-fixed the wrong color key of frame (thanks to Andre Trindade) +-restart is allowed even with no life left if you got enough points to +buy a continue +-added a missing include in config.c and fixed some newline warnings + +2.0alpha-2: +-bit depth is adjusted to the settings of your desktop (instead of 16bit +hardcoded) +-correct color key for paddle and balls at bit depth > 16 + +2.0alpha: +-major code redesign and clean-ups + -C++ -> C + -structured source +-resolution changed from 512x288 to 640x480 (no black frame in fullscreen) +-up to 4 players (alternate) +-fading improved +-score counting improved +-optional constant frame rate (to prevent LBreakout from +consuming 100% CPU time) +-event handling improved: + -paddle does not slow down if framerate drops + -moving paddle and firing weapon at the same time now works for Linux + (problems with Mac and BeOS - therefore added an --enable-warp + option - see the README for more) + -usage of 'invert mouse' and 'motion modifier' improved +-shadow added +-graphics improved +-ball velocity specified by difficulty instead of level +-added a grab option to keep mouse in window (thanks to Mark Rowe) +-time of a bonus (if any limit) is added to current time (instead of +setting it) +-new bonuses: + 'End Of The Rainbow': while this is active each brick without + a bonus will release 1000 points + 'Joker': destroys all malus' and collects all bonus on screen + doubling time limit and score (if any) +-added and changed sounds +-new menu +-fixed a bug in shot handling (wrong bricks removed) +-the global highscore path is no longer hard-coded in the configure +script (option: --with-highscore-path) +-improved the paddle: + -works perfect! (balls won't go through the paddle) + -real convex behaviour +-improved the brick reflection (though edges need a better reflection +behaviour) +-in the menu ESCAPE takes back to the previous menu instead of +leaving the game +-integrated feature-packed level editor +-PNG is used for graphics (to beat the 1MB limit of the SDL competition) +-new documentation + +010315: +-when a blue metal ball destroys a wall its score is no longer +uninitialized (No chance anymore to get a BILLION points within minutes! ;) +-twinkling of bricks is disabled when animations are turned off +-fixed a bug occuring when loading own levels +-score is counted faster +-better example of own level in the manual (added as single +file 'test.lbr' as well) +-two charts: 'Highest Scores' and 'Highest Levels' +(thanks to Jean-Philippe Martin) + +001104: +-added 5 new levels +-remaining time of a bonus is displayed (optional) +-added speed-up/speed-down bonuses +-a blue ball now goes through indestructible walls as well +-freeze duration now is one second instead of two seconds +-changed the logo (thanks to marko kjellgren) + +001022: +-when paused resume game only if 'p' is pressed +-mouse invert option +-random starting angle (-60 to 60 degree) of a ball (optional) +-if starting angle is not random press left mouse button to fire the ball +to the left (right button to fire to the right) +-paddle can shrink below its original size (absolute minimum of 30 pixels) +-changed the indestructible bricks from level 03 to destructible ones +-moved option 'Paddle' from menu 'Controls' to 'Game' + +001018: +-fixed some bugs +-$(DESTDIR) now is used in Makefile.am (thanks to daniel burrows and lauri korts-parn) +-spec file improved +-highscore path changed to /var/lib/games + +001014: +-selecting fullscreen via menu works again +-added a spec file for redhat linux (thanks to lauri korts-parn) +-paddle works much better +-'shrink paddle' and 'expand paddle' bonuses can be distinguished better +-you can choose between a 'flat surface' and a 'convex surface' paddle +behaviour +-position of a ball will be reset when it is attached + +001006: +-fixed various bugs +-checks for SDL and pthread libs now +-timer improved +-removed some more egcs 2.91.66 problems +-sound is default (configure) +-added --disable-install option (configure) +-if SDL 1.1.5 is found -DSDL_1_1_5 is defined automatically (configure) +-if the paddle is resized attached balls will keep contact +-levels changed (25 now) +-weapon fires continuously while 'Fire' is pressed +-mouse pointer hidden when playing in fullscreen mode +-resolution no longer changed everytime entering a new level (in fullscreen +mode) +-you can enable/disable sound and transparancy, set the +animation level and turn on/off 'Fullscreen' while playing +-if a ball hits two bricks at the same time both will be removed +-paddle works better + +001002: +-works with egcs 2.91.66 now +-mouse pointer hidden when only keyboard is used + +000930-2: +-high score chart installed correctly +-no request for SDL_INIT_AUDIO if -DSOUND undefined + +000930: +-improved the installation process + +000929: +-works with SDL version 1.1.5 (or better), too + +000928: +-fixed the 'infinite loop' bug +-added a fullscreen option +-source path correctly set now +-changed some levels + +000924: +-initial public release diff --git a/project/jni/application/lbreakout2/INSTALL b/project/jni/application/lbreakout2/INSTALL new file mode 100644 index 000000000..02a4a0740 --- /dev/null +++ b/project/jni/application/lbreakout2/INSTALL @@ -0,0 +1,167 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes a while. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Type `make install' to install the programs and any data files and + documentation. + + 4. You can remove the program binaries and object files from the + source code directory by typing `make clean'. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/project/jni/application/lbreakout2/Makefile.am b/project/jni/application/lbreakout2/Makefile.am new file mode 100644 index 000000000..0872f2fba --- /dev/null +++ b/project/jni/application/lbreakout2/Makefile.am @@ -0,0 +1,74 @@ +SUBDIRS = intl m4 po common gui game server client docs + +EXTRA_DIST = config.rpath AUTHORS COPYING ChangeLog INSTALL README \ +README-SDL.txt TODO lbreakout2.spec touchall lbreakout32.gif \ +lbreakout48.gif lbreakout2.desktop.in win32_mancomp win32_preparchive + +desktopdir = $(datadir)/applications +desktop_DATA = lbreakout2.desktop +icondir = $(datadir)/icons +icon_DATA = lbreakout48.gif + +WIN32_TEXT = AUTHORS COPYING ChangeLog INSTALL README README-SDL.txt \ +TODO lbreakout2.spec ABOUT-NLS +WIN32_LOCAL_DLL = SDL.dll SDL_mixer.dll zlib.dll libpng.dll +WIN32_SYS_DLL = msvcrt.dll + +AUTOMAKE_OPTIONS = foreign + +# We can't use static desktop file because of icon location. Is this +# the right way to handle it? At least it works... as long as $datadir +# does not contain plus signs. :-) +lbreakout2.desktop: + @sed -e "s+Icon=+Icon=$(datadir)/icons/lbreakout48.gif+" \ + < lbreakout2.desktop.in > lbreakout2.desktop + +win32text: $(WIN32_TEXT) + @echo Converting text files for win32 installer + @-rm -rf ./win32text + @mkdir ./win32text + @for textfile in $(WIN32_TEXT); do \ + $(AWK) '{printf "%s\r\n",$$0}' $$textfile > ./win32text/$$textfile ; \ + done + +win32-installer-script: @win32_inst_script@ + +@win32_inst_script@: win32text + @echo Generating win32 installer script + @echo "[Setup]" > $@ + @echo "AppName=@appname@" >> $@ + @echo "AppVerName=@appname@ $(VERSION)" >> $@ + @echo "AppPublisher=Michael Speck" >> $@ + @echo "AppPublisherURL=http://lgames.sourceforge.net/index.php?project=LBreakout2" >> $@ + @echo "AppSupportURL=http://lgames.sourceforge.net/index.php?project=LBreakout2" >> $@ + @echo "AppUpdatesURL=http://lgames.sourceforge.net/index.php?project=LBreakout2" >> $@ + @echo "DefaultDirName={pf}\\$(PACKAGE)" >> $@ + @echo "DefaultGroupName=@appname@" >> $@ + @echo "OutputDir=." >> $@ + @echo "Uninstallable=yes" >> $@ + @echo "AlwaysCreateUninstallIcon=yes" >> $@ + @echo "AdminPrivilegesRequired=1" >> $@ + @echo "[Tasks]" >> $@ + @echo "Name: \"desktopicon\"; Description: \"Create a &desktop icon\"; GroupDescription: \"Additional icons:\"" >> $@ + @echo "[Files]" >> $@ + @(cd win32dlls; for file in $(WIN32_LOCAL_DLL); do echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> $@; done) + @(cd win32dlls; for file in $(WIN32_SYS_DLL); do echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{sys}\"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall" >> $@; done) + @echo "Source: \"win32text\\*.*\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> $@; + @list='$(SUBDIRS)'; for subdir in $$list; do (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); done + @echo "[Icons]" >> $@ + @echo "Name: \"{group}\\@appname@\"; Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; WorkingDir: \"{app}\"" >> $@ + @echo "Name: \"{group}\\@appname@ Manual\"; Filename: \"{app}\\docs\\index.html\"" >> $@ + @echo "Name: \"{userdesktop}\\@appname@\"; Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; WorkingDir: \"{app}\"; Tasks: \"desktopicon\"" >> $@ + @echo "[Run]" >> $@ + @echo "Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; Description: \"Launch @appname@\"; Flags: nowait postinstall skipifsilent" >> $@ + + @$(AWK) '{printf "%s\r\n",$$0}' $@ > installer.iss.w32 + @mv installer.iss.w32 $@ + +win32-installer: win32-installer-script + $(ISCC) @win32_inst_script@ + @mv setup.exe $(PACKAGE)-$(VERSION)-win32.exe + @-rm -rf win32text + @echo "Installer created: $(PACKAGE)-$(VERSION)-win32.exe" + +ACLOCAL_AMFLAGS = -I m4 diff --git a/project/jni/application/lbreakout2/Makefile.in b/project/jni/application/lbreakout2/Makefile.in new file mode 100644 index 000000000..cbffcf9fd --- /dev/null +++ b/project/jni/application/lbreakout2/Makefile.in @@ -0,0 +1,781 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure $(top_srcdir)/intl/Makefile.in \ + ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS TODO \ + config.guess config.rpath config.sub depcomp install-sh \ + missing mkinstalldirs +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longdouble.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = intl/Makefile +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(icondir)" +desktopDATA_INSTALL = $(INSTALL_DATA) +iconDATA_INSTALL = $(INSTALL_DATA) +DATA = $(desktop_DATA) $(icon_DATA) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +appname = @appname@ +arch_flag = @arch_flag@ +audio_flag = @audio_flag@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +doc_dir = @doc_dir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +hi_dir = @hi_dir@ +hi_inst_flag = @hi_inst_flag@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +inst_dir = @inst_dir@ +inst_flag = @inst_flag@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +locdir_flag = @locdir_flag@ +mandir = @mandir@ +mixer_flag = @mixer_flag@ +mkdir_p = @mkdir_p@ +netdebug_flag = @netdebug_flag@ +network_flag = @network_flag@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sdlnet_flag = @sdlnet_flag@ +sdlnet_lib_flag = @sdlnet_lib_flag@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +warp_flag = @warp_flag@ +win32_deps = @win32_deps@ +win32_inst_script = @win32_inst_script@ +SUBDIRS = intl m4 po common gui game server client docs +EXTRA_DIST = config.rpath AUTHORS COPYING ChangeLog INSTALL README \ +README-SDL.txt TODO lbreakout2.spec touchall lbreakout32.gif \ +lbreakout48.gif lbreakout2.desktop.in win32_mancomp win32_preparchive + +desktopdir = $(datadir)/applications +desktop_DATA = lbreakout2.desktop +icondir = $(datadir)/icons +icon_DATA = lbreakout48.gif +WIN32_TEXT = AUTHORS COPYING ChangeLog INSTALL README README-SDL.txt \ +TODO lbreakout2.spec ABOUT-NLS + +WIN32_LOCAL_DLL = SDL.dll SDL_mixer.dll zlib.dll libpng.dll +WIN32_SYS_DLL = msvcrt.dll +AUTOMAKE_OPTIONS = foreign +ACLOCAL_AMFLAGS = -I m4 +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +uninstall-info-am: +install-desktopDATA: $(desktop_DATA) + @$(NORMAL_INSTALL) + test -z "$(desktopdir)" || $(mkdir_p) "$(DESTDIR)$(desktopdir)" + @list='$(desktop_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(desktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(desktopdir)/$$f'"; \ + $(desktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(desktopdir)/$$f"; \ + done + +uninstall-desktopDATA: + @$(NORMAL_UNINSTALL) + @list='$(desktop_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(desktopdir)/$$f'"; \ + rm -f "$(DESTDIR)$(desktopdir)/$$f"; \ + done +install-iconDATA: $(icon_DATA) + @$(NORMAL_INSTALL) + test -z "$(icondir)" || $(mkdir_p) "$(DESTDIR)$(icondir)" + @list='$(icon_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(iconDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(icondir)/$$f'"; \ + $(iconDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(icondir)/$$f"; \ + done + +uninstall-iconDATA: + @$(NORMAL_UNINSTALL) + @list='$(icon_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(icondir)/$$f'"; \ + rm -f "$(DESTDIR)$(icondir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/intl $(distdir)/m4 $(distdir)/po + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + --with-included-gettext \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(icondir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-desktopDATA install-iconDATA + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-desktopDATA uninstall-iconDATA \ + uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-recursive ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ + dist-tarZ dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-desktopDATA install-exec \ + install-exec-am install-iconDATA install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-desktopDATA uninstall-iconDATA uninstall-info-am + + +# We can't use static desktop file because of icon location. Is this +# the right way to handle it? At least it works... as long as $datadir +# does not contain plus signs. :-) +lbreakout2.desktop: + @sed -e "s+Icon=+Icon=$(datadir)/icons/lbreakout48.gif+" \ + < lbreakout2.desktop.in > lbreakout2.desktop + +win32text: $(WIN32_TEXT) + @echo Converting text files for win32 installer + @-rm -rf ./win32text + @mkdir ./win32text + @for textfile in $(WIN32_TEXT); do \ + $(AWK) '{printf "%s\r\n",$$0}' $$textfile > ./win32text/$$textfile ; \ + done + +win32-installer-script: @win32_inst_script@ + +@win32_inst_script@: win32text + @echo Generating win32 installer script + @echo "[Setup]" > $@ + @echo "AppName=@appname@" >> $@ + @echo "AppVerName=@appname@ $(VERSION)" >> $@ + @echo "AppPublisher=Michael Speck" >> $@ + @echo "AppPublisherURL=http://lgames.sourceforge.net/index.php?project=LBreakout2" >> $@ + @echo "AppSupportURL=http://lgames.sourceforge.net/index.php?project=LBreakout2" >> $@ + @echo "AppUpdatesURL=http://lgames.sourceforge.net/index.php?project=LBreakout2" >> $@ + @echo "DefaultDirName={pf}\\$(PACKAGE)" >> $@ + @echo "DefaultGroupName=@appname@" >> $@ + @echo "OutputDir=." >> $@ + @echo "Uninstallable=yes" >> $@ + @echo "AlwaysCreateUninstallIcon=yes" >> $@ + @echo "AdminPrivilegesRequired=1" >> $@ + @echo "[Tasks]" >> $@ + @echo "Name: \"desktopicon\"; Description: \"Create a &desktop icon\"; GroupDescription: \"Additional icons:\"" >> $@ + @echo "[Files]" >> $@ + @(cd win32dlls; for file in $(WIN32_LOCAL_DLL); do echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> $@; done) + @(cd win32dlls; for file in $(WIN32_SYS_DLL); do echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{sys}\"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall" >> $@; done) + @echo "Source: \"win32text\\*.*\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> $@; + @list='$(SUBDIRS)'; for subdir in $$list; do (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); done + @echo "[Icons]" >> $@ + @echo "Name: \"{group}\\@appname@\"; Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; WorkingDir: \"{app}\"" >> $@ + @echo "Name: \"{group}\\@appname@ Manual\"; Filename: \"{app}\\docs\\index.html\"" >> $@ + @echo "Name: \"{userdesktop}\\@appname@\"; Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; WorkingDir: \"{app}\"; Tasks: \"desktopicon\"" >> $@ + @echo "[Run]" >> $@ + @echo "Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; Description: \"Launch @appname@\"; Flags: nowait postinstall skipifsilent" >> $@ + + @$(AWK) '{printf "%s\r\n",$$0}' $@ > installer.iss.w32 + @mv installer.iss.w32 $@ + +win32-installer: win32-installer-script + $(ISCC) @win32_inst_script@ + @mv setup.exe $(PACKAGE)-$(VERSION)-win32.exe + @-rm -rf win32text + @echo "Installer created: $(PACKAGE)-$(VERSION)-win32.exe" +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/project/jni/application/lbreakout2/NEWS b/project/jni/application/lbreakout2/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/project/jni/application/lbreakout2/README b/project/jni/application/lbreakout2/README new file mode 100644 index 000000000..f59ad0829 --- /dev/null +++ b/project/jni/application/lbreakout2/README @@ -0,0 +1,235 @@ + + LBreakout2 + + a breakout-style arcade game for Linux + by Michael Speck + +******************** +I. Requirements +II. Installation +III. Network Server +IV. Documentation +V. Troubleshooting +VI. Localization +VII. Resources +VIII. Feedback +******************** + +******************** +I. Requirements +******************** +LBreakout runs in X and uses SDL (any version though >= 1.1.4 +is recommended), SDL_mixer (optional for sound) and SDL_net +(optional for networking on non-Unices). These libraries +can be found at http://libsdl.org. The graphical stuff requires PNG +which is usually included in a distro. If not check out +http://www.libpng.org/pub/png/libpng.html. + +******************** +II. Installation +******************** +Enter your favorite shell and type in the following stuff (in the +directory you extracted the LBreakout source) +> ./configure [--disable-audio] [--disable-install] [--enable-warp] + [--with-docdir=DOCDIR] [--disable-network] + [--enable-sdl-net] [--localstatedir=HIDIR] + --disable-audio: no sound + --disable-install: no installation; play from source directory + --enable-warp: nescessary for non-Unices to use relative + mouse motion for inverting or modify mouse + speed + --with-docdir: install documentation to $DOCDIR/lbreakout2 + DEFAULT: /usr/doc + --disable-network: compile LBreakout2 without any network + support + --enable-sdl-net: use SDL_net for networking (required if + platform is not Unix-like) + --localstatedir: install global highscores to this directory + REPLACES --with-highscore-path TO COMPLY + WITH AUTOCONF; THE DEFAULT LOCATION NOW + DEPENDS ON YOUR DISTRIBUTION: PREVIOUSLY + IT WAS /var/lib/games. USE + --localstatedir=/var/lib/games FOR EXISTING + HIGHSCORES. +> make +> su (become root) +> make install (if install wasn't disabled) +> exit (become user again) +> lbreakout2 (run client/non-network game) + +Note: Swearing is disabled in version >= 2.6. To enable it you have to +edit ~/.lgames/lbreakout2.conf manually and set the hidden option badspeech +to 1. If you cannot find the option start and quit LBreakout2 once. + +Building on Win32 +----------------- +There might be an easier way to get things to work but at least +the following worked for me. Simplifications are welcome. + +1) Get MinGW, Msys, MsysDTK from http://mingw.sf.net + The following uses michael as the Msys home directory, naturally + you'll have to substitute your windows user name for this. +2) Get SDL, SDL_mixer, SDL_net from http://libsdl.org as tar.gz's + and put them to c:\msys\1.0\home\michael (or whereever you + installed Msys to) +3) Get libpng and zlib from http://libpng.org and put them to the + same directory as above. +4) Same with the latest and greatest LBreakout2 package, which you + already have, I assume. :) +5) Start Msys and enter the commands + tar -xzf *.tar.gz (extract the above archives) + cd SDL-1.2.7; (your version might differ, of course) + configure; make; make install; + cd .. + [do the same with SDL_net, SDL_mixer, zlib] + ln -s libpng-1.2.5 libpng (your version might differ, of course) + ln -s zlib-1.1.3 zlib (your version might differ, of course) + cd libpng-1.2.5 + cp scripts/makefile.gcc Makefile; make + cp png.h pngconf.h /usr/local/include + cp libpng.a /usr/local/lib (manual install as the linux makefile + caused problems) + cd .. + cd lbreakout2-2.5 + export LDFLAGS="-L/usr/local/lib" + export CFLAGS="-I/usr/local/include" + echo '' > depcomp (why this is required is again a mystery to me) + configure --disable-install --enable-sdl-net + win32_mancomp (this is a hack required for unknown reasons here. + make works but it just states the gcc commands but does + not execute them, in this little script they work however, + dunno why... a fix for this would be most welcome. if you + change any configure or install settings the hardcoded + compile command in win32_mancomp will probably not work so + you should check it for such a case) + make +6) Get the dll's of SDL, SDL_mixer, SDL_net, libpng, zlib and put + them to c:\msys\1.0\home\michael\lbreakout2-2.5\win32dlls as well + as msvcrt.dll (freely available from Microsoft) +7) run win32_preparchive (this will copy all required files to + the directory lbreakout2) +8) copy c:\msys\1.0\home\michael\lbreakout2-2.5\lbreakout2 to + c:\games or whereever you want to and run the game from there. +NOTE: The server does not open any display and in windows a message +overwrites all old messages in stdout.txt. Also the command line options +do not work, at least it seems so. All I managed was to run the server +without any options but at least I could connect to it successfully. + +Lee Read added some scripting to create a standalone installer. This +scripting is broken right now, but hopefully fixed soon. + +Building on OS/2 +---------------- +On OS/2 GCC creates windowed console apps by default. There are various +solutions, see http://www.edm2.com/index.php/SDL#General_tips_and_tricks +or run 'emxbind -e -p lbreakout2.exe' after building. - Dave Yeo + +******************** +III. Network Server +******************** +To run a server start lbreakout2server with any of the following +options: +-p server port (default 2002) +-l maximum number of users that may connect to the server + (default is 30) +-i a user will be kicked if he didn't communicate with the + server for this amount of seconds (default is 1200) +-n this message is displayed to welcome a user +-a a user that logs in with this name will become + administrator named admin (default is no admin) +-b number of bots with strength 800 and 1000 (paddle speed + in pixels, default is none) +After that you'll have to query your IP (e.g. with +/sbin/ifconfig) and pass it to your friends as there is no permanent +internet server yet. Note, that you shouldn't use localhost as you +won't be able to challenge others then. +Check the online documentation at http://lgames.sf.net +for information on how to play. +When updating this README the last time, petersdtp.net:8000 has been +the current internet test server. + +******************** +IV. Documentation +******************** +If you have any questions about options, game play or editor +please check the documentation and see if you +can find an answer there. I will not respond to any eMails concerning +questions easily answered by the manual (/usr/doc/lbreakout2). +However, if you have any other problems or suggestions or you found a +bug please contact me: kulkanie@gmx.net + +******************** +V. Troubleshooting +******************** +The solution for relative mouse motion (nescessary when inverting or +slowing down mouse by motion modifier) works fine for Linux and +Win32 but fails for other non-Unices. Current solution is to warp the +mouse (by using configure option --enable-warp). Unfortunately, this +will handicap events when trying to fire weapon or release balls AND +move the paddle at the same time. This means it may happen that a weapon +is not fired or doesn't stop fire, balls keep being attached and so +on... +--- +Disabling sound while playing seems to result in loosing various +sound channels when some sounds were actually mixed. +--- +Someone reported that he had problems with PNG (configure script +didn't find it) if it was installed to /usr/local/lib. +Setting a link in /usr/lib fixes this. +--- +If you have SDL_mixer installed but configure tells you that it can't +find it, remember that you have to install the development package +for compiling! +--- +If you can't compile because LBreakout2' timestamps are slightly in +the future run 'touchall' (found in the configure directory). +--- +If 'fullscreen' just adds a black frame around the game but does +not change the solution make sure that you have 640x480 available +as resolution in your Xconfig. +--- +If the SDL sound seems to be out of sync first try +to modify the audio buffer size in ~/.lgames/lbreakout2.conf. +If this fails set SDL_AUDIODRIVER to dma (export SDL_AUDIODRIVER=dma). + +******************** +VI. Localization +******************** +This game now supports i18n. If you want to add l10n for your native language, +please contact me first, to prevent overlapping translations. A thorough +documentation can be found at + http://www.gnu.org/software/gettext/manual/html_mono/gettext.html +Basically, you will have to do the following: + 1) cd po + 2) add your language code (e.g., de for German) to the existing line in +LINGUAS merely separated from the other languages by a blank + 3) run `msginit -o .po` with replaced by your language code + 4) translate the english message IDs in .po + 5) run make .gmo +Whenever you change something in your translation you'll have to repeat +step 5). I strongly recommend to configure the program with --disable-install +while working on a translation. Otherwise you'd have to copy and rename the +.gmo file as root every time you want to see your changes. If the source has +been compiled without installation, only step 5) and simply running the game +is required. (Of course, the enviroment variable LANG must be set to your +locale.) +This should suffice. If not, please read the excellent documentation at +gnu.org. The fonts do only contain the basic latin letters. No special letters +(like the german umlauts or any accents for example) are supported, so a l10n +should not use them. If a string has a single %, meant as a percent sign, +you'll have to manually remove the 'format' comment above the id (if any). + +******************** +VII. Resources +******************** +Some graphics and sounds has been taken and modified from other +non-copyrighted resources: +Backgrounds: http://www.grsites.com/textures +Sounds: "Web Clip Empire 50.000", NovaMedia Verlag, Germany +Thanks to all of these guys for there free stuff! + +******************** +VIII. Feedback +******************** +LGames URL: http://www.lgames.sf.net +e-Mail: kulkanie@gmx.net diff --git a/project/jni/application/lbreakout2/README-SDL.txt b/project/jni/application/lbreakout2/README-SDL.txt new file mode 100644 index 000000000..4d36ca9dc --- /dev/null +++ b/project/jni/application/lbreakout2/README-SDL.txt @@ -0,0 +1,13 @@ + +Please distribute this file with the SDL runtime environment: + +The Simple DirectMedia Layer (SDL for short) is a cross-platfrom library +designed to make it easy to write multi-media software, such as games and +emulators. + +The Simple DirectMedia Layer library source code is available from: +http://www.libsdl.org/ + +This library is distributed under the terms of the GNU LGPL license: +http://www.gnu.org/copyleft/lesser.html + diff --git a/project/jni/application/lbreakout2/TODO b/project/jni/application/lbreakout2/TODO new file mode 100644 index 000000000..10fb6335c --- /dev/null +++ b/project/jni/application/lbreakout2/TODO @@ -0,0 +1,11 @@ +- i18n of y/n in game.c und misc.c desinitgration +- fonts with special letters +- info file for theme +- replace swearing +- allow themes to have several 'between level' screens +- udp flooding after game finished +- allow additional weapon graphic/animation planted on top + of the paddle +- improve pre-calculation of networked ball movement (dummy reflect) +- joystick as input +- shadow surface for zoom diff --git a/project/jni/application/lbreakout2/acinclude.m4 b/project/jni/application/lbreakout2/acinclude.m4 new file mode 100644 index 000000000..ada3a4165 --- /dev/null +++ b/project/jni/application/lbreakout2/acinclude.m4 @@ -0,0 +1,175 @@ +# Configure paths for SDL +# Sam Lantinga 9/21/99 +# stolen from Manish Singh +# stolen back from Frank Belew +# stolen from Manish Singh +# Shamelessly stolen from Owen Taylor + +dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS +dnl +AC_DEFUN([AM_PATH_SDL], +[dnl +dnl Get the cflags and libraries from the sdl-config script +dnl +AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], + sdl_prefix="$withval", sdl_prefix="") +AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], + sdl_exec_prefix="$withval", sdl_exec_prefix="") +AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], + , enable_sdltest=yes) + + if test x$sdl_exec_prefix != x ; then + sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config + fi + fi + if test x$sdl_prefix != x ; then + sdl_args="$sdl_args --prefix=$sdl_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_prefix/bin/sdl-config + fi + fi + + AC_REQUIRE([AC_CANONICAL_TARGET]) + PATH="$prefix/bin:$prefix/usr/bin:$PATH" + AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) + min_sdl_version=ifelse([$1], ,0.11.0,$1) + AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) + no_sdl="" + if test "$SDL_CONFIG" = "no" ; then + no_sdl=yes + else + SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` + SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` + + sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_sdltest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" +dnl +dnl Now check if the installed SDL is sufficiently new. (Also sanity +dnl checks the results of sdl-config to some extent +dnl + rm -f conf.sdltest + AC_TRY_RUN([ +#include +#include +#include +#include "SDL.h" + +char* +my_strdup (char *str) +{ + char *new_str; + + if (str) + { + new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main (int argc, char *argv[]) +{ + int major, minor, micro; + char *tmp_version; + + /* This hangs on some systems (?) + system ("touch conf.sdltest"); + */ + { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_sdl_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_sdl_version"); + exit(1); + } + + if (($sdl_major_version > major) || + (($sdl_major_version == major) && ($sdl_minor_version > minor)) || + (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); + printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); + printf("*** best to upgrade to the required version.\n"); + printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); + printf("*** to point to the correct copy of sdl-config, and remove the file\n"); + printf("*** config.cache before re-running configure\n"); + return 1; + } +} + +],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_sdl" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl-config script installed by SDL could not be found" + echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the SDL_CONFIG environment variable to the" + echo "*** full path to sdl-config." + else + if test -f conf.sdltest ; then + : + else + echo "*** Could not run SDL test program, checking why..." + CFLAGS="$CFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + AC_TRY_LINK([ +#include +#include "SDL.h" + +int main(int argc, char *argv[]) +{ return 0; } +#undef main +#define main K_and_R_C_main +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding SDL or finding the wrong" + echo "*** version of SDL. If it is not finding SDL, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means SDL was incorrectly installed" + echo "*** or that you have moved SDL since it was installed. In the latter case, you" + echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + SDL_CFLAGS="" + SDL_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(SDL_CFLAGS) + AC_SUBST(SDL_LIBS) + rm -f conf.sdltest +]) diff --git a/project/jni/application/lbreakout2/aclocal.m4 b/project/jni/application/lbreakout2/aclocal.m4 new file mode 100644 index 000000000..1a16f2b38 --- /dev/null +++ b/project/jni/application/lbreakout2/aclocal.m4 @@ -0,0 +1,891 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/codeset.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/glibc21.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intdiv0.m4]) +m4_include([m4/intmax.m4]) +m4_include([m4/inttypes-pri.m4]) +m4_include([m4/inttypes.m4]) +m4_include([m4/inttypes_h.m4]) +m4_include([m4/isc-posix.m4]) +m4_include([m4/lcmessage.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/longdouble.m4]) +m4_include([m4/longlong.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/po.m4]) +m4_include([m4/printf-posix.m4]) +m4_include([m4/progtest.m4]) +m4_include([m4/signed.m4]) +m4_include([m4/size_max.m4]) +m4_include([m4/stdint_h.m4]) +m4_include([m4/uintmax_t.m4]) +m4_include([m4/ulonglong.m4]) +m4_include([m4/wchar_t.m4]) +m4_include([m4/wint_t.m4]) +m4_include([m4/xsize.m4]) +m4_include([acinclude.m4]) diff --git a/project/jni/application/lbreakout2/client/Makefile.am b/project/jni/application/lbreakout2/client/Makefile.am new file mode 100644 index 000000000..0709fd62e --- /dev/null +++ b/project/jni/application/lbreakout2/client/Makefile.am @@ -0,0 +1,68 @@ +DEFS = @network_flag@ @sdlnet_flag@ @arch_flag@ @warp_flag@ @audio_flag@ @inst_flag@ @hi_inst_flag@ @locdir_flag@ @DEFS@ + +lbreakout2res.o: win32.ico + @echo "1 VERSIONINFO" > $(PACKAGE).rc + @echo "FILEVERSION `echo $(VERSION) | $(AWK) 'ORS=""; { subs = gsub(/\./,","); print $0; for (ndx=subs; ndx < 3; ndx++) print ",0"; }'`" >> $(PACKAGE).rc + @echo "PRODUCTVERSION `echo $(VERSION) | $(AWK) 'ORS=""; { subs = gsub(/\./,","); print $0; for (ndx=subs; ndx < 3; ndx++) print ",0"; }'`" >> $(PACKAGE).rc + @echo "FILEFLAGSMASK 0" >> $(PACKAGE).rc + @echo "FILEOS 0x40000" >> $(PACKAGE).rc + @echo "FILETYPE 1" >> $(PACKAGE).rc + @echo "{" >> $(PACKAGE).rc + @echo " BLOCK \"StringFileInfo\"" >> $(PACKAGE).rc + @echo " {" >> $(PACKAGE).rc + @echo " BLOCK \"040904E4\"" >> $(PACKAGE).rc + @echo " {" >> $(PACKAGE).rc + @echo " VALUE \"CompanyName\", \"LGames - Michael Speck\"" >> $(PACKAGE).rc + @echo " VALUE \"FileDescription\", \"@appname@\"" >> $(PACKAGE).rc + @echo " VALUE \"FileVersion\", \"$(VERSION)\"" >> $(PACKAGE).rc + @echo " VALUE \"InternalName\", \"$(PACKAGE)\"" >> $(PACKAGE).rc + @echo " VALUE \"LegalCopyright\", \"GNU Public License\"" >> $(PACKAGE).rc + @echo " VALUE \"OriginalFilename\", \"$(PACKAGE)$(EXEEXT)\"" >> $(PACKAGE).rc + @echo " VALUE \"ProductName\", \"@appname@\"" >> $(PACKAGE).rc + @echo " VALUE \"ProductVersion\", \"$(VERSION)\"" >> $(PACKAGE).rc + @echo " }" >> $(PACKAGE).rc + @echo " }" >> $(PACKAGE).rc + @echo "}" >> $(PACKAGE).rc + @echo "0 ICON win32.ico" >> $(PACKAGE).rc + @windres -o $@ -i $(PACKAGE).rc + +bin_PROGRAMS = lbreakout2 +lbreakout2_SOURCES = credit.c shine.c extras.c balls.c shrapnells.c \ +shots.c event.c paddle.c frame.c misc.c bricks.c player.c \ +file.c config.c \ +item.c menu.c manager.c value.c chart.c \ +editor.c help.c hint.c theme.c client.c client_recv.c \ +client_data.c client_handlers.c game.c comm.c slot.c \ +display.c main.c win32.ico +lbreakout2_DEPENDENCIES = @win32_deps@ +lbreakout2_LDADD = @win32_deps@ ../common/libcommon.a ../gui/libGui.a ../game/libgame.a @mixer_flag@ @sdlnet_lib_flag@ + +EXTRA_DIST = credit.h shine.h extras.h balls.h shrapnells.h \ +shots.h event.h paddle.h frame.h misc.h bricks.h player.h \ +file.h config.h lbreakout.h \ +item.h menu.h manager.h value.h chart.h \ +editor.h help.h hint.h theme.h client.h client_data.h \ +client_handlers.h game.h comm.h slot.h \ +display.h empty.hscr + +SUBDIRS = gfx sounds levels gui_theme + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir) + $(mkinstalldirs) $(DESTDIR)$(hi_dir) + if ! test -f $(DESTDIR)$(hi_dir)/lbreakout2.hscr; then \ + $(INSTALL_DATA) -m 666 empty.hscr $(DESTDIR)$(hi_dir)/lbreakout2.hscr; \ + fi; + +uninstall-local: + rm -rf $(DESTDIR)$(inst_dir) + rm -f $(DESTDIR)$(hi_dir)/lbreakout2.hscr + rm -rf $(DESTDIR)$(doc_dir)/lbreakout2 + +win32-install-script: + @$(STRIP) $(PACKAGE)$(EXEEXT) + @echo "Source: \"`pwd -W`\\$(PACKAGE)$(EXEEXT)\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@ + @list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir \ + && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); \ + done diff --git a/project/jni/application/lbreakout2/client/Makefile.in b/project/jni/application/lbreakout2/client/Makefile.in new file mode 100644 index 000000000..76a6b04e5 --- /dev/null +++ b/project/jni/application/lbreakout2/client/Makefile.in @@ -0,0 +1,689 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = lbreakout2$(EXEEXT) +subdir = client +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longdouble.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_lbreakout2_OBJECTS = credit.$(OBJEXT) shine.$(OBJEXT) \ + extras.$(OBJEXT) balls.$(OBJEXT) shrapnells.$(OBJEXT) \ + shots.$(OBJEXT) event.$(OBJEXT) paddle.$(OBJEXT) \ + frame.$(OBJEXT) misc.$(OBJEXT) bricks.$(OBJEXT) \ + player.$(OBJEXT) file.$(OBJEXT) config.$(OBJEXT) \ + item.$(OBJEXT) menu.$(OBJEXT) manager.$(OBJEXT) \ + value.$(OBJEXT) chart.$(OBJEXT) editor.$(OBJEXT) \ + help.$(OBJEXT) hint.$(OBJEXT) theme.$(OBJEXT) client.$(OBJEXT) \ + client_recv.$(OBJEXT) client_data.$(OBJEXT) \ + client_handlers.$(OBJEXT) game.$(OBJEXT) comm.$(OBJEXT) \ + slot.$(OBJEXT) display.$(OBJEXT) main.$(OBJEXT) +lbreakout2_OBJECTS = $(am_lbreakout2_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(lbreakout2_SOURCES) +DIST_SOURCES = $(lbreakout2_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @network_flag@ @sdlnet_flag@ @arch_flag@ @warp_flag@ @audio_flag@ @inst_flag@ @hi_inst_flag@ @locdir_flag@ @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +appname = @appname@ +arch_flag = @arch_flag@ +audio_flag = @audio_flag@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +doc_dir = @doc_dir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +hi_dir = @hi_dir@ +hi_inst_flag = @hi_inst_flag@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +inst_dir = @inst_dir@ +inst_flag = @inst_flag@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +locdir_flag = @locdir_flag@ +mandir = @mandir@ +mixer_flag = @mixer_flag@ +mkdir_p = @mkdir_p@ +netdebug_flag = @netdebug_flag@ +network_flag = @network_flag@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sdlnet_flag = @sdlnet_flag@ +sdlnet_lib_flag = @sdlnet_lib_flag@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +warp_flag = @warp_flag@ +win32_deps = @win32_deps@ +win32_inst_script = @win32_inst_script@ +lbreakout2_SOURCES = credit.c shine.c extras.c balls.c shrapnells.c \ +shots.c event.c paddle.c frame.c misc.c bricks.c player.c \ +file.c config.c \ +item.c menu.c manager.c value.c chart.c \ +editor.c help.c hint.c theme.c client.c client_recv.c \ +client_data.c client_handlers.c game.c comm.c slot.c \ +display.c main.c win32.ico + +lbreakout2_DEPENDENCIES = @win32_deps@ +lbreakout2_LDADD = @win32_deps@ ../common/libcommon.a ../gui/libGui.a ../game/libgame.a @mixer_flag@ @sdlnet_lib_flag@ +EXTRA_DIST = credit.h shine.h extras.h balls.h shrapnells.h \ +shots.h event.h paddle.h frame.h misc.h bricks.h player.h \ +file.h config.h lbreakout.h \ +item.h menu.h manager.h value.h chart.h \ +editor.h help.h hint.h theme.h client.h client_data.h \ +client_handlers.h game.h comm.h slot.h \ +display.h empty.hscr + +SUBDIRS = gfx sounds levels gui_theme +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign client/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +lbreakout2$(EXEEXT): $(lbreakout2_OBJECTS) $(lbreakout2_DEPENDENCIES) + @rm -f lbreakout2$(EXEEXT) + $(LINK) $(lbreakout2_LDFLAGS) $(lbreakout2_OBJECTS) $(lbreakout2_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/balls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bricks.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chart.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client_data.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client_handlers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client_recv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/credit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/display.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/editor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/event.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extras.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frame.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/game.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/item.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paddle.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shots.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shrapnells.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/theme.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/value.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-data-local + +install-exec-am: install-binPROGRAMS + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-local + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-binPROGRAMS clean-generic clean-recursive ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-data-local install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-info-am uninstall-local + + +lbreakout2res.o: win32.ico + @echo "1 VERSIONINFO" > $(PACKAGE).rc + @echo "FILEVERSION `echo $(VERSION) | $(AWK) 'ORS=""; { subs = gsub(/\./,","); print $0; for (ndx=subs; ndx < 3; ndx++) print ",0"; }'`" >> $(PACKAGE).rc + @echo "PRODUCTVERSION `echo $(VERSION) | $(AWK) 'ORS=""; { subs = gsub(/\./,","); print $0; for (ndx=subs; ndx < 3; ndx++) print ",0"; }'`" >> $(PACKAGE).rc + @echo "FILEFLAGSMASK 0" >> $(PACKAGE).rc + @echo "FILEOS 0x40000" >> $(PACKAGE).rc + @echo "FILETYPE 1" >> $(PACKAGE).rc + @echo "{" >> $(PACKAGE).rc + @echo " BLOCK \"StringFileInfo\"" >> $(PACKAGE).rc + @echo " {" >> $(PACKAGE).rc + @echo " BLOCK \"040904E4\"" >> $(PACKAGE).rc + @echo " {" >> $(PACKAGE).rc + @echo " VALUE \"CompanyName\", \"LGames - Michael Speck\"" >> $(PACKAGE).rc + @echo " VALUE \"FileDescription\", \"@appname@\"" >> $(PACKAGE).rc + @echo " VALUE \"FileVersion\", \"$(VERSION)\"" >> $(PACKAGE).rc + @echo " VALUE \"InternalName\", \"$(PACKAGE)\"" >> $(PACKAGE).rc + @echo " VALUE \"LegalCopyright\", \"GNU Public License\"" >> $(PACKAGE).rc + @echo " VALUE \"OriginalFilename\", \"$(PACKAGE)$(EXEEXT)\"" >> $(PACKAGE).rc + @echo " VALUE \"ProductName\", \"@appname@\"" >> $(PACKAGE).rc + @echo " VALUE \"ProductVersion\", \"$(VERSION)\"" >> $(PACKAGE).rc + @echo " }" >> $(PACKAGE).rc + @echo " }" >> $(PACKAGE).rc + @echo "}" >> $(PACKAGE).rc + @echo "0 ICON win32.ico" >> $(PACKAGE).rc + @windres -o $@ -i $(PACKAGE).rc + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir) + $(mkinstalldirs) $(DESTDIR)$(hi_dir) + if ! test -f $(DESTDIR)$(hi_dir)/lbreakout2.hscr; then \ + $(INSTALL_DATA) -m 666 empty.hscr $(DESTDIR)$(hi_dir)/lbreakout2.hscr; \ + fi; + +uninstall-local: + rm -rf $(DESTDIR)$(inst_dir) + rm -f $(DESTDIR)$(hi_dir)/lbreakout2.hscr + rm -rf $(DESTDIR)$(doc_dir)/lbreakout2 + +win32-install-script: + @$(STRIP) $(PACKAGE)$(EXEEXT) + @echo "Source: \"`pwd -W`\\$(PACKAGE)$(EXEEXT)\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@ + @list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir \ + && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); \ + done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/project/jni/application/lbreakout2/client/balls.c b/project/jni/application/lbreakout2/client/balls.c new file mode 100644 index 000000000..89a41df3b --- /dev/null +++ b/project/jni/application/lbreakout2/client/balls.c @@ -0,0 +1,252 @@ +/*************************************************************************** + balls.c - description + ------------------- + begin : Sun Sep 9 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "../game/game.h" +#include "bricks.h" + +extern SDL_Surface *ball_pic; /* ball pictures */ +extern SDL_Surface *ball_shadow; +int ball_pic_x_offset = 0; /* display ball at this position */ +extern int ball_w, ball_h; +float ball_metal_alpha_change = 1.2; /* pulse factor */ +float ball_metal_alpha = 0; /* alpha of ball when blue */ +extern SDL_Surface *offscreen; +extern SDL_Surface *stk_display; +extern int shadow_size; +extern Game *game; + +/* +==================================================================== +Locals +==================================================================== +*/ + +/* +==================================================================== +Show/hide all balls +==================================================================== +*/ +void balls_hide() +{ + ListEntry *entry = game->balls->head->next; + Ball *ball; + int bx, by, bw, bh; + while ( entry != game->balls->tail ) { + ball = (Ball*)entry->item; + entry = entry->next; + /* balls position; add paddle pos if attached */ + bx = ball->x; by = ball->y; + bw = ball_w + shadow_size; + bh = ball_h + shadow_size; + if (ball->attached) { + bx += ball->paddle->x; + by += ball->paddle->y; + } + /* blit background */ + stk_surface_blit( offscreen, + bx, by, bw,bh, + stk_display, bx, by ); + stk_display_store_drect(); + } +} +void balls_show_shadow() +{ + ListEntry *entry = game->balls->head->next; + int bx, by; + int mx, my; + Ball *ball; + if ( game->extra_active[EX_DARKNESS] ) return; + while ( entry != game->balls->tail ) { + ball = entry->item; + entry = entry->next; + /* balls position; add paddle pos if attached */ + bx = ball->x; + by = ball->y; + if (ball->attached) { + bx += ball->paddle->x; + by += ball->paddle->y; + } + /* show ball -- no shadow if darkness -- no shadow if going back home */ + if ( !ball->moving_back ) { + stk_surface_clip( stk_display, 0, 0, stk_display->w - BRICK_WIDTH, stk_display->h ); + stk_surface_alpha_blit( ball_shadow, 0, 0, ball_w, ball_h, + stk_display, bx + shadow_size, by + shadow_size, + (game->extra_active[EX_METAL])?(((int)ball_metal_alpha)>>1):SHADOW_ALPHA ); + stk_display_store_drect(); + /* redraw nearby bricks */ + stk_surface_clip( stk_display, bx + shadow_size, by + shadow_size, ball_w, ball_h ); + /* check the three outer ocrners of the shadow if there's a brick */ + mx = ( bx + shadow_size + ball_w ) / BRICK_WIDTH; + my = ( by + shadow_size ) / BRICK_HEIGHT; + if ( my < MAP_HEIGHT - 1 ) + if ( mx < MAP_WIDTH - 1 && game->bricks[mx][my].type != MAP_EMPTY ) + brick_draw( stk_display, mx, my, 0 ); + mx = ( bx + shadow_size + ball_w ) / BRICK_WIDTH; + my = ( by + shadow_size + ball_h ) / BRICK_HEIGHT; + if ( my < MAP_HEIGHT - 1 ) + if ( mx < MAP_WIDTH - 1 && game->bricks[mx][my].type != MAP_EMPTY ) + brick_draw( stk_display, mx, my, 0 ); + mx = ( bx + shadow_size ) / BRICK_WIDTH; + my = ( by + shadow_size + ball_h ) / BRICK_HEIGHT; + if ( my < MAP_HEIGHT - 1 ) + if ( mx < MAP_WIDTH - 1 && game->bricks[mx][my].type != MAP_EMPTY ) + brick_draw( stk_display, mx, my, 0 ); + stk_surface_clip( stk_display, 0, 0, 0, 0 ); + } + } +} +void balls_show() +{ + ListEntry *entry = game->balls->head->next; + Ball *ball; + int bx, by; + while ( entry != game->balls->tail ) { + ball = entry->item; + entry = entry->next; + /* balls position; add paddle pos if attached */ + bx = ball->x; + by = ball->y; + if (ball->attached) { + bx += ball->paddle->x; + by += ball->paddle->y; + } + if ( game->extra_active[EX_METAL] ) + stk_surface_alpha_blit( ball_pic, ball_pic_x_offset, 0, + ball_w, ball_h, stk_display, bx, by, + ball_metal_alpha ); + else + stk_surface_blit( ball_pic, ball_pic_x_offset, 0, + ball_w, ball_h, stk_display, bx, by ); + stk_display_store_drect(); + } +} +void balls_alphashow( int alpha ) +{ + ListEntry *entry = game->balls->head->next; + Ball *b; + int bx, by; + while ( entry != game->balls->tail ) { + b = entry->item; + /* balls position; add paddle pos if attached */ + bx = b->x; + by = b->y; + if (b->attached) { + bx += b->paddle->x; + by += b->paddle->y; + } + /* show ball */ + stk_surface_alpha_blit( ball_pic, ball_pic_x_offset, 0, + ball_w, ball_h, stk_display, bx, by, alpha ); + entry = entry->next; + } +} + +/* reflect ball at brick but destroy nothing */ +void client_brick_reflect( Ball *b ) +{ + float old_vx; + Vector n; + int reflect; + int chaos_reflect; + + /* time left? */ + if (b->target.cur_tm < b->target.time) return; + + /* will reflect? */ + reflect = 1; + if ( game->extra_active[EX_METAL] ) + if ( game->bricks[b->target.mx][b->target.my].type != MAP_WALL ) + reflect = 0; + + /* will reflect chaotic? */ + chaos_reflect = 0; + if ( game->extra_active[EX_CHAOS] || + game->bricks[b->target.mx][b->target.my].type == MAP_BRICK_CHAOS ) + chaos_reflect = 1; + + /* we have a target and so we have a reset position and even if the ball's + not reflected the position must be reset */ + b->cur.x = b->target.x; b->x = (int)b->cur.x; + b->cur.y = b->target.y; b->y = (int)b->cur.y; + + if ( reflect ) { + game->mod.paddle_reflected_ball_count++; + old_vx = b->vel.x; + if ( !chaos_reflect ) { + /* normal reflection */ + n.x = (1-2*b->target.perp_vector.x*b->target.perp_vector.x)*b->vel.x + + ( -2*b->target.perp_vector.x*b->target.perp_vector.y)*b->vel.y; + n.y = ( -2*b->target.perp_vector.x*b->target.perp_vector.y)*b->vel.x + + (1-2*b->target.perp_vector.y*b->target.perp_vector.y)*b->vel.y; + b->vel.x = n.x; + b->vel.y = n.y; + } + else { + b->vel.x = ((float)RANDOM( -10000, 10000 )) / 10000; + b->vel.y = (float)(RANDOM( -10000, 10000 )) / 10000; + } + /* only use 2 degree steps */ + b->angle = vec2angle( &b->vel ); + angle2vec( b->angle, &b->vel ); + if ( b->target.side >= CORNER_UPPER_LEFT && !chaos_reflect ) + ball_mask_vel( b, old_vx, BALL_ADD_ENTROPY ); + else + ball_mask_vel( b, old_vx, BALL_NO_ENTROPY ); + } + + /* mark target as disabled so it won't get stuck at the + bottom of the screen but keep the target position so + that we know what needs an update. */ + b->target.exists = 0; +} + +/* update energy ball animation */ +void client_balls_update( int ms ) +{ + Vector old; /* old position of ball before update */ + Ball *ball; + + /* modify alpha when metal */ + if ( game->extra_active[EX_METAL] ) { + ball_metal_alpha += ball_metal_alpha_change * ms; + if ( ball_metal_alpha >= 255 || ball_metal_alpha <= 0 ) { + ball_metal_alpha_change = -ball_metal_alpha_change; + if ( ball_metal_alpha < 0 ) ball_metal_alpha = 0; + if ( ball_metal_alpha > 255 ) ball_metal_alpha = 255; + } + } + + /* new position if NOT attached. the communicator has set the velocity + * 0 if a ball is inanimated */ + if ( game->game_type == GT_NETWORK ) { + list_reset( game->balls ); + while ( (ball = list_next( game->balls )) ) { + if ( ball->attached ) continue; + if ( ball->vel.x == 0 && ball->vel.y == 0 ) continue; + + old.x = ball->cur.x; + old.y = ball->cur.y; + + ball->cur.x += ball->vel.x * ms; + ball->cur.y += ball->vel.y * ms; + ball->x = (int)ball->cur.x; + ball->y = (int)ball->cur.y; + } + } +} + diff --git a/project/jni/application/lbreakout2/client/balls.h b/project/jni/application/lbreakout2/client/balls.h new file mode 100644 index 000000000..8ec14ee19 --- /dev/null +++ b/project/jni/application/lbreakout2/client/balls.h @@ -0,0 +1,30 @@ +/*************************************************************************** + balls.h - description + ------------------- + begin : Sun Sep 9 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* +==================================================================== +Show/hide all balls +==================================================================== +*/ +void balls_hide(); +void balls_show_shadow(); +void balls_show(); +void balls_alphashow( int alpha ); + +/* update energy ball animation */ +void client_balls_update( int ms ); + diff --git a/project/jni/application/lbreakout2/client/bricks.c b/project/jni/application/lbreakout2/client/bricks.c new file mode 100644 index 000000000..ccb909ada --- /dev/null +++ b/project/jni/application/lbreakout2/client/bricks.c @@ -0,0 +1,342 @@ +/*************************************************************************** + bricks.c - description + ------------------- + begin : Thu Sep 6 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include +#include "../game/game.h" +#include "lbreakout.h" +#include "shrapnells.h" +#include "bricks.h" + +extern SDL_Surface *stk_display; +extern SDL_Surface *offscreen; /* offscreen with bricks, background, frame */ +extern SDL_Surface *bkgnd; /* background picture (includes frame) */ +extern SDL_Surface *warp_pic; +extern SDL_Surface *brick_pic; /* brick graphics in a horizontal order */ +extern int shadow_size; +extern SDL_Surface *brick_shadow; /* shadow mask */ +extern int shine_x, shine_y, shine_recreate; +#ifdef AUDIO_ENABLED +extern StkSound *wav_boom; +#endif +extern Game *game; + +/* +==================================================================== +Locals +==================================================================== +*/ + +/* remove a brick and release the extra (which will have no effect + * on collection) update the graphics. no growth or explosions + * of other bricks are initiated as these are send by network */ +void client_brick_remove( int mx, int my, int type, Vector imp, Paddle *paddle, int no_sound ) +{ + int px, py, w, h, i, j, shadow, anim_brick_id; + int dir; + + /* add explosion animation */ + if ( type == SHR_BY_EXPL_WITH_EXPL ) { + exp_create( mx * BRICK_WIDTH + ( BRICK_WIDTH >> 1 ), + my * BRICK_HEIGHT + ( BRICK_HEIGHT >> 1 ) ); +#ifdef AUDIO_ENABLED + if (!no_sound) + stk_sound_play_x( mx * BRICK_WIDTH + ( BRICK_WIDTH >> 1 ), wav_boom ); +#endif + type = SHR_BY_EXPL; /* WITH_EXPL is not known */ + } + + /* decrease brick count if no indestructible brick was destroyed */ + if ( game->bricks[mx][my].dur != -1 ) + game->bricks_left--; + + /* before removing the brick, store the brick id for animation */ + anim_brick_id = game->bricks[mx][my].id; + + /* remove brick from map */ + game->bricks[mx][my].brick_c = ' '; + game->bricks[mx][my].id = -1; + game->bricks[mx][my].dur = -1; + game->bricks[mx][my].exp_time = -1; + game->bricks[mx][my].heal_time = -1; + game->bricks[mx][my].type = MAP_EMPTY; + + /* get screen position */ + px = mx * BRICK_WIDTH; + py = my * BRICK_HEIGHT; + + /* release extra if one exists. in opposite to the server the goldshower + * 1000P is not released here but in the hit handle function if the gold_shower + * flag is set to avoid releasing 'ghost' extras due to latency. */ + dir = ( paddle->type == PADDLE_TOP ) ? -1 : 1; + if ( game->bricks[mx][my].extra != EX_NONE ) { + if ( game->diff->allow_maluses || !extra_is_malus( game->bricks[mx][my].extra ) ) + list_add( game->extras, extra_create( game->bricks[mx][my].extra, px, py, dir ) ); + } + game->bricks[mx][my].extra = EX_NONE; + game->bricks[mx][my].extra_c = ' '; + + /* in case of darkness no (graphical) remove nescessary */ + if ( game->extra_active[EX_DARKNESS] ) { +#ifdef AUDIO_ENABLED + if (!no_sound) + stk_sound_play_x( px, wav_boom ); +#endif + return; + } + + shrapnells_create( brick_pic, anim_brick_id * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + px, py, type, imp ); + /* recreate shine if needed */ + if (px == shine_x && py == shine_y) shine_recreate = 1; + /* clear offscreen */ + w = BRICK_WIDTH + shadow_size; h = BRICK_HEIGHT + shadow_size; + if ( px + w > stk_display->w - BRICK_WIDTH ) + w = stk_display->w - BRICK_WIDTH - px; + stk_surface_clip( offscreen, px, py, w, h ); + stk_surface_blit( bkgnd, px, py, w, h, offscreen, px, py ); + /* if shadow redraw close bricks */ + for ( i = mx - 1; i <= mx + 1; i++ ) + for ( j = my - 1; j <= my + 1; j++ ) { + if ( i > 0 && j > 0 && i < MAP_WIDTH - 1 ) { + if ( game->bricks[i][j].type != MAP_EMPTY ) { + if ( i <= mx && j <= my ) shadow = 1; else shadow = 0; + brick_draw( offscreen, i, j, shadow ); + } + } + } + stk_surface_clip( offscreen, 0, 0, 0, 0 ); + /* update screen */ + stk_surface_blit( offscreen, px, py, w, h, stk_display, px, py ); + stk_display_store_drect(); +#ifdef AUDIO_ENABLED + if (!no_sound) + stk_sound_play_x( px, wav_boom ); +#endif +} + +static void client_brick_heal( int x, int y ) +{ + game->bricks[x][y].dur++; + game->bricks[x][y].id++; + if ( !game->extra_active[EX_DARKNESS] ) { + brick_draw( offscreen, x, y, 0 ); + brick_draw( stk_display, x, y, 0 ); + stk_display_store_drect(); + } +} + +static void client_brick_grow( int x, int y, int id ) +{ + Brick *brick = &game->bricks[x][y]; + int px, py; + int isReplace = 0; + + if (game->bricks[x][y].type!=MAP_EMPTY) + isReplace = 1; + + /* add brick */ + //brick->id = RANDOM( BRICK_GROW_FIRST, BRICK_GROW_LAST ); + brick->id = id; + brick->brick_c = brick_get_char( brick->id ); + brick->type = MAP_BRICK; + brick->score = game->diff->score_mod * BRICK_SCORE / 10; + brick->dur = 1; + /* keep the extra that is already assigned to this position */ + brick->exp_time = -1; + brick->heal_time = -1; + if (!isReplace) game->bricks_left++; + + if ( !game->extra_active[EX_DARKNESS] ) { + px = x * BRICK_WIDTH; + py = y * BRICK_HEIGHT; + if (isReplace) + brick_draw( offscreen, x, y, 0 ); + else + brick_draw_complex( x, y, px, py ); + stk_surface_blit( offscreen, px, py, + BRICK_WIDTH + shadow_size, + BRICK_HEIGHT + shadow_size, + stk_display, px, py ); + stk_display_store_drect(); + } +} + +/* +==================================================================== +Publics +==================================================================== +*/ + +/* +==================================================================== +Draw all bricks to offscreen surface. +==================================================================== +*/ +void bricks_draw() +{ + int i, j; + if ( offscreen == 0 ) return; + stk_surface_clip( offscreen, 0, 0, stk_display->w - BRICK_WIDTH, stk_display->h ); + for ( j = 1; j < MAP_HEIGHT - 1; j++ ) + for ( i = 1; i < MAP_WIDTH - 1; i++ ) + if ( game->bricks[i][j].id >= 0 ) + brick_draw( offscreen, i, j, 1 ); + stk_surface_clip( offscreen, 0,0,0,0 ); +} +/* +==================================================================== +Draw brick to passed surface +==================================================================== +*/ +void brick_draw( SDL_Surface *surf, int map_x, int map_y, int shadow ) +{ + int x = map_x * BRICK_WIDTH, y = map_y * BRICK_HEIGHT; + /* dont draw invisible bricks */ + if ( game->bricks[map_x][map_y].id == INVIS_BRICK_ID ) return; + /* add shadow */ + if ( shadow ) { + stk_surface_alpha_blit( brick_shadow, + game->bricks[map_x][map_y].id * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + surf, x + shadow_size, y + shadow_size, SHADOW_ALPHA ); + } + /* brick if not frame brick */ + if ( map_x == 0 || map_y == 0 || map_x == MAP_WIDTH - 1 ) return; + stk_surface_blit( brick_pic, + game->bricks[map_x][map_y].id * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, surf, x,y ); +} +/* +==================================================================== +Add brick with clipped shadow to offscreen. To draw a brick without +shadow check use brick_draw(). +==================================================================== +*/ +void brick_draw_complex( int mx, int my, int px, int py ) +{ + brick_draw( offscreen, mx, my, 1 ); + /* redraw surrounding bricks */ + stk_surface_clip( offscreen, px + shadow_size, py + shadow_size, BRICK_WIDTH, BRICK_HEIGHT ); + if ( mx + 1 == MAP_WIDTH - 1 ) { + /* right frame part */ + stk_surface_blit( bkgnd, px + BRICK_WIDTH, py, + BRICK_WIDTH, ( BRICK_HEIGHT << 1 ), + offscreen, px + BRICK_WIDTH, py ); + } + else { + brick_draw( offscreen, mx + 1, my, 0 ); + brick_draw( offscreen, mx + 1, my + 1, 0 ); + } + if ( game->bricks[mx][my + 1].type != MAP_EMPTY ) + brick_draw( offscreen, mx, my + 1, 0 ); + stk_surface_clip( offscreen, 0, 0, 0, 0 ); +} +/* +==================================================================== +Make brick at mx,my loose 'points' duration. It must have been +previously checked that this operation is completely valid. +It does not update net_bricks or the player's duration reference. +==================================================================== +*/ +void client_brick_loose_dur( int mx, int my, int points ) +{ + int px, py; + int refresh_h, refresh_w; + while ( points-- > 0 ) { + game->bricks[mx][my].dur--; + game->bricks[mx][my].id--; + /* adjust brick character: + * a,b,c - multiple hits + * v - invisible */ + if ( game->bricks[mx][my].brick_c == 'v' ) + game->bricks[mx][my].brick_c = 'c'; + else + game->bricks[mx][my].brick_c--; /* successive order */ + if ( !game->extra_active[EX_DARKNESS]) { + px = mx * BRICK_WIDTH; + py = my * BRICK_HEIGHT; + refresh_w = BRICK_WIDTH+shadow_size; + refresh_h = BRICK_HEIGHT+shadow_size; + /* copy background as old brick may have different transparency + do this in three parts to save computation */ + stk_surface_blit( bkgnd, px, py, + shadow_size, BRICK_HEIGHT, + offscreen, px, py ); + stk_surface_blit( bkgnd, px + shadow_size, py, + BRICK_WIDTH - shadow_size, BRICK_HEIGHT + shadow_size, + offscreen, px + shadow_size, py ); + stk_surface_blit( bkgnd, px + BRICK_WIDTH, py + shadow_size, + shadow_size, BRICK_HEIGHT, + offscreen, px + BRICK_WIDTH, py + shadow_size ); + /* draw brick + surrounding */ + brick_draw_complex( mx, my, px, py ); + /* udpate screen */ + stk_surface_blit( offscreen, px, py, + refresh_w, refresh_h, stk_display, px, py ); + stk_display_store_drect(); + } + } +} + +/* handle a received brick action */ +void client_handle_brick_hit( BrickHit *hit ) +{ + Paddle *paddle; + Vector imp; + + paddle = (hit->paddle==PADDLE_BOTTOM)?game->paddles[PADDLE_BOTTOM]:game->paddles[PADDLE_TOP]; + angle2vec( hit->degrees, &imp ); + + switch ( hit->type ) + { + case HT_HIT: + client_brick_loose_dur( hit->x, hit->y, 1 ); + break; + case HT_REMOVE: + if (hit->draw_explosion) + hit->dest_type = SHR_BY_EXPL_WITH_EXPL; + client_brick_remove( hit->x, hit->y, hit->dest_type, imp, paddle, hit->no_sound ); + /* gold shower extra */ + if ( hit->gold_shower ) + list_add( game->extras, + extra_create( EX_SCORE1000, + hit->x*BRICK_WIDTH, hit->y*BRICK_HEIGHT, + (hit->paddle==PADDLE_TOP)?-1:1 ) ); + break; + case HT_HEAL: + client_brick_heal( hit->x, hit->y ); + break; + case HT_GROW: + client_brick_grow( hit->x, hit->y, hit->brick_id ); + break; + } +} + +/* redraw all bricks (leaving shadows in transparent frame parts) */ +void client_redraw_all_bricks() +{ + stk_surface_blit( bkgnd, BRICK_WIDTH, BRICK_HEIGHT, + stk_display->w - BRICK_WIDTH*2,stk_display->h - BRICK_HEIGHT, + offscreen, BRICK_WIDTH, BRICK_HEIGHT ); + bricks_draw(); + stk_surface_blit( offscreen, BRICK_WIDTH, BRICK_HEIGHT, + stk_display->w - BRICK_WIDTH*2,stk_display->h - BRICK_HEIGHT, + stk_display, BRICK_WIDTH, BRICK_HEIGHT ); +// stk_display_update( STK_UPDATE_ALL ); + stk_display_store_drect(); +} diff --git a/project/jni/application/lbreakout2/client/bricks.h b/project/jni/application/lbreakout2/client/bricks.h new file mode 100644 index 000000000..e90dd955b --- /dev/null +++ b/project/jni/application/lbreakout2/client/bricks.h @@ -0,0 +1,42 @@ +/*************************************************************************** + bricks.h - description + ------------------- + begin : Thu Sep 6 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* +==================================================================== +Draw all bricks to offscreen surface. +==================================================================== +*/ +void bricks_draw(); +/* +==================================================================== +Add brick with clipped shadow to offscreen. To draw a brick without +shadow check use brick_draw(). +==================================================================== +*/ +void brick_draw_complex( int mx, int my, int px, int py ); +/* +==================================================================== +Draw brick to passed surface +==================================================================== +*/ +void brick_draw( SDL_Surface *surf, int map_x, int map_y, int shadow ); + +/* handle a received brick action */ +void client_handle_brick_hit( BrickHit *hit ); + +/* redraw all bricks */ +void client_redraw_all_bricks(); diff --git a/project/jni/application/lbreakout2/client/chart.c b/project/jni/application/lbreakout2/client/chart.c new file mode 100644 index 000000000..0d3e2a87f --- /dev/null +++ b/project/jni/application/lbreakout2/client/chart.c @@ -0,0 +1,423 @@ +/*************************************************************************** + chart.c - description + ------------------- + begin : Mon Sep 24 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "config.h" +#include "chart.h" + +#define CHART_FILE_NAME "lbreakout2.hscr" + +List *charts = 0; /* list of all loaded level set charts */ + +char chart_path[512]; /* path charts where actually loaded/created from */ +int chart_loaded = 0; /* true if highscore succesfully loaded */ +SDL_Rect chart_pos; /* used to store size. x,y is set when drawing */ +int chart_gap = 10; +int chart_level_offset = 0; /* level offset (name's left aligned, score's right aligned) */ +extern SDL_Surface *stk_display; +extern Config config; +extern StkFont *cfont, *chfont, *ccfont; /* normal, highlight and caption font */ +extern FILE *hi_dir_chart_file; + +/* +==================================================================== +Local +==================================================================== +*/ + +/* +==================================================================== +Reset charts +==================================================================== +*/ +void chart_reset( Set_Chart *chart ) +{ + int i; + memset( chart->entries, 0, sizeof( Chart_Entry ) * CHART_ENTRY_COUNT ); + for ( i = 0; i < CHART_ENTRY_COUNT; i++ ) + chart_add( chart, "............", i + 1, 10000 * ( i + 1 ) ); + chart->entries[0].score = 300000; + chart->entries[1].score = 200000; + chart->entries[2].score = 150000; + chart->entries[3].score = 100000; + chart->entries[4].score = 70000; + for ( i = 0; i < CHART_ENTRY_COUNT; i++ ) + chart->entries[i].new_entry = 0; +} + +/* +==================================================================== +Create/delete set chart. +==================================================================== +*/ +Set_Chart* chart_set_create( char *name ) +{ + Set_Chart *chart = calloc( 1, sizeof( Set_Chart ) ); + chart->name = strdup( name ); + chart_reset( chart ); + return chart; +} +void chart_set_delete( void *ptr ) +{ + Set_Chart *chart = (Set_Chart*)ptr; + if ( !chart ) return; + if ( chart->name ) free( chart->name ); + free( chart ); +} + +/* +==================================================================== +Read entries of a chart from file position. +==================================================================== +*/ +void chart_read_entries( FILE *file, char *file_name, Set_Chart *chart ) +{ + char buffer[128]; + int i; + + for ( i = 0; i < CHART_ENTRY_COUNT; i++ ) { + if ( feof( file ) ) { + fprintf( stderr, "Unexpected EOF in '%s' in entry %i... reading of highscore aborted.\n", + file_name, i ); + break; + } + fgets( buffer, 128, file ); buffer[strlen(buffer) - 1] = 0; /* remove newline */ + strcpy( chart->entries[i].name, buffer ); + fgets( buffer, 128, file ); buffer[strlen(buffer) - 1] = 0; /* remove newline */ + chart->entries[i].level = atoi( buffer ); + fgets( buffer, 128, file ); buffer[strlen(buffer) - 1] = 0; /* remove newline */ + chart->entries[i].score = atoi( buffer ); + } +} + +/* +==================================================================== +Load all highscores from path. If not found create chart with +one set 'Original'. +ReturnValue: True if successful +==================================================================== +*/ +int chart_load_from_path( char *path ) +{ + FILE *file = 0; + char file_name[512]; + char setname[1024]; + char aux[4]; + Set_Chart *chart = 0; + /* full file name */ + sprintf( file_name, "%s/%s", path, CHART_FILE_NAME ); + /* clear chart list */ + list_clear( charts ); + + if (!strcmp(path, HI_DIR) && hi_dir_chart_file) { + file = hi_dir_chart_file; + rewind(hi_dir_chart_file); + } + else { + /* open file */ + file = fopen( file_name, "rb" ); + } + + if ( file ) { + /* test if it's new format or old one. */ + fread( aux, sizeof( char ), 3, file ); aux[3] = 0; + fseek( file, 0, SEEK_SET ); + if ( strequal( ">>>", aux ) ) { + /* new format: load all set charts */ + while( !feof( file ) ) { + /* check if next sign is an '>' else skip reading */ + aux[0] = 0; + fread( aux, sizeof( char ), 1, file ); + fseek( file, -1, SEEK_CUR ); + if ( aux[0] != '>' ) break; + chart = calloc( 1, sizeof( Set_Chart ) ); + /* get name: >>>name */ + fscanf( file, ">>>%1023s\n", setname ); + chart->name = strdup( setname ); + /* entries */ + chart_read_entries( file, file_name, chart ); + /* add */ + list_add( charts, chart ); + } + } + else { + /* old format: load single chart as 'Original' */ + fprintf( stderr, _("Converting highscore chart as format changed.\n") ); + chart = chart_set_create( "LBreakout2" ); + chart_read_entries( file, file_name, chart ); + list_add( charts, chart ); + } + if (file != hi_dir_chart_file) + fclose( file ); + } + else { + fprintf( stderr, _("Highscore chart doesn't exist in '%s'... creating new one.\n"), path ); + chart = chart_set_create( "LBreakout2" ); + list_add( charts, chart ); + } + if (file != hi_dir_chart_file) { + /* test if writing is allowed without changing actual contents */ + if ( ( file = fopen( file_name, "a" ) ) == 0 ) { + fprintf( stderr, _("Write permission for '%s' denied.\n"), file_name ); + return 0; + } + else + fclose( file ); + } + strcpy( chart_path, path ); + chart_loaded = 1; + return 1; +} + +/* +==================================================================== +Publics +==================================================================== +*/ + +/* +==================================================================== +Load highscore. If it doesn't exist try to create it in HI_DIR if +this fails fall back to ~/.lbreakout and create highscore there. +==================================================================== +*/ +void chart_load() +{ + chart_loaded = 0; + /* create list */ + if ( charts ) list_delete( charts ); charts = 0; + charts = list_create( LIST_AUTO_DELETE, chart_set_delete ); + /* load highscore */ + if ( !chart_load_from_path( HI_DIR ) ) { + fprintf( stderr, _("Unable to access highscore chart in '%s'.\n"), HI_DIR ); + fprintf( stderr, _("Trying to use config directory '%s'.\n"), config.dir_name ); + if ( !chart_load_from_path( config.dir_name ) ) { + fprintf( stderr, _("Unable to access highscore chart in config directory... won't be " + "able to save any results. Sorry.\n") ); + return; + } + } + printf( _("Saving highscore chart in: %s\n"), chart_path ); + /* compute size and position stuff of highscore */ + char *cheader = _("Name Level Score"); + chart_pos.w = stk_font_string_width( ccfont, cheader ); + chart_pos.h = ccfont->height + chart_gap + /* title + gap */ + cfont->height * CHART_ENTRY_COUNT + /* entries */ + chart_gap + /*gap between caption and entries */ + ccfont->height; /* caption size */ + chart_level_offset = stk_font_string_width( ccfont, _("name.-----") ) + stk_font_string_width( ccfont, _("Level") ) / 2; /* level offset centered */ +} +/* +==================================================================== +Delete resources +==================================================================== +*/ +void chart_delete() +{ + if ( charts ) list_delete( charts ); charts = 0; +} +/* +==================================================================== +Save chart in directory it was loaded from. +==================================================================== +*/ +void chart_save() +{ + char file_name[512]; + int i; + Set_Chart *chart = 0; + FILE *file = 0; + if ( !chart_loaded ) return; + /* full file name */ + sprintf( file_name, "%s/%s", chart_path, CHART_FILE_NAME ); + + if (!strcmp(chart_path, HI_DIR) && hi_dir_chart_file) { + file = hi_dir_chart_file; + rewind(hi_dir_chart_file); + } + else { + /* open file */ + file = fopen( file_name, "w" ); + } + + if ( !file ) { + fprintf( stderr, _("??? Highscore chart loaded properly but cannot save? (%s)\n"),file_name ); + return; + } + /* save all charts */ + list_reset( charts ); + while ( ( chart = list_next( charts ) ) != 0 ) { + fprintf( file, ">>>%s\n", chart->name ); + for ( i = 0; i < CHART_ENTRY_COUNT; i++ ) + fprintf( file, "%s\n%i\n%i\n", chart->entries[i].name, chart->entries[i].level, chart->entries[i].score ); + } + + if (file != hi_dir_chart_file) + fclose( file ); +} +/* +==================================================================== +Check if this player entered the highscore chart and update it. +==================================================================== +*/ +void chart_add( Set_Chart *chart, char *name, int level, int score ) +{ + /* add new entry at blind end of chart */ + strcpy( chart->entries[CHART_ENTRY_COUNT].name, name ); + chart->entries[CHART_ENTRY_COUNT].level = level; + chart->entries[CHART_ENTRY_COUNT].score = score; + chart->entries[CHART_ENTRY_COUNT].new_entry = 1; + /* sort algorithm is stable so first sort levels then score */ + chart_sort( chart, SORT_BY_LEVEL ); + chart_sort( chart, SORT_BY_SCORE ); +} +/* +==================================================================== +Sort chart with stable algorithm (bubble sort's ok) by wanted +value. +==================================================================== +*/ +void chart_swap( Chart_Entry *entry1, Chart_Entry *entry2 ) +{ + Chart_Entry dummy; + dummy = *entry1; + *entry1 = *entry2; + *entry2 = dummy; +} +void chart_sort( Set_Chart *chart, int type ) +{ + int j; + int changed = 0; + /* use entry dummy as well so count is CHART_ENTRY_COUNT + 1 */ + do { + changed = 0; + for ( j = 0; j < CHART_ENTRY_COUNT; j++ ) + switch ( type ) { + case SORT_BY_LEVEL: + if ( chart->entries[j].level < chart->entries[j + 1].level ) { + chart_swap( &chart->entries[j], &chart->entries[j + 1] ); + changed = 1; + } + break; + case SORT_BY_SCORE: + if ( chart->entries[j].score < chart->entries[j + 1].score ) { + chart_swap( &chart->entries[j], &chart->entries[j + 1] ); + changed = 1; + } + break; + } + } while ( changed ); +} +/* +==================================================================== +Draw highscores centered in regio x,y,w,h +==================================================================== +*/ +void chart_show( Set_Chart *chart, int x, int y, int w, int h ) +{ + char number_buffer[24]; + int entry_offset; /* y offset of entries */ + StkFont *font; + int i; + /* adjust x,y so it's centered */ + chart_pos.x = x + ( w - chart_pos.w ) / 2; + chart_pos.y = y + ( h - chart_pos.h ) / 2; + /* title = name of levelset */ + ccfont->align = STK_FONT_ALIGN_CENTER_X | STK_FONT_ALIGN_TOP; + stk_font_write( ccfont, stk_display, + chart_pos.x + ( chart_pos.w >> 1 ), chart_pos.y, -1, + chart->name ); + /* caption */ + ccfont->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + char *cheader = _("Name Level Score"); + stk_font_write( ccfont, stk_display, + chart_pos.x, chart_pos.y + ccfont->height + chart_gap, -1, + cheader ); + /* get entry offset */ + entry_offset = ( ccfont->height + chart_gap ) * 2 + chart_pos.y; + /* entries */ + for ( i = 0; i < CHART_ENTRY_COUNT; i++ ) { + font = cfont; + if ( chart->entries[i].new_entry ) font = chfont; + /* name */ + font->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + stk_font_write( font, stk_display, + chart_pos.x, entry_offset, -1, chart->entries[i].name ); + /* level */ + font->align = STK_FONT_ALIGN_CENTER_X | STK_FONT_ALIGN_TOP; + sprintf( number_buffer, "%i", chart->entries[i].level ); + stk_font_write( font, stk_display, + chart_pos.x + chart_level_offset, entry_offset, -1, number_buffer ); + /* score */ + font->align = STK_FONT_ALIGN_RIGHT | STK_FONT_ALIGN_TOP; + sprintf( number_buffer, "%i", chart->entries[i].score ); + stk_font_write( font, stk_display, + chart_pos.x + chart_pos.w, entry_offset, -1, number_buffer ); + /* change offset */ + entry_offset += font->height; + } + stk_display_store_rect( &chart_pos ); +} +/* +==================================================================== +Clear all new_entry flags (done before new players are added +to chart when game over). +==================================================================== +*/ +void chart_clear_new_entries() +{ + int i; + Set_Chart *chart; + list_reset( charts ); + while ( ( chart = list_next( charts ) ) != 0 ) { + chart->entries[CHART_ENTRY_COUNT].score = chart->entries[CHART_ENTRY_COUNT].level = 0; + for ( i = 0; i < CHART_ENTRY_COUNT + 1; i++ ) + chart->entries[i].new_entry = 0; + } +} +/* +==================================================================== +Query set chart by this name or if not found create a new one +by this name. +==================================================================== +*/ +Set_Chart* chart_set_query( char *name ) +{ + Set_Chart *chart = 0; + list_reset( charts ); + while ( ( chart = list_next( charts ) ) != 0 ) + if ( strequal( name, chart->name ) ) + return chart; + /* not found so create it */ + fprintf( stderr, _("First chart query for '%s'. Creating this chart.\n"), name ); + chart = chart_set_create( name ); + list_add( charts, chart ); + return chart; +} +/* +==================================================================== +Query chart by id. If id is invalid return 0. +==================================================================== +*/ +Set_Chart* chart_set_query_id( int id ) +{ + if ( id >= charts->count ) { + fprintf( stderr, _("Chart index '%i' is out of range!\n"), id ); + return 0; + } + return (Set_Chart*)list_get( charts, id ); +} diff --git a/project/jni/application/lbreakout2/client/chart.h b/project/jni/application/lbreakout2/client/chart.h new file mode 100644 index 000000000..93fae7124 --- /dev/null +++ b/project/jni/application/lbreakout2/client/chart.h @@ -0,0 +1,98 @@ +/*************************************************************************** + chart.h - description + ------------------- + begin : Mon Sep 24 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* +==================================================================== +Highscore chart entry +==================================================================== +*/ +typedef struct { + char name[32]; + int level; + int score; + int new_entry; /* newly entered the highscore */ +} Chart_Entry; +/* +==================================================================== +Levelset highscore chart. +==================================================================== +*/ +enum { CHART_ENTRY_COUNT = 10 }; +typedef struct { + Chart_Entry entries[CHART_ENTRY_COUNT + 1]; /* last entry is space holder for new entry */ + char *name; +} Set_Chart; + +/* +==================================================================== +Load highscore. If it doesn't exist try to create it in HI_DIR if +this fails fall back to ~/.lbreakout and create highscore there. +==================================================================== +*/ +void chart_load(); +/* +==================================================================== +Delete resources +==================================================================== +*/ +void chart_delete(); +/* +==================================================================== +Save chart in directory it was loaded from. +==================================================================== +*/ +void chart_save(); +/* +==================================================================== +Check if this player entered the highscore chart and update it. +==================================================================== +*/ +void chart_add( Set_Chart *chart, char *name, int level, int score ); +/* +==================================================================== +Sort chart with stable algorithm (bubble sort's ok) by wanted +value. +==================================================================== +*/ +enum { SORT_BY_LEVEL = 0, SORT_BY_SCORE }; +void chart_sort( Set_Chart *chart, int type ); +/* +==================================================================== +Draw highscores centered in regio x,y,w,h +==================================================================== +*/ +void chart_show( Set_Chart *chart, int x, int y, int w, int h ); +/* +==================================================================== +Clear all new_entry flags (done before new players are added +to chart when game over). +==================================================================== +*/ +void chart_clear_new_entries(); +/* +==================================================================== +Query set chart by this name or if not found create a new one +by this name. +==================================================================== +*/ +Set_Chart* chart_set_query( char *name ); +/* +==================================================================== +Query chart by id. If id is invalid return 0. +==================================================================== +*/ +Set_Chart* chart_set_query_id( int id ); diff --git a/project/jni/application/lbreakout2/client/client.c b/project/jni/application/lbreakout2/client/client.c new file mode 100644 index 000000000..a1a393ad0 --- /dev/null +++ b/project/jni/application/lbreakout2/client/client.c @@ -0,0 +1,510 @@ +/*************************************************************************** + client.c - description + ------------------- + begin : Sun Oct 20 12:02:57 CEST 2002 + copyright : (C) 2002 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "config.h" +#include "event.h" +#include "../gui/gui.h" +#include "client_data.h" +#include "client_handlers.h" +#include "client.h" + +/* +==================================================================== +Externals +==================================================================== +*/ +extern SDL_Surface *cr_wallpaper; +extern Config config; +extern SDL_Surface **bkgnds; +extern StkFont *chat_font_error; +extern StkFont *chat_font_name; +extern StkFont *chat_font_normal; +extern char chatter[CHAT_LINE_COUNT][CHAT_LINE_WIDTH]; +extern char pause_chatter[CHAT_LINE_COUNT][CHAT_LINE_WIDTH]; +extern List *client_levelsets; +extern List *client_users; +extern List *client_games; +extern List *client_channels; +extern void client_recv_packet( GuiWidget *widget, GuiEvent *event ); +extern int client_id; +extern int client_topic_count; +extern char *client_topics[]; +extern Text *client_help_text; +extern NetSocket client; +extern int client_is_connected; +extern int client_state; +extern int client_recv_limit; +extern int (*sys_printf)(const char *format, ...); + +/* +==================================================================== +Client GUI +==================================================================== +*/ +GuiWidget *dlg_connect = 0; +GuiWidget *dlg_info = 0; +GuiWidget *dlg_confirm = 0; +GuiWidget *dlg_chatroom = 0; +GuiWidget *dlg_channels = 0; +GuiWidget *dlg_stats = 0; +GuiWidget *dlg_pauseroom = 0; +GuiWidget *dlg_help = 0; +/* important children */ +GuiWidget *label_channel; +GuiWidget *label_info; +GuiWidget *label_confirm; +GuiWidget *label_winner; +GuiWidget *label_stats; +GuiWidget *edit_server; +GuiWidget *edit_username; +GuiWidget *list_chatter; +GuiWidget *edit_chatter; +GuiWidget *list_levels; +GuiWidget *list_users; +GuiWidget *list_channels; +GuiWidget *edit_channel; +GuiWidget *list_pausechatter; +GuiWidget *edit_pausechatter; +GuiWidget *list_topic; +GuiWidget *list_help; + +#define HINT_CONNECT _("Specify the game server as address:port where "\ +"the address can be a name or a dotted IP.#If the connection fails have a look "\ +"at the messages in the chat window to see the reason.") + +/* +==================================================================== +LOCALS +==================================================================== +*/ + +#ifdef NETWORK_ENABLED +/* +==================================================================== +Render help topic. +==================================================================== +*/ +static int client_render_help( + int x, int y, SDL_Surface *buffer ) +{ + if ( !client_help_text ) return 0; + if ( y >= client_help_text->count ) return 0; + chat_font_normal->align = STK_FONT_ALIGN_LEFT; + stk_font_write( chat_font_normal, + buffer, 2,0, STK_OPAQUE, + client_help_text->lines[y] ); + return 1; +} +/* +==================================================================== +Render help topic. +==================================================================== +*/ +static int client_render_topic( + int x, int y, SDL_Surface *buffer ) +{ + if ( y >= client_topic_count ) return 0; + chat_font_normal->align = STK_FONT_ALIGN_LEFT; + stk_font_write( chat_font_normal, + buffer, 2,0, STK_OPAQUE, + client_topics[y] ); + return 1; +} +/* +==================================================================== +Render chat line. +==================================================================== +*/ +static int client_render_chatter( + int x, int y, SDL_Surface *buffer ) +{ + char *ptr = 0, *name_end = 0; + StkFont *font = 0; + if ( y < 0 || y >= CHAT_LINE_COUNT ) return 0; + if ( chatter[y][0] == '!' ) { + font = chat_font_error; + ptr = chatter[y] + 1; + } + else { + ptr = chatter[y]; + font = chat_font_normal; + } + font->align = STK_FONT_ALIGN_LEFT; + stk_font_write( font, buffer, 2,0, STK_OPAQUE, ptr ); + if ( chatter[y][0] == '<' ) + if ( ( name_end = strchr( chatter[y], '>' ) ) ) { + name_end[1] = 0; + stk_font_write( + chat_font_name, buffer, 2,0, STK_OPAQUE, chatter[y] ); + name_end[1] = ' '; + } + return 1; +} +static int client_render_pause_chatter( + int x, int y, SDL_Surface *buffer ) +{ + char *ptr = 0, *name_end = 0; + StkFont *font = 0; + if ( y < 0 || y >= CHAT_LINE_COUNT ) return 0; + if ( pause_chatter[y][0] == '!' ) { + font = chat_font_error; + ptr = pause_chatter[y] + 1; + } + else { + ptr = pause_chatter[y]; + font = chat_font_normal; + } + font->align = STK_FONT_ALIGN_LEFT; + stk_font_write( font, buffer, 2,0, STK_OPAQUE, ptr ); + if ( pause_chatter[y][0] == '<' ) + if ( ( name_end = strchr( pause_chatter[y], '>' ) ) ) { + name_end[1] = 0; + stk_font_write( + chat_font_name, buffer, 2,0, STK_OPAQUE, pause_chatter[y] ); + name_end[1] = ' '; + } + return 1; +} +/* +==================================================================== +Render levelsets. +==================================================================== +*/ +static int client_render_levelset( + int x, int y, SDL_Surface *buffer ) +{ + if ( y >= client_levelsets->count ) return 0; + chat_font_normal->align = STK_FONT_ALIGN_LEFT; + stk_font_write( chat_font_normal, + buffer, 2,0, STK_OPAQUE, + list_get( client_levelsets, y ) ); + return 1; +} +/* +==================================================================== +Render user +==================================================================== +*/ +static int client_render_user( + int x, int y, SDL_Surface *buffer ) +{ + ClientUser *user; + StkFont *font; + if ( y >= client_users->count ) return 0; + if ( ( user = list_get( client_users, y ) ) == 0 ) return 0; + if ( user->id == client_id ) + font = chat_font_name; + else + font = chat_font_normal; + font->align = STK_FONT_ALIGN_LEFT; + stk_font_write( font, buffer, 2,0, STK_OPAQUE, user->name ); + return 1; +} +/* +==================================================================== +Render channel. +==================================================================== +*/ +static int client_render_channel( + int x, int y, SDL_Surface *buffer ) +{ + if ( y >= client_channels->count ) return 0; + chat_font_normal->align = STK_FONT_ALIGN_LEFT; + stk_font_write( chat_font_normal, + buffer, 2,0, STK_OPAQUE, + (char*)list_get( client_channels, y ) ); + return 1; +} +#endif + +/* +==================================================================== +PUBLICS +==================================================================== +*/ + +/* +==================================================================== +Build the GUI and everything nescessary for the client chatroom. +client_create() installs client_delete() as exit function. +==================================================================== +*/ +void client_create( void ) +{ +#ifdef NETWORK_ENABLED + GuiWidget *parent; + SDL_Surface *surface; + /* users, channels, games */ + client_data_create(); + /* CONNECT WINDOW */ + dlg_connect = gui_box_create( 0, -1,-1, 400, 224, 0, 0 ); + parent = dlg_connect; + /* hint label */ + gui_label_create( + parent, 10, 10, parent->width - 20, 100, 1, + 0, 4, 0, STK_FONT_ALIGN_LEFT, HINT_CONNECT ); + /* server edit */ + gui_label_create( + parent, 10, 120, 180, 20, 0, + 0, 2, 0, STK_FONT_ALIGN_RIGHT, _("Server:") ); + edit_server = gui_edit_create( + parent, parent->width - 190, 120, 180, 20, + 0, 2, 0, 22, config.server ); + /* user name */ + gui_label_create( + parent, 10, 150, 180, 20, 0, + 0, 2, 0, STK_FONT_ALIGN_RIGHT, _("Username:") ); + edit_username = gui_edit_create( + parent, parent->width - 190, 150, 180, 20, + 0, 2, 0, 13, config.username ); + /* cancel, connect buttons */ + gui_button_create( + parent, parent->width/2 -160, 180, + 140, 24, client_connect, 0,0,0,0,0, _("Connect") ); + gui_button_create( + parent, parent->width/2 +20, 180, + 140, 24, client_close_connect_window, 0,0,0,0,0, _("Cancel") ); + /* INFO */ + dlg_info = gui_box_create( 0, -1,-1, 300, 114, 0, 1 ); + label_info = gui_label_create( dlg_info, -1,10,276,60,0, 0, + 2, 0, STK_FONT_ALIGN_LEFT, _("no info") ); + gui_button_create( dlg_info, + -1, dlg_info->height - 34, + 100, 24, client_close_info, 0,0,0,0,0, + _("Close") ); + /* CONFIRM */ + dlg_confirm = gui_box_create( 0, -1,-1, 300, 160, 0, 1 ); + label_confirm = gui_label_create( dlg_confirm, -1,10,276,110,0, 0, + 2, 0, STK_FONT_ALIGN_LEFT, _("no info") ); + gui_button_create( dlg_confirm, + dlg_confirm->width/2-110, dlg_confirm->height - 30, + 100, 20, client_confirm, 0,0,0,0,0, + _("OK") ); + gui_button_create( dlg_confirm, + dlg_confirm->width/2+10, dlg_confirm->height - 30, + 100, 20, client_cancel, 0,0,0,0,0, + _("Cancel") ); + /* CHATROOM */ + dlg_chatroom = gui_box_create( 0, 0,0,640,480, + client_recv_packet, 1 ); + gui_widget_enable_event( dlg_chatroom, GUI_TIME_PASSED ); + surface = gui_widget_get_surface( dlg_chatroom ); + stk_surface_apply_wallpaper( + surface, 0,0,-1,-1, cr_wallpaper, STK_OPAQUE ); + /* chat window */ + list_chatter = gui_list_create( dlg_chatroom, 0,0,470,444, NULL, + 0, 1, 14, 20, client_render_chatter, GUI_LIST_NO_SELECT ); + /* edit + send/whisper buttons */ + gui_button_create( dlg_chatroom, 330,448,60,24, + client_send_chatter, 0,0,0,0,0, _("Send") ); + gui_button_create( dlg_chatroom, 390,448,80,24, + client_whisper_chatter, 0,0,0,0,0, _("Whisper") ); + edit_chatter = gui_edit_create( dlg_chatroom, 0,448,327,24, + client_send_chatter, 2, 0, MAX_CHATTER_SIZE, "" ); + gui_widget_enable_event( edit_chatter, GUI_KEY_RELEASED ); + gui_widget_set_default_key_widget( dlg_chatroom, edit_chatter ); + /* channel button + users in channel */ + label_channel = gui_label_create( dlg_chatroom, + 474,0,142,18,1, NULL, + 2, 0, STK_FONT_ALIGN_CENTER_X, _("MAIN") ); + gui_button_create( dlg_chatroom, 616,0,18,18, + client_select_channel, + 0,0,0,0,0, _("C") ); + list_users = gui_list_create( dlg_chatroom, + 474,20,160,142, client_handle_user_list, + 1, 1, 14, 20, client_render_user, + GUI_LIST_SINGLE_SELECT ); + /* levels label, levels, transfer button */ + gui_label_create( dlg_chatroom, 474,164,160,18,1, NULL, + 2, 0, STK_FONT_ALIGN_CENTER_X, _("Levelsets") ); + list_levels = gui_list_create( dlg_chatroom, + 474,184,160,120, client_handle_levelset_list, + 1, 1, 14, 20, client_render_levelset, + GUI_LIST_SINGLE_SELECT ); + /* box with level settings */ + parent = gui_box_create( dlg_chatroom, + 474,306,160,94, NULL, 0 ); + gui_label_create( parent, 2,2,102,20,0, NULL, + 2, NULL, STK_FONT_ALIGN_LEFT, _("Difficulty:") ); + gui_spinbutton_create( parent, 102,2,50,20, + client_update_difficulty, + 1, 3, 1, config.mp_diff+1 ); + gui_label_create( parent, 2,2+22,102,20,0, NULL, + 2, NULL, STK_FONT_ALIGN_LEFT, _("Rounds:") ); + gui_spinbutton_create( parent, 102,2+22,50,20, + client_update_rounds, + 1, 3, 1, config.mp_rounds ); + gui_label_create( parent, 2,2+44,102,20,0, NULL, + 2, NULL, STK_FONT_ALIGN_LEFT, _("Frags:") ); + gui_spinbutton_create( parent, 102,2+44,50,20, + client_update_frags, + 5, 30, 5, config.mp_frags ); + gui_label_create( parent, 2,2+66,102,20,0, NULL, + 2, NULL, STK_FONT_ALIGN_LEFT, _("Balls:") ); + gui_spinbutton_create( parent, 102,2+66,50,20, + client_update_balls, + 1, 6, 1, config.mp_balls ); + /* challenge & disconnect */ + gui_button_create( dlg_chatroom, + 474,402,160,20, client_challenge, + 0,0,0,0,0, _("Challenge") ); + gui_button_create( dlg_chatroom, + 474,dlg_chatroom->height-44,160,20, + client_open_connect_window, + 0,0,0,0,0, _("Connect") ); + gui_button_create( dlg_chatroom, + 534,dlg_chatroom->height-20,100,20, + client_quit, + 0,0,0,0,0, _("Quit") ); + gui_button_create( dlg_chatroom, + 474,dlg_chatroom->height-20,50,20, + client_popup_help, + 0,0,0,0,0, _("Help") ); + /* CHANNELS selector */ + dlg_channels = gui_box_create( 0, -1,-1, 200, 244, NULL, 1 ); + list_channels = gui_list_create( dlg_channels, -1,10, 176,150, + client_handle_channel_list, 0, 1, 14, 20, + client_render_channel, GUI_LIST_SINGLE_SELECT ); + gui_label_create( dlg_channels, -1,160, 176,20,0, NULL, + 2, 0, STK_FONT_ALIGN_LEFT, _("Channel:") ); + edit_channel = gui_edit_create( dlg_channels, + -1,180, 176,20, NULL, + 2, 0, 12, "" ); + gui_widget_set_default_key_widget( dlg_channels, edit_channel ); + gui_edit_set_filter( edit_channel, GUI_EDIT_ALPHANUMERICAL2 ); + gui_button_create( dlg_channels, + dlg_channels->width/2-90,210,80,20, + client_enter_channel, 0,0,0,0,0, _("Enter") ); + gui_button_create( dlg_channels, + dlg_channels->width/2+10,210,80,20, + client_cancel_channel, 0,0,0,0,0, _("Cancel") ); + /* STATISTICS */ + dlg_stats = gui_box_create( 0, -1,-1,386,260, NULL, 1 ); + gui_label_create( dlg_stats, -1,10,360,20,1, NULL, + 0, 0, STK_FONT_ALIGN_CENTER_X, _("Statistics") ); + label_winner = gui_label_create( dlg_stats, + -1,40,360,16,0, NULL, + 0, 0, STK_FONT_ALIGN_CENTER_X, "..." ); + label_stats = gui_label_create( dlg_stats, + -1,62,360,150,0, NULL, + 0, 0, STK_FONT_ALIGN_LEFT, _("Awaiting stats...") ); + gui_button_create( dlg_stats, -1,220,160,20, + client_close_stats, 0,0,0,0,0, _("Close") ); + /* PAUSEROOM */ + dlg_pauseroom = gui_box_create( 0, -1,-1,480,366, NULL, 1 ); + list_pausechatter = gui_list_create( + dlg_pauseroom, 0,0,470,300, NULL, + 0, 1, 14, 20, client_render_pause_chatter, + GUI_LIST_NO_SELECT ); + edit_pausechatter = gui_edit_create( + dlg_pauseroom, 0,303,470,24, + client_send_pausechatter, 2, 0, MAX_CHATTER_SIZE, "" ); + gui_widget_enable_event( edit_pausechatter, GUI_KEY_RELEASED ); + gui_widget_set_default_key_widget( dlg_pauseroom, edit_pausechatter ); + gui_button_create( dlg_pauseroom, -1,334,100,20, + client_close_pauseroom, 0,0,0,0,0, _("Close") ); + /* HELP */ + dlg_help = gui_box_create( 0, -1,-1,548,358, NULL, 1 ); + gui_label_create( dlg_help, -1,10,470,20,1, NULL, + 0, 0, STK_FONT_ALIGN_CENTER_X, _("Network Quick Help") ); + list_topic = gui_list_create( + dlg_help, 10,40,160,270, client_handle_topic_list, + 0, 1, 14, 20, client_render_topic, + GUI_LIST_SINGLE_SELECT ); + list_help = gui_list_create( + dlg_help, 180,40,350,300, NULL, + 0, 1, 14, 20, client_render_help, + GUI_LIST_NO_SELECT ); + gui_button_create( dlg_help, 10,320,160,20, client_close_help, + 0,0,0,0,0, _("Close") ); + /* INITS */ + /* empty chatter */ + memset( chatter, 0, sizeof( chatter ) ); + /* update chatboxes */ + gui_list_update( list_chatter, CHAT_LINE_COUNT ); + gui_list_update( list_pausechatter, CHAT_LINE_COUNT ); + gui_list_goto( list_chatter, -1 ); + gui_list_goto( list_pausechatter, -1 ); + /* set help topics */ + gui_list_update( list_topic, client_topic_count ); + /* call client_delete at exit */ + atexit( client_delete ); +#endif +} + +/* +==================================================================== +Free memory allocated by client_create( void ) +==================================================================== +*/ +void client_delete( void ) +{ +#ifdef NETWORK_ENABLED + client_data_delete(); + printf( _("Client finalized\n") ); +#endif +} + +/* +==================================================================== +Run the connect dialogue & chatroom until user closes the connect +dialogue. +==================================================================== +*/ +#ifdef NETWORK_ENABLED +static int client_printf_info( const char *format, ... ) +{ + va_list args; + char string[MAX_CHATTER_SIZE]; + + va_start( args, format ); + vsnprintf( string, MAX_CHATTER_SIZE, format, args ); + va_end( args ); + + client_add_chatter( string, 1 ); + return strlen(string); +} +#endif +void client_run( void ) +{ +#ifdef NETWORK_ENABLED + /* init UDP socket */ + sys_printf = client_printf_info; + net_init( atoi(config.local_port) ); + sys_printf = printf; + client_add_chatter( _("Press 'Connect' to connect to a game server."), 1 ); + + client_state = CLIENT_NONE; + client_recv_limit = config.recv_limit; + + gui_enable_event_filter(); + gui_widget_show( dlg_chatroom ); + stk_display_fade( STK_FADE_IN, STK_FADE_DEFAULT_TIME ); + gui_run( dlg_chatroom ); + stk_display_fade( STK_FADE_OUT, STK_FADE_DEFAULT_TIME ); + gui_disable_event_filter(); + + if ( client_is_connected ) { + /* tell server we are off */ + client_disconnect(); + /* finalize UDP socket */ + socket_print_stats( &client ); + } + net_shutdown(); +#endif +} diff --git a/project/jni/application/lbreakout2/client/client.h b/project/jni/application/lbreakout2/client/client.h new file mode 100644 index 000000000..720884973 --- /dev/null +++ b/project/jni/application/lbreakout2/client/client.h @@ -0,0 +1,51 @@ +/*************************************************************************** + client.h - description + ------------------- + begin : Sun Oct 20 12:02:57 CEST 2002 + copyright : (C) 2002 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef __CLIENT_H +#define __CLIENT_H + +/* +==================================================================== +This module provides the client GUI (connect dialogue & chatroom) +which is run by calling client_run() +==================================================================== +*/ + +/* +==================================================================== +Build the GUI and everything nescessary for the client chatroom. +client_create() installs client_delete() as exit function. +==================================================================== +*/ +void client_create( void ); + +/* +==================================================================== +Free memory allocated by client_create( void ) +==================================================================== +*/ +void client_delete( void ); + +/* +==================================================================== +Run the connect dialogue & chatroom until user closes the connect +dialogue. +==================================================================== +*/ +void client_run( void ); + +#endif diff --git a/project/jni/application/lbreakout2/client/client_data.c b/project/jni/application/lbreakout2/client/client_data.c new file mode 100644 index 000000000..41692e6b6 --- /dev/null +++ b/project/jni/application/lbreakout2/client/client_data.c @@ -0,0 +1,357 @@ +/*************************************************************************** + client_data.c - description + ------------------- + begin : Sat Oct 26 12:02:57 CEST 2002 + copyright : (C) 2002 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "client_data.h" +#include "lbreakout.h" +#include "../gui/gui.h" + +/* +==================================================================== +Externals +==================================================================== +*/ +extern GuiWidget *list_levels; +extern GuiWidget *list_chatter; +extern GuiWidget *list_games; +extern GuiWidget *list_users; +extern GuiWidget *list_channels; +extern GuiWidget *list_pausechatter; + +List *client_users = 0; /* users of channel known to client */ +List *client_channels = 0; /* list of default channels (strings) */ +List *client_levelsets = 0; /* list of MP set names */ + +ClientUser *client_user = 0; /* selected user */ +char *client_levelset = 0; /* selected levelset */ +char chatter[CHAT_LINE_COUNT][CHAT_LINE_WIDTH]; +char pause_chatter[CHAT_LINE_COUNT][CHAT_LINE_WIDTH]; +extern NetSocket client; +extern int client_is_connected; + +#define MAX_CLIENT_TOPIC_COUNT 5 +int client_topic_count = 4; +char *client_topics[MAX_CLIENT_TOPIC_COUNT]; +char *client_helps[MAX_CLIENT_TOPIC_COUNT]; +Text *client_help_text = 0; + +/* +==================================================================== +LOCALS +==================================================================== +*/ + +static void client_add_chatter_intern( + GuiWidget *list, char *string, int info ) +{ + int i, j; + static Text *text; + /* build new text */ + text = create_text( string, 52 ); + /* move old lines up */ + for ( i = 0; i < CHAT_LINE_COUNT - text->count; i++ ) + strcpy( chatter[i], chatter[i + text->count] ); + /* copy new lines */ + for ( j = 0, i = CHAT_LINE_COUNT - text->count; + i < CHAT_LINE_COUNT; i++, j++ ) { + if ( info ) { + strcpy( chatter[i] + 1, text->lines[j] ); + chatter[i][0] = '!'; + } + else if ( j > 0 ) { + strcpy( chatter[i] + 3 + info, text->lines[j] ); + chatter[i][0] = ' '; + chatter[i][1] = ' '; + chatter[i][2] = ' '; + } + else + strcpy( chatter[i], text->lines[j] ); + } + /* free memory */ + delete_text( text ); + /* update gui */ + gui_list_update( list, CHAT_LINE_COUNT ); +} +static void client_add_pause_chatter_intern( + GuiWidget *list, char *string, int info ) +{ + int i, j; + static Text *text; + /* build new text */ + text = create_text( string, 52 ); + /* move old lines up */ + for ( i = 0; i < CHAT_LINE_COUNT - text->count; i++ ) + strcpy( pause_chatter[i], pause_chatter[i + text->count] ); + /* copy new lines */ + for ( j = 0, i = CHAT_LINE_COUNT - text->count; + i < CHAT_LINE_COUNT; i++, j++ ) { + if ( info ) { + strcpy( pause_chatter[i] + 1, text->lines[j] ); + pause_chatter[i][0] = '!'; + } + else if ( j > 0 ) { + strcpy( pause_chatter[i] + 3 + info, text->lines[j] ); + pause_chatter[i][0] = ' '; + pause_chatter[i][1] = ' '; + pause_chatter[i][2] = ' '; + } + else + strcpy( pause_chatter[i], text->lines[j] ); + } + /* free memory */ + delete_text( text ); + /* update gui */ + gui_list_update( list, CHAT_LINE_COUNT ); +} + +/* +==================================================================== +PUBLICS +==================================================================== +*/ + +/* transmit via client's socket if client_is_connected is True */ +void client_transmit( int type, int len, char *data ) +{ +#ifdef NETWORK_ENABLED + if ( client_is_connected ) + socket_transmit( &client, type, len, data ); +#endif +} + +/* +==================================================================== +Create/delete client's data structs. +==================================================================== +*/ +void client_data_create( void ) +{ + client_channels = list_create( LIST_AUTO_DELETE, 0 /*just strings*/ ); + client_users = list_create( LIST_AUTO_DELETE, 0 ); + client_levelsets = list_create( LIST_AUTO_DELETE, 0 ); + /* help defined here for localization reasons */ + client_topics[0] = strdup(_("Challenges")); + client_topics[1] = strdup(_("Channels")); + client_topics[2] = strdup(_("Console Commands")); + client_topics[3] = strdup(_("Game Rules")); + client_topics[4] = strdup(_("Transfers")); + client_helps[0] = strdup(_( + "To challenge a user you first have to select him/her in the " + "upper right list and the levelset you want to play " + "from the list below. Then you adjust the game settings to your " + "likings and hit the 'Challenge' button which will send your " + "challenge to the other user who will either accept or decline. " + "If (s)he accepts a direct connection will be established and the " + "game will start.##" + "DIFFICULTY: This influences ball speed, paddle size and score as for " + "single player modus. (1 = Easy, 2 = Medium, 3 = Hard)##" + "ROUNDS: This is the number of rounds played per level. Winning a " + "round scores one point and the player with the most points wins " + "the match.##" + "FRAGS: In a pingpong level (no bricks) a player gains a frag everytime " + "the opponent looses a ball. 'frag' is a bad name for this, should be " + "pingpong winning score or something but 'frags' is simply shorter. " + "The player who hits this limit first " + "wins the round.#In levels with bricks this option is ignored " + "and the level is over after all bricks were cleared.##" + "BALLS: In a pingpong level (no bricks) each player may fire multiple " + "balls up to this number. If a player looses a ball he may fire it again.#" + "In normal levels (with bricks) this option is ignored and a gets a new ball " + "after five seconds penalty time.")); + client_helps[1] = strdup(_( + "To switch a channel hit the 'C' button above the user list. " + "You can enter either an existing or a new channel. You " + "can only talk to and challenge users in the same channel.")); + client_helps[2] = strdup(_( + "User Console Commands:##" + "/search #" + "Search for a user in all channels.##" + "/version#" + "Display version of transmission protocol.##" + "/info#" + "Display current userlimit and frame rate.##" + "Admin Console Commands:##" + "/admin_says #" + "Broadcast a message to all chatting users.##" + "/kick #" + "Kick user by that name.##" + "/addbot #" + "Add a paddle bot. The speed is defined in pixels per second. 800 to 1000 is a good value.##" + "/delbot #" + "Delete paddle bot.##" + "/set #" + "Set a variable to a new value:#" + " userlimit: is the number of users that may login. If decreased with too many users online" + " no one is kicked. This limit does not matter for admin login.#" + " fps: is how many times a second the server calls up the communication and sends/receives" + " packets. This should not be too high to prevent network flooding. 40 is a good value.#" + " packetlimit: if not -1 this is the number of packets parsed in one communication step. -1" + " which is the default means the queue is parsed until empty##" + "/addset #" + "Load a new levelset that has been copied to the levels directory and make it available " + "to the users.##" + "/halt#" + "Halt server after 5 seconds and inform all users, even the playing ones, about this.")); + client_helps[3] = /* xgettext:no-c-format */ strdup(_( "Basically you play the game as in single player mode but their " + "are some special things you might find useful to know.##" + "PINGPONG:#" + "The point here is to play it fast and to use all of your balls. " + "Use the right and left mouse button to fire the balls " + "while moving the paddle. Your opponent " + "will have trouble to reflect all balls if you do it right. " + "If you are not sure wether you got balls left click anyway. " + "Keep the button pressed for a while! The fire rate is restricted " + "to one ball every 500 milliseconds.##" + "NORMAL:#" + "Your goal here is too gain more score than your opponent to win a " + "round. Basically you do this by clearing bricks and collecting extras " + "but there are some other ways as well:#" + "1) To loose a ball means to loose 10% score. After five seconds penalty " + "a new ball is created and you can continue playing.#" + "2) Hitting your opponents paddle with the plasma weapon will give you " + "1000 points while stealing him/her the same amount.#" + "3) Bonus/penalty magnet will attract _all_ bonuses/penalties even those " + "released by your opponent.##" + "Note: If you pause the game by pressing 'p' a chat will pop up and you " + "can talk to your opponent.")); + client_helps[4] = strdup(_( + "You cannot offer someone your levelset unless this user " + "wants to receive your set which requires the following steps:#" + "1) select the user to whom you want to listen#" + "2) press the 'L' button above the levelset list#" + "3) wait for offer or cancel 'listening'#" + "The receiver is now ready and the sender has to:#" + "1) select the listening user#" + "2) select the levelset (s)he wants to transfer#" + "3) hit the 'T' button above the levelset list#" + "If the receiver has this levelset already located in " + "~/.lgames/lbreakout2-levels and it is up-to-date the transfer " + "does not take place otherwise the receiver is asked to confirm " + "and if (s)he does so the set is transferred to the home " + "directory and directly available if intended for network. (starts with 'MP_')#" + "NOTE: Only the challenger is required to have the levelset so you " + "don not have to transfer sets to play with someone. However if your opponent " + "likes your set and wants to challenge others with it both can engage into " + "a transfer.")); +} +void client_data_delete( void ) +{ + int i; + if ( client_channels ) list_delete( client_channels ); + client_channels = 0; + if ( client_users ) list_delete( client_users ); + client_users = 0; + if ( client_levelsets ) list_delete( client_levelsets ); + client_levelsets = 0; + if ( client_help_text ) delete_text( client_help_text ); + client_help_text = 0; + for (i=0;iname, name, 12 ); + user->id = id; + list_add( client_users, user ); + } +} +void client_remove_user( int id ) +{ + ClientUser *entry = 0; + if ( ( entry = client_find_user( id ) ) ) { + if ( entry == client_user ) + client_user = 0; + list_delete_item( client_users, entry ); + } +} +ClientUser* client_find_user( int id ) +{ + ClientUser *entry; + list_reset( client_users ); + while ( ( entry = list_next( client_users ) ) ) + if ( entry->id == id ) + return entry; + return 0; +} + +/* +==================================================================== +Add chatter to chat window. If 'info' is true the text is +displayed red and without indention. +==================================================================== +*/ +void client_add_chatter( char *string, int info ) +{ + client_add_chatter_intern( list_chatter, string, info ); +} + +/* +==================================================================== +Add chatter to chat window. If 'info' is true the text is +displayed red and without indention. +==================================================================== +*/ +void client_printf_chatter( int info, char *format, ... ) +{ + va_list args; + char string[MAX_CHATTER_SIZE]; + + va_start( args, format ); + vsnprintf( string, MAX_CHATTER_SIZE, format, args ); + va_end( args ); + + client_add_chatter_intern( list_chatter, string, info ); +} +/* +==================================================================== +Add chatter to pause chat window. If 'info' is true the text is +displayed red and without indention. +==================================================================== +*/ +void client_add_pausechatter( char *string, int info ) +{ + client_add_pause_chatter_intern( list_pausechatter, string, info ); +} diff --git a/project/jni/application/lbreakout2/client/client_data.h b/project/jni/application/lbreakout2/client/client_data.h new file mode 100644 index 000000000..c85070f2b --- /dev/null +++ b/project/jni/application/lbreakout2/client/client_data.h @@ -0,0 +1,118 @@ +/*************************************************************************** + client_data.h - description + ------------------- + begin : Sat Oct 26 12:02:57 CEST 2002 + copyright : (C) 2002 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef __CLIENT_DATA_H +#define __CLIENT_DATA_H + +/* +==================================================================== +Client states +==================================================================== +*/ +enum { + CLIENT_NONE = 0, + + /* ingame stats lie in between */ + + CLIENT_INFO = 1000, /* not open to any challenges/transfers */ + CLIENT_AWAIT_ANSWER, /* wait for answer to a challenge */ + CLIENT_ANSWER, /* answer to a challenge */ + CLIENT_CONFIRM_TRANSFER, /* say yes or no to transfer */ + CLIENT_AWAIT_TRANSFER_CONFIRMATION, /* wait for answer on + transfer offer */ + CLIENT_RECEIVE, /* receive level data */ + CLIENT_LISTEN, /* listen to user for a levelset */ + CLIENT_SELECT_CHANNEL, /* selecting a channel */ + CLIENT_STATS, /* looking at game stats */ + CLIENT_PLAY, /* playing game */ + CLIENT_HELP /* looking at help */ +}; + +/* +==================================================================== +Chatter definitions. +==================================================================== +*/ +enum { + CHAT_LINE_COUNT = 200, + CHAT_LINE_WIDTH = 64, /* includes \0 */ + MAX_CHATTER_SIZE = 100 + +}; + +/* +==================================================================== +Client data structs +==================================================================== +*/ +typedef struct { + int id; + char name[16]; +} ClientUser; + +/* transmit via client's socket if client_is_connected is True */ +void client_transmit( int type, int len, char *data ); + +/* +==================================================================== +Create/delete client's data structs. +==================================================================== +*/ +void client_data_create( void ); +void client_data_delete( void ); + +/* +==================================================================== +Clear all data structs +==================================================================== +*/ +void client_data_clear( void ); + +/* +==================================================================== +Add/remove/find users/games/channels. Do not update the GUI. +==================================================================== +*/ +void client_add_user( int id, char *name ); +void client_remove_user( int id ); +ClientUser* client_find_user( int id ); + +/* +==================================================================== +Add chatter to chat window. If 'info' is true the text is +displayed red and without indention. +==================================================================== +*/ +void client_add_chatter( char *string, int info ); + +/* +==================================================================== +Add chatter to chat window. If 'info' is true the text is +displayed red and without indention. +==================================================================== +*/ +void client_printf_chatter( int info, char *format, ... ); + +/* +==================================================================== +Add chatter to pause chat window. If 'info' is true the text is +displayed red and without indention. +==================================================================== +*/ +void client_add_pausechatter( char *string, int info ); + +#endif diff --git a/project/jni/application/lbreakout2/client/client_handlers.c b/project/jni/application/lbreakout2/client/client_handlers.c new file mode 100644 index 000000000..7463979f3 --- /dev/null +++ b/project/jni/application/lbreakout2/client/client_handlers.c @@ -0,0 +1,626 @@ +/*************************************************************************** + client_handlers.c - description + ------------------- + begin : Sat Oct 26 12:02:57 CEST 2002 + copyright : (C) 2002 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "config.h" +#include "../gui/gui.h" +#include "client_data.h" +#include "client_handlers.h" +#include "comm.h" +#include "game.h" + +/* +==================================================================== +Externals +==================================================================== +*/ +extern Config config; +extern List *client_users; +extern List *client_games; +extern List *client_channels; +extern List *client_levelsets; +extern char *client_levelset; +extern ClientUser *client_user; +extern char chatter[CHAT_LINE_COUNT][CHAT_LINE_WIDTH]; +extern GuiWidget *dlg_connect; +extern GuiWidget *dlg_info; +extern GuiWidget *dlg_confirm; +extern GuiWidget *dlg_chatroom; +extern GuiWidget *dlg_channels; +extern GuiWidget *dlg_stats; +extern GuiWidget *dlg_pauseroom; +extern GuiWidget *dlg_help; +extern GuiWidget *label_info; +extern GuiWidget *label_stats; +extern GuiWidget *label_winner; +extern GuiWidget *label_channel; +extern GuiWidget *edit_server; +extern GuiWidget *edit_username; +extern GuiWidget *list_chatter; +extern GuiWidget *edit_chatter; +extern GuiWidget *list_levels; +extern GuiWidget *list_users; +extern GuiWidget *list_channels; +extern GuiWidget *edit_channel; +extern GuiWidget *edit_pausechatter; +extern GuiWidget *list_help; +extern int levelset_version, levelset_update; +extern List *levels; +extern void client_popup_info( char *format, ... ); +extern void client_run_game( int challenger ); +extern int client_topic_count; +extern char *client_helps[]; +extern Text *client_help_text; + +/* +==================================================================== +Client +==================================================================== +*/ +#ifdef NETWORK_ENABLED +NetSocket client; /* client socket to the game server */ +#endif +int client_is_connected; /* wether 'client' is a valid uplink */ +char client_error[128]; /* error message */ +int client_id; /* id assigned by server */ +char client_name[16]; /* our local username */ +int client_state = CLIENT_NONE; +int client_recv_limit; + +/* +==================================================================== +Challenge data +==================================================================== +*/ +char *mp_diff_names[] = { "Easy", "Medium", "Hard" }; +char mp_levelset[16]; /* name of levelset we play */ +int mp_peer_id; +char mp_peer_name[16]; /* remote player we want to play with */ +int mp_levelset_version; +int mp_levelset_update; /* version of levelset */ +int mp_level_count; /* number of levels in set */ +int mp_diff, mp_rounds, mp_frags, mp_balls; /* game configuration */ + +extern void close_pause_chat( void ); + +/* +==================================================================== +Disconnect from current server if any. +==================================================================== +*/ +void client_disconnect() +{ +#ifdef NETWORK_ENABLED + char buf[128]; + + if ( !client_is_connected ) return; + + /* disconnect */ + socket_print_stats( &client ); + sprintf( buf, _("disconnected from %s"), + net_addr_to_string(&client.remote_addr) ); + client_add_chatter( buf, 1 ); + buf[0] = MSG_DISCONNECT; + client_transmit( CODE_BLUE, 1, buf ); + client_is_connected = 0; + client_data_clear(); + gui_label_set_text( label_channel, "MAIN" ); +#endif +} + +/* +==================================================================== +Try to connect to a game server. Retry twice every second +or quit then. +==================================================================== +*/ +void client_connect( GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + NetAddr newaddr; + int attempt = 0; + int type; + char server[128]; + + if ( event->type != GUI_CLICKED ) return; + + /* close the connect window */ + gui_widget_hide( dlg_connect ); + + /* disconnect from current server */ + client_disconnect(); + + /* extract ip and port and build a new socket out of it */ + gui_edit_get_text( edit_server, server, 128, 0, -1 ); + snprintf( config.server, 64, "%s", server ); + if ( !net_build_addr( &newaddr, server, 0 ) ) { + client_printf_chatter( 1, _("ERROR: address %s does not resolve"), config.server ); + return; + } + socket_init( &client, &newaddr ); + + /* get username */ + gui_edit_get_text( edit_username, + config.username, 16, 0,-1 ); + + /* build connect message */ + msg_begin_writing( msgbuf, &msglen, 64 ); + msg_write_int8( MSG_CONNECT ); + msg_write_int8( PROTOCOL ); + msg_write_string( config.username ); + msg_write_string( _("unused") ); /* passwd */ + + while ( attempt < 3 ) { + client_printf_chatter( 1, "%s: %s...", + config.server, + attempt==0?_("connecting"):_("retry") ); + stk_display_update( STK_UPDATE_ALL ); + net_transmit_connectionless( &newaddr, msglen, msgbuf ); + + SDL_Delay( 1000 ); + + while ( net_recv_packet() ) { + if ( msg_is_connectionless() ) + msg_begin_connectionless_reading(); + else + if ( !socket_process_header( &client ) ) + continue; + + type = msg_read_int8(); + switch ( type ) { + case MSG_LOGIN_OKAY: + client_id = msg_read_int32(); + strcpy( client_name, msg_read_string() ); + client_printf_chatter( 1, _("%s: connected!"), config.server ); + client_is_connected = 1; + return; + case MSG_ERROR: + client_printf_chatter( 1, _("ERROR: connection refused: %s"), + msg_read_string() ); + return; + } + } + + attempt++; + } + client_add_chatter( _("ERROR: server does not respond"), 1 ); +#endif +} + +/* +==================================================================== +Open/close the connection window. +==================================================================== +*/ +void client_open_connect_window( + GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type == GUI_CLICKED ) + gui_widget_show( dlg_connect ); +} +void client_close_connect_window( + GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type == GUI_CLICKED ) + gui_widget_hide( dlg_connect ); +} + +/* +==================================================================== +Close chatroom and return to LBreakout's menu. +==================================================================== +*/ +void client_quit( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type == GUI_CLICKED ) + gui_widget_hide( dlg_chatroom ); + /* disconnect is handled in client_run to cover + * stk_quit_requests as well */ +} + +/* +==================================================================== +Close the info window and clear state. +==================================================================== +*/ +void client_close_info( GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + if ( event->type == GUI_CLICKED ) { + gui_widget_hide( dlg_info ); + msg_begin_writing( msgbuf, &msglen, 128 ); + switch ( client_state ) { + case CLIENT_AWAIT_ANSWER: + msg_write_int8( MSG_CANCEL_GAME ); + break; + } + client_transmit( CODE_BLUE, msglen, msgbuf ); + client_state = CLIENT_NONE; + } +#endif +} + +/* +==================================================================== +Send chatter this function is either called by the send button +or by the edit. +==================================================================== +*/ +void client_send_chatter( + GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + char buf[MAX_CHATTER_SIZE + 1]; + if ( ( widget->type == GUI_EDIT && + event->type == GUI_KEY_RELEASED && + event->key.keysym == SDLK_RETURN ) || + ( widget->type == GUI_BUTTON && + event->type == GUI_CLICKED ) ) { + /* get message */ + gui_edit_get_text( edit_chatter, + buf, MAX_CHATTER_SIZE + 1, 0,-1 ); + /* clear chat edit */ + gui_edit_set_text( edit_chatter, "" ); + + msg_begin_writing( msgbuf, &msglen, MAX_MSG_SIZE ); + /* a prepended '/' means this is a command */ + if ( buf[0] == '/' ) { + msg_write_int8( MSG_COMMAND ); + msg_write_string( buf+1 ); + } + else { + msg_write_int8( MSG_CHATTER ); + msg_write_string( buf ); + } + client_transmit( CODE_BLUE, msglen, msgbuf ); + } +#endif +} +/* +==================================================================== +Whisper chatter if a user is selected. +==================================================================== +*/ +void client_whisper_chatter( + GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + char buf[MAX_CHATTER_SIZE + 1]; + + if ( event->type != GUI_CLICKED ) return; + + /* get message */ + gui_edit_get_text( edit_chatter, + buf, MAX_CHATTER_SIZE + 1, 0,-1 ); + + /* send to selected user */ + if ( client_user ) { + msg_begin_writing( msgbuf, &msglen, MAX_MSG_SIZE ); + msg_write_int8( MSG_WHISPER ); + msg_write_int32( client_user->id ); + msg_write_string( buf ); + client_transmit( CODE_BLUE, msglen, msgbuf ); + + /* clear chat edit */ + gui_edit_set_text( edit_chatter, "" ); + } + else + client_add_chatter( _("You must select a user to whisper!"), 1 ); +#endif +} + +/* +==================================================================== +Update selected peer and levelset. +==================================================================== +*/ +void client_handle_user_list( + GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type == GUI_ITEM_SELECTED ) + client_user = list_get( client_users, event->item.y ); + else + if ( event->type == GUI_ITEM_UNSELECTED ) + client_user = 0; +} +void client_handle_levelset_list( + GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type == GUI_ITEM_SELECTED ) + client_levelset = list_get( client_levelsets, + event->item.y ); + else + if ( event->type == GUI_ITEM_UNSELECTED ) + client_levelset = 0; +} + +/* +==================================================================== +Handle confirmation/cancelling of confirmation dialogue. +==================================================================== +*/ +void client_confirm( GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + if ( event->type != GUI_CLICKED ) return; + gui_widget_hide( dlg_confirm ); + msg_begin_writing( msgbuf, &msglen, MAX_MSG_SIZE ); + switch ( client_state ) { + case CLIENT_ANSWER: + msg_write_int8( MSG_ACCEPT_CHALLENGE ); + client_transmit( CODE_BLUE, msglen, msgbuf ); + + /* play */ + gui_disable_event_filter(); + if ( client_game_init_network( mp_peer_name, mp_diff ) ) + client_game_run(); + client_game_finalize(); + gui_enable_event_filter(); + + gui_widget_draw( dlg_chatroom ); + stk_display_fade( STK_FADE_IN, STK_FADE_DEFAULT_TIME ); + break; + } +#endif +} +void client_cancel( GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + if ( event->type != GUI_CLICKED ) return; + gui_widget_hide( dlg_confirm ); + msg_begin_writing( msgbuf, &msglen, MAX_MSG_SIZE ); + switch ( client_state ) { + case CLIENT_ANSWER: + msg_write_int8( MSG_REJECT_CHALLENGE ); + break; + } + client_transmit( CODE_BLUE, msglen, msgbuf ); + client_state = CLIENT_NONE; +#endif +} + +/* +==================================================================== +Challenge selected user. +==================================================================== +*/ +void client_challenge( GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + if ( event->type != GUI_CLICKED ) return; + + /* everything valid? */ + if ( client_user == 0 ) { + client_popup_info( _("You must select a user for a challenge.") ); + return; + } + if ( client_levelset == 0 ) { + client_popup_info( _("You must select a levelset for a challenge.") ); + return; + } + if ( client_user->id == client_id ) { + client_popup_info( _("You can't challenge yourself.") ); + return; + } + + strcpy( mp_peer_name, client_user->name ); + mp_peer_id = client_user->id; + strcpy( mp_levelset, client_levelset ); + mp_diff = config.mp_diff; + mp_rounds = config.mp_rounds; + mp_balls = config.mp_balls; + mp_frags = config.mp_frags; + + /* challenger, challenged, levelset, diff, rounds, frags, balls */ + msg_begin_writing( msgbuf, &msglen, MAX_MSG_SIZE ); + msg_write_int8( MSG_OPEN_GAME ); + msg_write_int32( mp_peer_id ); + msg_write_string( mp_levelset ); + msg_write_int8( mp_diff ); + msg_write_int8( mp_rounds ); + msg_write_int8( mp_frags ); + msg_write_int8( mp_balls ); + client_transmit( CODE_BLUE, msglen, msgbuf ); + + client_popup_info( _("You have challenged %s. Let's see what (s)he says..."), mp_peer_name ); + client_state = CLIENT_AWAIT_ANSWER; +#endif +} + +/* +==================================================================== +Update multiplayer network configuration. +==================================================================== +*/ +void client_update_difficulty( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CHANGED ) return; + gui_spinbutton_get_value( widget, &config.mp_diff ); + config.mp_diff--; +} +void client_update_rounds( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CHANGED ) return; + gui_spinbutton_get_value( widget, &config.mp_rounds ); +} +void client_update_frags( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CHANGED ) return; + gui_spinbutton_get_value( widget, &config.mp_frags ); +} +void client_update_balls( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CHANGED ) return; + gui_spinbutton_get_value( widget, &config.mp_balls ); +} + +/* +==================================================================== +Open channel selector +==================================================================== +*/ +void client_select_channel( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CLICKED ) return; + /* select first channel (we always have MAIN) */ + gui_list_update( list_channels, client_channels->count ); + if ( client_channels->count > 0 ) { + gui_edit_set_text( edit_channel, list_first( client_channels ) ); + gui_list_select( list_channels, 0,0, 1 ); + } + gui_widget_show( dlg_channels ); + client_state = CLIENT_SELECT_CHANNEL; +} +/* +==================================================================== +Handle channel (un)selection. +==================================================================== +*/ +void client_handle_channel_list( + GuiWidget *widget, GuiEvent *event ) +{ + char *name; + /* if a channel is selected the name is copied into the edit. + unselecting does not change anything. the channel by the + caption in the edit is opened on enter_channel() */ + if ( event->type == GUI_ITEM_SELECTED ) { + name = list_get( client_channels, event->item.y ); + if ( name ) gui_edit_set_text( edit_channel, name ); + } +} +/* +==================================================================== +Close channel selector or enter new channel. +==================================================================== +*/ +void client_enter_channel( GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + char buf[16]; + + if ( event->type != GUI_CLICKED ) return; + + gui_widget_hide( dlg_channels ); + client_state = CLIENT_NONE; + + /* retreive name of channel we want to enter */ + buf[0] = 0; + gui_edit_get_text( edit_channel, buf, 16, 0,-1 ); + + /* send it */ + msg_begin_writing( msgbuf, &msglen, MAX_MSG_SIZE ); + msg_write_int8( MSG_ENTER_CHANNEL ); + msg_write_string( buf ); + client_transmit( CODE_BLUE, msglen, msgbuf ); +#endif +} +void client_cancel_channel( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CLICKED ) return; + gui_widget_hide( dlg_channels ); + client_state = CLIENT_NONE; +} + +/* +==================================================================== +Close statistics +==================================================================== +*/ +void client_close_stats( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CLICKED ) return; + gui_widget_hide( dlg_stats ); + client_state = CLIENT_NONE; + gui_label_set_text( label_stats, _("Awaiting stats...") ); + gui_label_set_text( label_winner, "..." ); +} + +/* +==================================================================== +Send chatter to gamepeer in pauseroom when ENTER was pressed. +==================================================================== +*/ +void client_send_pausechatter( GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + char buf[MAX_CHATTER_SIZE + 1]; + if ( widget->type == GUI_EDIT && + event->type == GUI_KEY_RELEASED && + event->key.keysym == SDLK_RETURN ) { + /* get message */ + sprintf( buf, "<%s> ", client_name ); + gui_edit_get_text( edit_pausechatter, + buf+strlen(buf), MAX_CHATTER_SIZE + 1, 0,-1 ); + /* clear chat edit */ + gui_edit_set_text( edit_pausechatter, "" ); + /* deliver message to remote ... */ + msg_begin_writing( msgbuf, &msglen, MAX_MSG_SIZE ); + msg_write_int8( MSG_CHATTER ); + msg_write_string( buf ); + client_transmit( CODE_BLUE, msglen, msgbuf ); + client_add_pausechatter( buf, 0 ); + } +#endif +} + +/* +==================================================================== +Close pauseroom. +==================================================================== +*/ +void client_close_pauseroom( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CLICKED ) return; + close_pause_chat(); + comm_send_short( MSG_UNPAUSE ); +} + +/* +==================================================================== +Popup help dialogue. +==================================================================== +*/ +void client_popup_help( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CLICKED ) return; + gui_widget_show( dlg_help ); + client_state = CLIENT_HELP; +} +/* +==================================================================== +Close help dialogue. +==================================================================== +*/ +void client_close_help( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_CLICKED ) return; + gui_widget_hide( dlg_help ); +} +/* +==================================================================== +Select topic and display help text. +==================================================================== +*/ +void client_handle_topic_list( GuiWidget *widget, GuiEvent *event ) +{ + if ( event->type != GUI_ITEM_SELECTED ) return; + if ( event->item.y >= client_topic_count ) return; + gui_list_goto( list_help, 0 ); + if ( client_help_text ) delete_text( client_help_text ); + client_help_text = create_text( client_helps[event->item.y], 41 ); + gui_list_update( list_help, client_help_text->count ); +} diff --git a/project/jni/application/lbreakout2/client/client_handlers.h b/project/jni/application/lbreakout2/client/client_handlers.h new file mode 100644 index 000000000..a9eeda999 --- /dev/null +++ b/project/jni/application/lbreakout2/client/client_handlers.h @@ -0,0 +1,186 @@ +/*************************************************************************** + client_handlers.h - description + ------------------- + begin : Sat Oct 26 12:02:57 CEST 2002 + copyright : (C) 2002 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef __CLIENT_HANDLERS_H +#define __CLIENT_HANDLERS_H + +/* +==================================================================== +Disconnect from current server if any. +==================================================================== +*/ +void client_disconnect(); + +/* +==================================================================== +Try to connect to a game server. Retry twice every three seconds +or quit then. +==================================================================== +*/ +void client_connect( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Open/close the connection window. +==================================================================== +*/ +void client_open_connect_window( GuiWidget *widget, GuiEvent *event ); +void client_close_connect_window( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Close chatroom and return to LBreakout's menu. +==================================================================== +*/ +void client_quit( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Close the info window and clear state. +==================================================================== +*/ +void client_close_info( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Send chatter this function is either called by the send button +or by the edit. +==================================================================== +*/ +void client_send_chatter( + GuiWidget *widget, GuiEvent *event ); +/* +==================================================================== +Whisper chatter if a user is selected. +==================================================================== +*/ +void client_whisper_chatter( + GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Update selected peer and levelset. +==================================================================== +*/ +void client_handle_user_list( + GuiWidget *widget, GuiEvent *event ); +void client_handle_levelset_list( + GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Handle confirmation/cancelling of confirmation dialogue. +==================================================================== +*/ +void client_confirm( GuiWidget *widget, GuiEvent *event ); +void client_cancel( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Challenge selected user. +==================================================================== +*/ +void client_challenge( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Update multiplayer network configuration. +==================================================================== +*/ +void client_update_difficulty( GuiWidget *widget, GuiEvent *event ); +void client_update_rounds( GuiWidget *widget, GuiEvent *event ); +void client_update_frags( GuiWidget *widget, GuiEvent *event ); +void client_update_balls( GuiWidget *widget, GuiEvent *event ); +void client_update_port( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Allow user to transfer a levelset. +==================================================================== +*/ +void client_listen( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Initiate levelset transfer. +==================================================================== +*/ +void client_transfer( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Open channel selector +==================================================================== +*/ +void client_select_channel( GuiWidget *widget, GuiEvent *event ); +/* +==================================================================== +Handle channel (un)selection. +==================================================================== +*/ +void client_handle_channel_list( + GuiWidget *widget, GuiEvent *event ); +/* +==================================================================== +Close channel selector or enter new channel. +==================================================================== +*/ +void client_enter_channel( GuiWidget *widget, GuiEvent *event ); +void client_cancel_channel( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Close statistics +==================================================================== +*/ +void client_close_stats( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Send chatter to gamepeer in pauseroom when ENTER was pressed. +==================================================================== +*/ +void client_send_pausechatter( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Close pauseroom. +==================================================================== +*/ +void client_close_pauseroom( GuiWidget *widget, GuiEvent *event ); + +/* +==================================================================== +Popup help dialogue. +==================================================================== +*/ +void client_popup_help( GuiWidget *widget, GuiEvent *event ); +/* +==================================================================== +Close help dialogue. +==================================================================== +*/ +void client_close_help( GuiWidget *widget, GuiEvent *event ); +/* +==================================================================== +Select topic and display help text. +==================================================================== +*/ +void client_handle_topic_list( GuiWidget *widget, GuiEvent *event ); + +#endif + diff --git a/project/jni/application/lbreakout2/client/client_recv.c b/project/jni/application/lbreakout2/client/client_recv.c new file mode 100644 index 000000000..e7b02e304 --- /dev/null +++ b/project/jni/application/lbreakout2/client/client_recv.c @@ -0,0 +1,357 @@ +/*************************************************************************** + client_recv.c - description + ------------------- + begin : Sat Oct 26 12:02:57 CEST 2002 + copyright : (C) 2002 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include +#include "lbreakout.h" +#include "client_data.h" +#include "game.h" +#include "../game/game.h" +#include "../gui/gui.h" + +/* +==================================================================== +Externals +==================================================================== +*/ +#ifdef NETWORK_ENABLED +extern NetSocket client; +extern int client_is_connected; +#endif +extern GuiWidget *dlg_info; +extern GuiWidget *dlg_confirm; +extern GuiWidget *dlg_chatroom; +extern GuiWidget *label_channel; +extern GuiWidget *label_info; +extern GuiWidget *label_confirm; +extern GuiWidget *label_stats; +extern GuiWidget *label_winner; +extern GuiWidget *list_chatter; +extern GuiWidget *list_levels; +extern GuiWidget *list_users; +extern GuiWidget *list_games; +extern List *client_users; +extern List *client_channels; +extern List *client_levelsets; +extern int client_state; +extern List *levels; +extern int net_buffer_cur_size, msg_read_pos; +extern char net_buffer[MAX_MSG_SIZE + PACKET_HEADER_SIZE]; +/* CHALLENGE */ +extern char client_name[16]; +extern int client_recv_limit; +extern char *mp_diff_names[]; +extern char mp_levelset[16]; +extern int mp_peer_id; +extern char mp_peer_name[16]; +extern int mp_levelset_version; +extern int mp_levelset_update; +extern int mp_level_count; +extern int levelset_version, levelset_update; +extern int mp_diff, mp_rounds, mp_frags, mp_balls; +extern ClientUser *client_user; +extern void client_run_game( int challenger ); +extern void client_disconnect(); /* from client.c */ +extern int client_comm_delay; + +/* +==================================================================== +Popup info dialogue and set status to INFO. +==================================================================== +*/ +void client_popup_info( char *format, ... ) +{ + char buffer[256]; + va_list args; + va_start( args, format ); + vsnprintf( buffer, 256, format, args ); + va_end( args ); + gui_label_set_text( label_info, buffer ); + gui_widget_show( dlg_info ); + client_state = CLIENT_INFO; +} +/* +==================================================================== +Popup confirm dialogue and _keep_ status. +==================================================================== +*/ +void client_popup_confirm( char *format, ... ) +{ + char buffer[256]; + va_list args; + va_start( args, format ); + vsnprintf( buffer, 256, format, args ); + va_end( args ); + gui_label_set_text( label_confirm, buffer ); + gui_widget_show( dlg_confirm ); +} + +/* +==================================================================== +Parse all messages in net_packet. +==================================================================== +*/ +#ifdef NETWORK_ENABLED +static void client_parse_packet() +{ + int i, num; + char name[16]; + unsigned char type; + int handled; + + while ( 1 ) { + type = (unsigned)msg_read_int8(); handled = 0; + + if ( msg_read_failed() ) break; /* no more messages */ + + switch ( type ) { + case MSG_PREPARE_FULL_UPDATE: + /* do only clear users as channels and + * levelsets are fixed */ + list_clear( client_users ); client_user = 0; + handled = 1; + break; + case MSG_ERROR: + client_printf_chatter( 1, _("ERROR: %s"), msg_read_string() ); + handled = 1; + break; + case MSG_BUSY: + if ( client_state == CLIENT_AWAIT_ANSWER || + client_state == CLIENT_AWAIT_TRANSFER_CONFIRMATION ) + client_popup_info( + _("%s is busy at the moment."), + mp_peer_name ); + handled = 1; + break; + case MSG_DISCONNECT: + client_disconnect(); + handled = 1; + break; + case MSG_SET_COMM_DELAY: + client_comm_delay = msg_read_int16(); + printf( _("comm_delay set to %i\n"), client_comm_delay ); + handled = 1; + break; + /* chatter */ + case MSG_SERVER_INFO: + client_add_chatter( msg_read_string(), 1 ); + handled = 1; + break; + case MSG_CHATTER: + client_add_chatter( msg_read_string(), 0 ); + handled = 1; + break; + /* users */ + case MSG_ADD_USER: + num = msg_read_int32(); + snprintf( name, 16, "%s", msg_read_string() ); name[15] = 0; + if ( msg_read_failed() ) break; + client_add_user( num, name ); + gui_list_update( + list_users, + client_users->count ); + /* re-select current entry */ + if ( client_user ) { + num = list_check( client_users, client_user ); + if ( num != -1 ) + gui_list_select( list_users, 0, num, 1 ); + } + handled = 1; + break; + case MSG_REMOVE_USER: + num = msg_read_int32(); + if ( msg_read_failed() ) break; + client_remove_user( num ); + gui_list_update( + list_users, + client_users->count ); + /* re-select current entry */ + if ( client_user ) { + num = list_check( client_users, client_user ); + if ( num != -1 ) + gui_list_select( list_users, 0, num, 1 ); + } + handled = 1; + break; + case MSG_CHANNEL_LIST: + list_clear( client_channels ); + num = msg_read_int8(); + for ( i = 0; i < num; i++ ) + list_add( client_channels, strdup(msg_read_string()) ); + handled = 1; + break; + case MSG_LEVELSET_LIST: + list_clear( client_levelsets ); + num = msg_read_int8(); + for ( i = 0; i < num; i++ ) + list_add( client_levelsets, strdup(msg_read_string()) ); + gui_list_update( list_levels, client_levelsets->count ); + handled = 1; + break; + case MSG_ADD_LEVELSET: + list_add( client_levelsets, strdup(msg_read_string()) ); + gui_list_update( list_levels, client_levelsets->count ); + handled = 1; + break; + case MSG_SET_CHANNEL: + /* we only need to update the name */ + gui_label_set_text( label_channel, msg_read_string() ); + handled = 1; + break; + /* challenge */ + case MSG_CHALLENGE: + /* the user may only be challenged if client state is NONE + because otherwise he is doing something that shouldn't be + interrupted */ + if ( client_state != CLIENT_NONE ) { + msg_begin_writing( msgbuf, &msglen, 128 ); + msg_write_int8( MSG_BUSY ); + msg_write_int32( msg_read_int32() ); + client_transmit( CODE_BLUE, msglen, msgbuf ); + break; + } + snprintf( mp_peer_name, 15, "%s", msg_read_string() ); + snprintf( mp_levelset, 16, "%s", msg_read_string() ); + mp_diff = msg_read_int8(); + mp_rounds = msg_read_int8(); + mp_frags = msg_read_int8(); + mp_balls = msg_read_int8(); + if ( msg_read_failed() ) break; + client_popup_confirm( _(" You have been challenged!##"\ + " Challenger: %13s#"\ + " Levelset: %13s#"\ + " Difficulty: %13s#"\ + " Rounds: %13i#"\ + " Frag Limit: %13i#"\ + " Balls: %13i"), + mp_peer_name, mp_levelset, mp_diff_names[mp_diff], + mp_rounds, mp_frags, mp_balls ); + client_state = CLIENT_ANSWER; + handled = 1; + break; + case MSG_REJECT_CHALLENGE: + handled = 1; + if ( client_state != CLIENT_AWAIT_ANSWER ) break; + client_popup_info( + _("%s is too scared to accept your challenge."), + mp_peer_name ); + break; + case MSG_CANCEL_GAME: + handled = 1; + if ( client_state != CLIENT_ANSWER ) break; + gui_widget_hide( dlg_confirm ); + client_popup_info( _("%s got cold feet."), mp_peer_name ); + break; + case MSG_ACCEPT_CHALLENGE: + handled = 1; + if ( client_state != CLIENT_AWAIT_ANSWER ) break; + gui_widget_hide( dlg_info ); + + /* play */ + gui_disable_event_filter(); + if ( client_game_init_network( mp_peer_name, mp_diff ) ) + client_game_run(); + client_game_finalize(); + gui_enable_event_filter(); + + gui_widget_draw( dlg_chatroom ); + stk_display_fade( STK_FADE_IN, STK_FADE_DEFAULT_TIME ); + break; + + /* dummy parse game packets that may arrive after the QUIT_GAME + * message was sent because ADD_USER commands may be in the + * package and these we should get. */ + case MSG_PADDLE_STATE: + comm_unpack_paddle_dummy( net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_SHOT_POSITIONS: + comm_unpack_shots_dummy( net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_BALL_POSITIONS: + comm_unpack_balls_dummy( net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_SCORES: + comm_unpack_scores_dummy( net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_BRICK_HITS: + comm_unpack_brick_hits_dummy( net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_NEW_EXTRAS: + comm_unpack_collected_extras_dummy( net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_ROUND_OVER: + i = msg_read_int8(); + handled = 1; + break; + case MSG_LAST_ROUND_OVER: + i = msg_read_int8(); + handled = 1; + break; + + } + + if ( !handled ) { + printf( _("chat: state %i: invalid message %x: skipping %i bytes\n"), + client_state, type, net_buffer_cur_size - msg_read_pos ); + msg_read_pos = net_buffer_cur_size; + } + } +} +#endif + +/* +==================================================================== +Receive packets from server. Use the TIME_PASSED event therefore. +Send a heartbeat every three seconds as well. +==================================================================== +*/ +void client_recv_packet( GuiWidget *widget, GuiEvent *event ) +{ +#ifdef NETWORK_ENABLED + int recv_limit; + static int last_heartbeat = 0; + + if ( !client_is_connected ) return; + if ( event->type != GUI_TIME_PASSED ) return; + + /* heartbeat? */ + if ( time(0) >= last_heartbeat + 10 ) { + last_heartbeat = time(0); + msgbuf[0] = MSG_HEARTBEAT; + client_transmit( CODE_BLUE, 1, msgbuf ); + } + + recv_limit = client_recv_limit; /* limited number of packets if not -1 */ + while ( net_recv_packet() && ( recv_limit==-1 || recv_limit > 0) ) { + + /* check if this is a valid packet and update the socket */ + if ( msg_is_connectionless() ) + msg_begin_connectionless_reading(); + else + if ( !socket_process_header( &client ) ) + continue; + client_parse_packet(); + + if ( recv_limit != -1 ) recv_limit--; + } +#endif +} diff --git a/project/jni/application/lbreakout2/client/comm.c b/project/jni/application/lbreakout2/client/comm.c new file mode 100644 index 000000000..1aef45b6f --- /dev/null +++ b/project/jni/application/lbreakout2/client/comm.c @@ -0,0 +1,462 @@ +/*************************************************************************** + comm.c - description + ------------------- + begin : Fri Aug 2 2002 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "../gui/gui.h" +#include "../game/game.h" +#include "game.h" +#include "client_data.h" +#include "bricks.h" +#include "extras.h" +#include "comm.h" + +extern char net_buffer[MAX_MSG_SIZE + PACKET_HEADER_SIZE]; +extern int net_buffer_cur_size; +extern int msg_read_pos; +extern char msgbuf[MAX_MSG_SIZE]; +extern int msglen; +extern NetSocket client; +extern StkFont *chat_font_error; +extern int client_is_connected; +extern int client_state; +extern Game *game, *local_game; +extern Player *cur_player; +extern Paddle *r_paddle; +#ifdef AUDIO_ENABLED +extern StkSound *wav_shot, *wav_reflect_paddle, *wav_reflect_brick, *wav_attach; +#endif +extern int game_stats[2][7]; +extern int game_over; +extern int client_comm_delay; +extern int stats_received; +extern GuiWidget *dlg_pauseroom; +extern List *client_levelsets; +extern int client_recv_limit; + +extern void set_state( int newstate ); +extern void init_next_round( void ); +extern void display_final_stats( void ); +extern void open_pause_chat( char *text ); +extern void close_pause_chat( void); + +extern int last_ball_brick_reflect_x; /* HACK: used to play local sound */ +extern int last_ball_paddle_reflect_x; /* HACK: used to play local sound */ +extern int last_ball_attach_x; /* HACK: used to play local sound */ +extern int last_shot_fire_x; /* HACK: used to play local sound */ + +/* handle modifications game::mod_* which were either copied + * from local_game or received via network, apply the changes to + * game and clear these entries. the current game entry must've + * been set to 'game'. Ball and shot updates have already been + * applied to the game context. */ +#ifdef NETWORK_ENABLED +static void handle_mods() +{ + BrickHit *brickhits; + int *extras, count; + int i, j; + +#ifdef AUDIO_ENABLED + /* play sounds for attached, reflected balls or fired shots */ + /* HACK: in a local game use externals from game/balls.c + * last_ball_*_x to play sound stereo. this cannot be used for + * network games */ + if ( local_game == 0 ) + { + if ( game_get_fired_shot_count() ) + stk_sound_play( wav_shot ); + if ( game_get_brick_reflected_ball_count() ) + stk_sound_play( wav_reflect_brick ); + if ( game_get_paddle_reflected_ball_count() ) + stk_sound_play( wav_reflect_paddle ); + if ( game_get_attached_ball_count() ) + stk_sound_play( wav_attach ); + } + else + { + if ( last_ball_brick_reflect_x != -1 ) + stk_sound_play_x( last_ball_brick_reflect_x, wav_reflect_brick ); + if ( last_ball_paddle_reflect_x != -1 ) + stk_sound_play_x( last_ball_paddle_reflect_x, wav_reflect_paddle ); + if ( last_ball_attach_x != -1 ) + stk_sound_play_x( last_ball_attach_x, wav_attach ); + if ( last_shot_fire_x != -1 ) + stk_sound_play_x( last_shot_fire_x, wav_shot ); + last_ball_brick_reflect_x = -1; + last_ball_paddle_reflect_x = -1; + last_ball_attach_x = -1; + last_shot_fire_x = -1; + } +#endif + /* handle brick hits and create new extras. the extras + * are moved independently by the client and destroyed on + * collection but DO NOT TAKE EFFECT */ + brickhits = game_get_brick_hits( &count ); + for ( i = 0; i < count; i++ ) + client_handle_brick_hit( &brickhits[i] ); + + /* these collected extras take effect */ + for ( i = 0; i < game->paddle_count; i++ ) { + extras = game_get_collected_extras( i, &count ); + for ( j = 0; j < count; j++ ) + client_handle_collected_extra( game->paddles[i], extras[j] ); + } + + game_reset_mods(); +} +#endif + +#ifdef NETWORK_ENABLED +/* copy stuff from local_game to game */ +static void comm_recv_local( void ) +{ + Ball *ball, *ballcopy; + Shot *shot, *shotcopy; + + /* copy balls */ + list_clear( game->balls ); + list_reset( local_game->balls ); + while ( (ball = list_next(local_game->balls)) ) { + ballcopy = salloc( 1, sizeof(Ball) ); + ballcopy->x = ball->x; + ballcopy->y = ball->y; + ballcopy->attached = ball->attached; + if ( ball->attached ) { + if ( ball->paddle == local_game->paddles[0] ) + ballcopy->paddle = game->paddles[0]; + else + ballcopy->paddle = game->paddles[1]; + } + list_add( game->balls, ballcopy ); + } + + /* copy shots */ + list_clear( game->shots ); + list_reset( local_game->shots ); + while ( (shot = list_next(local_game->shots)) ) { + shotcopy = salloc( 1, sizeof(Shot) ); + shotcopy->x = shot->x; + shotcopy->y = shot->y; + list_add( game->shots, shotcopy ); + } + + /* copy score */ + game->paddles[0]->score = local_game->paddles[0]->score; + + /* copy level_over */ + game->level_over = local_game->level_over; + game->winner = local_game->winner; + + /* modifications are transferred to game::mod + * and handled by the same function that does this + * for net updates below. while handle_mods() + * resets the mods in the game struct, the + * local_game mods must be cleared as well */ + game->mod = local_game->mod; + handle_mods(); + local_game->mod = game->mod; + + /* copy new level when altered in bonus level */ + if (local_game->blRefreshBricks) + { + local_game->blRefreshBricks = 0; + /* HACK HACK HACK HACK.... did I mention this is a hack? And a really + bad one indeed. */ + memcpy(game->bricks,local_game->bricks,sizeof(game->bricks)); + client_redraw_all_bricks(); + } + + return; +} + +/* parse incoming packets and handle them according to the client's + * state */ +static void comm_parse_packet() +{ + BrickHit *brickhits; + unsigned char type; + int *extras, count; + int i, j; + char name[16]; + int handled; + + /* the list of shots is reset before as shot_positions + * will not be send when no shots are available */ + list_clear( game->shots ); + + while ( 1 ) { + type = (unsigned)msg_read_int8(); handled = 0; + + if ( msg_read_failed() ) break; /* no more messages */ + + msglen = 0; /* game unpack functions require a position pointer which + is always 0 at the moment */ + + switch ( type ) { + case MSG_SET_COMM_DELAY: + client_comm_delay = msg_read_int16(); + printf( _("comm_delay set to %i\n"), client_comm_delay ); + handled = 1; + break; + case MSG_DISCONNECT: + /* close the pause chatroom window if open */ + if ( client_state == CS_PAUSE ) + close_pause_chat(); + + set_state( CS_FATAL_ERROR ); + display_text( chat_font_error, _("You've been disconnected.") ); + client_data_clear(); + client_is_connected = 0; + handled = 1; + break; + case MSG_ERROR: + /* close the pause chatroom window if open */ + if ( client_state == CS_PAUSE ) + close_pause_chat(); + /* break up game but wait for the stats */ + set_state( CS_FATAL_ERROR ); + display_text( chat_font_error, msg_read_string() ); + handled = 1; + break; + case MSG_LEVEL_DATA: + cur_player->next_paddle_id = msg_read_int8(); /* top or bottom? */ + msg_read( 536, msgbuf ); + if ( !msg_read_failed() ) { + comm_unpack_level( &cur_player->snapshot, msgbuf, &msglen ); + cur_player->next_level_received = 1; + handled = 1; + } + else { + set_state( CS_FATAL_ERROR ); + display_text( chat_font_error, _("corrupted level data") ); + } + break; + case MSG_ADD_USER: + i = msg_read_int32(); + snprintf( name, 16, "%s", msg_read_string() ); name[15] = 0; + if ( msg_read_failed() ) break; + client_add_user( i, name ); + handled = 1; + break; + case MSG_REMOVE_USER: + i = msg_read_int32(); + if ( msg_read_failed() ) break; + client_remove_user( i ); + handled = 1; + break; + case MSG_ADD_LEVELSET: + list_add( client_levelsets, strdup(msg_read_string()) ); + handled = 1; + break; + case MSG_PAUSE: + open_pause_chat( _("Remote player has paused the game.") ); + handled = 1; + break; + case MSG_UNPAUSE: + close_pause_chat(); + handled = 1; + break; + case MSG_CHATTER: + client_add_pausechatter( msg_read_string(), 0 ); + handled = 1; + break; + } + + /* game_only packets but received any time */ + //if ( client_state == CS_PLAY ) + switch ( type ) { + case MSG_PADDLE_STATE: + comm_unpack_paddle( r_paddle, net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_SHOT_POSITIONS: + comm_unpack_shots( net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_BALL_POSITIONS: + comm_unpack_balls( net_buffer, &msg_read_pos ); + +#ifdef AUDIO_ENABLED + /* play sounds for attached, reflected balls or fired shots */ + if ( game_get_fired_shot_count() ) + stk_sound_play( wav_shot ); + if ( game_get_brick_reflected_ball_count() ) + stk_sound_play( wav_reflect_brick ); + if ( game_get_paddle_reflected_ball_count() ) + stk_sound_play( wav_reflect_paddle ); + if ( game_get_attached_ball_count() ) + stk_sound_play( wav_attach ); + game->mod.fired_shot_count = 0; + game->mod.attached_ball_count = 0; + game->mod.brick_reflected_ball_count = 0; + game->mod.paddle_reflected_ball_count = 0; +#endif + handled = 1; + break; + case MSG_SCORES: + comm_unpack_scores( net_buffer, &msg_read_pos ); + handled = 1; + break; + case MSG_BRICK_HITS: + comm_unpack_brick_hits( net_buffer, &msg_read_pos ); + + /* handle brick hits and create new extras. the extras + * are moved independently by the client and destroyed on + * collection but DO NOT TAKE EFFECT */ + brickhits = game_get_brick_hits( &count ); + for ( i = 0; i < count; i++ ) + client_handle_brick_hit( &brickhits[i] ); + game->mod.brick_hit_count = 0; + handled = 1; + break; + case MSG_NEW_EXTRAS: + comm_unpack_collected_extras( net_buffer, &msg_read_pos ); + + /* these collected extras take effect */ + for ( i = 0; i < game->paddle_count; i++ ) { + extras = game_get_collected_extras( i, &count ); + for ( j = 0; j < count; j++ ) + client_handle_collected_extra( + game->paddles[i], extras[j] ); + } + game->mod.collected_extra_count[0] = 0; + game->mod.collected_extra_count[1] = 0; + handled = 1; + break; + case MSG_ROUND_OVER: + game->level_over = 1; + game->winner = msg_read_int8(); + handled = 1; + break; + case MSG_LAST_ROUND_OVER: + game->level_over = 1; + game->winner = msg_read_int8(); + game_over = 1; + handled = 1; + break; + } + + /* stats may arrive anywhere */ + switch ( type ) { + case MSG_GAME_STATS: + memset( game_stats, 0, sizeof( game_stats ) ); + game_stats[0][0] = msg_read_int8(); + game_stats[1][0] = msg_read_int8(); + game_stats[0][1] = msg_read_int8(); + game_stats[1][1] = msg_read_int8(); + game_stats[0][2] = msg_read_int8(); + game_stats[1][2] = msg_read_int8(); + game_stats[0][3] = msg_read_int32(); + game_stats[1][3] = msg_read_int32(); + game_stats[0][4] = msg_read_int8(); + game_stats[1][4] = msg_read_int8(); + game_stats[0][5] = msg_read_int8(); + game_stats[1][5] = msg_read_int8(); + game_stats[0][6] = msg_read_int8(); + game_stats[1][6] = msg_read_int8(); + stats_received = 1; + handled = 1; + break; + } + + if ( !handled ) { + printf( _("game: state %i: invalid message %x: skipping %i bytes\n"), + client_state, type, net_buffer_cur_size - msg_read_pos ); + msg_read_pos = net_buffer_cur_size; + } + } +} +#endif + +/* send state of local paddle */ +void comm_send_paddle( Paddle *paddle ) +{ + if ( game->game_type == GT_LOCAL ) { + /* simply copy the data */ + if ( local_game->paddles[PADDLE_BOTTOM]->x != paddle->x ) + local_game->paddles[PADDLE_BOTTOM]->invis_delay = PADDLE_INVIS_DELAY; + local_game->paddles[PADDLE_BOTTOM]->x = paddle->x; + local_game->paddles[PADDLE_BOTTOM]->fire_left = paddle->fire_left; + local_game->paddles[PADDLE_BOTTOM]->fire_right = paddle->fire_right; + local_game->paddles[PADDLE_BOTTOM]->ball_return_key_pressed = + paddle->ball_return_key_pressed; + local_game->paddles[PADDLE_BOTTOM]->maxballspeed_request = + paddle->maxballspeed_request; + local_game->paddles[PADDLE_BOTTOM]->maxballspeed_request_old = + paddle->maxballspeed_request_old; + return; + } + + msgbuf[0] = MSG_PADDLE_STATE; msglen = 1; + comm_pack_paddle( paddle, msgbuf, &msglen ); + client_transmit( CODE_BLUE, msglen, msgbuf ); +} + +void comm_send_short( int msg ) +{ + if ( game->game_type == GT_LOCAL ) return; + + /* send these messages as code blue. if they are dropped + * the player and server will notice as nothing happens */ + msgbuf[0] = msg; + client_transmit( CODE_BLUE, 1, msgbuf ); +} + +/* receive any data but only handle such messages valid + * in the current state. */ +void comm_recv( void ) +{ +#ifdef NETWORK_ENABLED + int recv_limit; + + /* fake communication in local game */ + if ( game->game_type == GT_LOCAL ) { + comm_recv_local(); + return; + } + + if ( !client_is_connected ) return; + + recv_limit = client_recv_limit; /* limited number of packets if not -1 */ + while ( net_recv_packet() && ( recv_limit==-1 || recv_limit > 0) ) { + /* check if this is a valid packet and update the socket */ + if ( msg_is_connectionless() ) + msg_begin_connectionless_reading(); + else + if ( !socket_process_header( &client ) ) + continue; + comm_parse_packet(); + + if ( recv_limit != -1 ) recv_limit--; + } +#endif +} + +/* send a heartbeat every 2 seconds except in the actual game as we + * send paddle updates there */ +void comm_send_heartbeat( void ) +{ + static int last_heartbeat = 0; + + if ( client_state != CS_PLAY ) + if ( time(0) >= last_heartbeat + 3 ) { + last_heartbeat = time(0); + msgbuf[0] = MSG_HEARTBEAT; + client_transmit( CODE_BLUE, 1, msgbuf ); + } + +} diff --git a/project/jni/application/lbreakout2/client/comm.h b/project/jni/application/lbreakout2/client/comm.h new file mode 100644 index 000000000..123f4ed39 --- /dev/null +++ b/project/jni/application/lbreakout2/client/comm.h @@ -0,0 +1,32 @@ +/*************************************************************************** + comm.h - description + ------------------- + begin : Fri Aug 2 2002 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef __COMM_CLIENT_H +#define __COMM_CLIENT_H + +void comm_send_paddle( Paddle *paddle ); +void comm_send_short( int msg ); /* single byte messages */ + +/* receive any data but only handle such messages valid + * in the current state */ +void comm_recv( void ); + +/* send a heartbeat every 2 seconds except in the actual game as we + * send paddle updates there */ +void comm_send_heartbeat( void ); + +#endif diff --git a/project/jni/application/lbreakout2/client/config.c b/project/jni/application/lbreakout2/client/config.c new file mode 100644 index 000000000..fe4520815 --- /dev/null +++ b/project/jni/application/lbreakout2/client/config.c @@ -0,0 +1,273 @@ +/*************************************************************************** + config.c - description + ------------------- + begin : Tue Feb 13 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" + +#include +#include +#include + +#include "config.h" +#include "../common/parser.h" + +#ifdef _WIN32 + #define MKDIR(d, p) mkdir(d) +#else + #define MKDIR mkdir +#endif + +Config config; + +#define CONFIG_FILE_NAME "lbreakout2.conf" + +/* check if config directory exists; if not create it and set config_dir */ +void config_check_dir() +{ + char level_dir[512]; + snprintf( config.dir_name, sizeof(config.dir_name)-1, "%s/%s", (getenv( "HOME" )?getenv( "HOME" ):"."), CONFIG_DIR_NAME ); + /* test and create .lgames */ + if ( opendir( config.dir_name ) == 0 ) { + fprintf( stderr, "couldn't find/open config directory '%s'\n", config.dir_name ); + fprintf( stderr, "attempting to create it... " ); + MKDIR( config.dir_name, S_IRWXU ); + if ( opendir( config.dir_name ) == 0 ) + fprintf( stderr, "failed\n" ); + else + fprintf( stderr, "ok\n" ); + } + /* create levels directory */ + sprintf( level_dir, "%s/lbreakout2-levels", config.dir_name ); + MKDIR( level_dir, S_IRWXU ); + /* create themes directory */ + sprintf( level_dir, "%s/lbreakout2-themes", config.dir_name ); + MKDIR( level_dir, S_IRWXU ); +} + +/* set config to default */ +void config_reset() +{ + /* levels */ + config.levelset_id_local = 0; + config.levelset_count_local = 0; + config.levelset_id_home = 0; + config.levelset_count_home = 0; + /* player */ + config.player_count = 1; + strcpy( config.player_names[0], "Michael" ); + strcpy( config.player_names[1], _("Mr.X") ); + strcpy( config.player_names[2], _("Mr.Y") ); + strcpy( config.player_names[3], _("Mr.Z") ); + /* game */ + config.diff = 2; + config.startlevel = 0; + config.rel_warp_limit = 80; + config.addBonusLevels = 1; + /* controls */ + config.k_left = SDLK_LEFT; + config.k_right = SDLK_RIGHT; + config.k_rfire = SDLK_SPACE; + config.k_lfire = SDLK_y; + config.k_return = SDLK_BACKSPACE; + config.k_turbo = SDLK_x; + config.k_warp = SDLK_w; + config.k_maxballspeed = SDLK_c; + config.grab = 1; + config.rel_motion = 1; + config.i_motion_mod = 120; + config.motion_mod = 1.2; + config.convex = 1; + config.linear_corner = 0; + config.invert = 0; + config.i_key_speed = 500; + config.key_speed = 0.5; + config.random_angle = 1; + config.maxballspeed_int1000 = 900; + config.maxballspeed_float = 0.7; + /* sounds */ + config.sound = 1; + config.volume = 8; + config.speech = 1; + config.badspeech = 0; + config.audio_buffer_size = 512; + /* graphics */ + config.anim = 2; + config.fullscreen = 0; + config.fade = 1; + config.bonus_info = 1; + config.fps = 0; + config.ball_level = BALL_BELOW_BONUS; + config.debris_level = DEBRIS_ABOVE_BALL; + /* various */ + config.use_hints = 1; + config.return_on_click = 0; + config.theme_id = 0; + config.theme_count = 4; + /* multiplayer */ + strcpy( config.server, "217.160.141.22:8000" ); + strcpy( config.local_port, "8001" ); + strcpy( config.username, _("player") ); + config.mp_diff = 1; + config.mp_rounds = 1; + config.mp_balls = 3; + config.mp_frags = 10; + config.recv_limit = 500; +} + +/* load config */ +void config_load( ) +{ + char *str; + char file_name[512]; + PData *pd; + /* set to defaults */ + config_check_dir(); + config_reset(); + /* load config */ + sprintf( file_name, "%s/%s", config.dir_name, CONFIG_FILE_NAME ); + if ( ( pd = parser_read_file( "config", file_name ) ) == 0 ) { + fprintf( stderr, "%s\n", parser_get_error() ); + return; + } + /* assign */ + parser_get_int( pd, "set_id_local", &config.levelset_id_local ); + parser_get_int( pd, "set_count_local", &config.levelset_count_local ); + parser_get_int( pd, "set_id_home", &config.levelset_id_home ); + parser_get_int( pd, "set_count_home", &config.levelset_count_home ); + parser_get_int( pd, "player_count", &config.player_count ); + if ( parser_get_value( pd, "player0", &str, 0 ) ) + strcpy_lt( config.player_names[0], str, 31 ); + if ( parser_get_value( pd, "player1", &str, 0 ) ) + strcpy_lt( config.player_names[1], str, 31 ); + if ( parser_get_value( pd, "player2", &str, 0 ) ) + strcpy_lt( config.player_names[2], str, 31 ); + if ( parser_get_value( pd, "player3", &str, 0 ) ) + strcpy_lt( config.player_names[3], str, 31 ); + parser_get_int( pd, "diff", &config.diff ); + parser_get_int( pd, "starting_level", &config.startlevel ); + parser_get_int( pd, "rel_warp_limit", &config.rel_warp_limit ); + parser_get_int( pd, "add_bonus_levels", &config.addBonusLevels ); + parser_get_int( pd, "left", &config.k_left ); + parser_get_int( pd, "right", &config.k_right ); + parser_get_int( pd, "fire_left", &config.k_lfire ); + parser_get_int( pd, "fire_right", &config.k_rfire ); + parser_get_int( pd, "return", &config.k_return ); + parser_get_int( pd, "turbo", &config.k_turbo ); + parser_get_int( pd, "rel_motion", &config.rel_motion ); + parser_get_int( pd, "grab", &config.grab ); + parser_get_int( pd, "motion_mod", &config.i_motion_mod ); + config.motion_mod = 0.01 * config.i_motion_mod; + parser_get_int( pd, "convex", &config.convex ); + parser_get_int( pd, "linear_corner", &config.linear_corner ); + parser_get_int( pd, "random_angle", &config.random_angle ); + parser_get_int( pd, "maxballspeed", &config.maxballspeed_int1000 ); + config.maxballspeed_float = (float)config.maxballspeed_int1000 / 1000; + parser_get_int( pd, "invert", &config.invert ); + parser_get_int( pd, "sound", &config.sound ); + parser_get_int( pd, "volume", &config.volume ); + parser_get_int( pd, "speech", &config.speech ); + parser_get_int( pd, "badspeech", &config.badspeech ); + parser_get_int( pd, "audio_buffer_size", &config.audio_buffer_size ); + parser_get_int( pd, "anim", &config.anim ); + parser_get_int( pd, "fullscreen", &config.fullscreen ); + parser_get_int( pd, "fade", &config.fade ); + parser_get_int( pd, "bonus_info", &config.bonus_info ); + parser_get_int( pd, "fps", &config.fps ); + parser_get_int( pd, "ball_level", &config.ball_level ); + parser_get_int( pd, "debris_level", &config.debris_level ); + parser_get_int( pd, "i_key_speed", &config.i_key_speed ); + config.key_speed = 0.001 * config.i_key_speed; + parser_get_int( pd, "use_hints", &config.use_hints ); + parser_get_int( pd, "return_on_click", &config.return_on_click ); + parser_get_int( pd, "theme_id", &config.theme_id ); + parser_get_int( pd, "theme_count", &config.theme_count ); + if ( parser_get_value( pd, "server", &str, 0 ) ) + strcpy_lt( config.server, str, 64 ); + if ( parser_get_value( pd, "local_port", &str, 0 ) ) + strcpy_lt( config.local_port, str, 6 ); + if ( parser_get_value( pd, "username", &str, 0 ) ) + strcpy_lt( config.username, str, 15 ); + parser_get_int( pd, "mp_diff", &config.mp_diff ); + parser_get_int( pd, "mp_rounds", &config.mp_rounds ); + parser_get_int( pd, "mp_frags", &config.mp_frags ); + parser_get_int( pd, "mp_balls", &config.mp_balls ); + parser_free( &pd ); +} + +/* save config */ +void config_save( ) +{ + FILE *file = 0; + char file_name[512]; + + sprintf( file_name, "%s/%s", config.dir_name, CONFIG_FILE_NAME ); + if ( ( file = fopen( file_name, "w" ) ) == 0 ) + fprintf( stderr, "Cannot access config file '%s' to save settings\n", file_name ); + else { + fprintf( file, "@\n" ); + fprintf( file, "set_id_local»%i\n", config.levelset_id_local ); + fprintf( file, "set_count_local»%i\n", config.levelset_count_local ); + fprintf( file, "set_id_home»%i\n", config.levelset_id_home ); + fprintf( file, "set_count_home»%i\n", config.levelset_count_home ); + fprintf( file, "player_count»%i\n", config.player_count ); + fprintf( file, "player0»%s\n", config.player_names[0] ); + fprintf( file, "player1»%s\n", config.player_names[1] ); + fprintf( file, "player2»%s\n", config.player_names[2] ); + fprintf( file, "player3»%s\n", config.player_names[3] ); + fprintf( file, "diff»%i\n", config.diff ); + fprintf( file, "starting_level»%i\n", config.startlevel ); + fprintf( file, "rel_warp_limit»%i\n", config.rel_warp_limit ); + fprintf( file, "add_bonus_levels»%i\n", config.addBonusLevels ); + fprintf( file, "left»%i\n", config.k_left ); + fprintf( file, "right»%i\n", config.k_right ); + fprintf( file, "fire_left»%i\n", config.k_lfire ); + fprintf( file, "fire_right»%i\n", config.k_rfire ); + fprintf( file, "return»%i\n", config.k_return ); + fprintf( file, "turbo»%i\n", config.k_turbo ); + fprintf( file, "rel_motion»%i\n", config.rel_motion ); + fprintf( file, "grab»%i\n", config.grab ); + fprintf( file, "motion_mod»%i\n", config.i_motion_mod); + fprintf( file, "convex»%i\n", config.convex ); + fprintf( file, "linear_corner»%i\n", config.linear_corner ); + fprintf( file, "random_angle»%i\n", config.random_angle ); + fprintf( file, "maxballspeed»%i\n", config.maxballspeed_int1000 ); + fprintf( file, "invert»%i\n", config.invert ); + fprintf( file, "sound»%i\n", config.sound ); + fprintf( file, "volume»%i\n", config.volume ); + fprintf( file, "speech»%i\n", config.speech ); + fprintf( file, "badspeech»%i\n", config.badspeech ); + fprintf( file, "audio_buffer_size»%i\n", config.audio_buffer_size ); + fprintf( file, "anim»%i\n", config.anim ); + fprintf( file, "fullscreen»%i\n", config.fullscreen ); + fprintf( file, "fade»%i\n", config.fade ); + fprintf( file, "bonus_info»%i\n", config.bonus_info ); + fprintf( file, "fps»%i\n", config.fps ); + fprintf( file, "ball_level»%i\n", config.ball_level ); + fprintf( file, "debris_level»%i\n", config.debris_level ); + fprintf( file, "i_key_speed»%i\n", config.i_key_speed ); + fprintf( file, "use_hints»%i\n", config.use_hints ); + fprintf( file, "return_on_click»%i\n", config.return_on_click ); + fprintf( file, "theme_id»%i\n", config.theme_id ); + fprintf( file, "theme_count»%i\n", config.theme_count ); + fprintf( file, "server»%s\n", config.server ); + fprintf( file, "local_port»%s\n", config.local_port ); + fprintf( file, "username»%s\n", config.username ); + fprintf( file, "mp_diff»%i\n", config.mp_diff ); + fprintf( file, "mp_rounds»%i\n", config.mp_rounds ); + fprintf( file, "mp_frags»%i\n", config.mp_frags ); + fprintf( file, "mp_balls»%i\n", config.mp_balls ); + } +} diff --git a/project/jni/application/lbreakout2/client/config.h b/project/jni/application/lbreakout2/client/config.h new file mode 100644 index 000000000..306e7c54b --- /dev/null +++ b/project/jni/application/lbreakout2/client/config.h @@ -0,0 +1,103 @@ +/*************************************************************************** + config.h - description + ------------------- + begin : Tue Feb 13 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* configure struct */ +enum { BALL_BELOW_BONUS = 0, BALL_ABOVE_BONUS }; +enum { DEBRIS_BELOW_BALL = 0, DEBRIS_ABOVE_BALL }; +typedef struct { + /* directory to save config and saved games */ + char dir_name[512]; + /* levels */ + int levelset_id_local; + int levelset_count_local; /* save number of local game levelsets + for safety (to reset id if count changed) */ + int levelset_id_home; + int levelset_count_home; /* save number of levelsets for safety + (to reset id if count changed) */ + /* players */ + int player_count; + char player_names[4][32]; + /* game */ + int diff; /* diffculty */ + int startlevel; + int rel_warp_limit; /* percentage of bricks required to be destroyed + before player may proceed to next level */ + int addBonusLevels; /* add some bonus levels */ + /* controls */ + int k_left; + int k_right; + int k_lfire; + int k_rfire; + int k_return; /* return ball on click on this key */ + int k_turbo; /* double paddle speed while this key is pressed */ + int k_warp; /* warp to next level */ + int k_maxballspeed; /* go to maximum ball speed (while pressed) */ + int rel_motion; /* use relative mouse motion; motion_mod and invert need this enabled */ + int grab; /* keep mouse in window */ + int i_motion_mod; /* motion_mod * 100 used to modify in the menu */ + double motion_mod; /* multiplied with relative motion */ + int convex; + int invert; + double key_speed; /* move with key_speed pix per sec when keys are used */ + int linear_corner; /* assume a 45° line for corner? */ + int random_angle; + int maxballspeed_int1000; /* max ball speed in pixels/second */ + float maxballspeed_float; /* per millisecond */ + /* sound */ + int sound; + int volume; /* 1 - 8 */ + int speech; /* enable speech? */ + int badspeech; /* if speech allowed, allow swearing? */ + int audio_buffer_size; + /* graphics */ + int anim; + int fullscreen; + int fade; + int bonus_info; + int fps; /* frames per second: 0 - no limit, 1 - 50, 2 - 100, 3 - 200 */ + int ball_level; + int debris_level; + int i_key_speed; /* integer value that is devided by 100 to get real key_speed */ + /* various */ + int use_hints; + int return_on_click; /* autoreturn on click if true else automatically */ + int theme_id; /* 0 == default theme */ + int theme_count; /* to check and properly reset id if number of themes changed */ + /* multiplayer */ + char server[64]; /* ip:port */ + char local_port[8]; /* where to bind local UDP socket */ + char username[16]; /* username at server */ + int mp_diff; /* difficulty */ + int mp_rounds; /* rounds per level in a levelset */ + int mp_frags; /* points a player needs to win a round */ + int mp_balls; /* maximum number of balls a player may fire */ + int recv_limit; /* number of packets parsed in one go */ +} Config; + +/* set config to default */ +void config_reset(); + +/* load config */ +void config_load( ); + +/* save config */ +void config_save( ); + +#endif diff --git a/project/jni/application/lbreakout2/client/credit.c b/project/jni/application/lbreakout2/client/credit.c new file mode 100644 index 000000000..b158d24bd --- /dev/null +++ b/project/jni/application/lbreakout2/client/credit.c @@ -0,0 +1,124 @@ +/*************************************************************************** + credit.c - description + ------------------- + begin : Thu Sep 13 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "credit.h" + +extern SDL_Surface *stk_display; +extern StkFont *font; +extern SDL_Surface *offscreen; + +SDL_Surface *credit_bkgnd = 0; +float credit_alpha; +float credit_pms = 0.5; +int credit_cur; +int credit_time = 2000; +int credit_x, credit_y, credit_w, credit_h; +char credit_str[64]; +int credit_status; + +/* +==================================================================== +Initiate credit. +==================================================================== +*/ +void credit_init( char *name, char *author, int level, int level_count ) +{ + credit_cur = 0; credit_alpha = 0; credit_status = 0; + + /* string */ + if ( level_count > 0 ) + sprintf( credit_str, "%s (%i/%i) - %s", name, + level + 1, level_count, author ); + else + sprintf( credit_str, "%s (%i) - %s", name, level + 1, author ); + + /* position */ + credit_w = stk_font_string_width( font, credit_str ) + 4; + credit_h = font->height + 4; + credit_x = (stk_display->w - credit_w) / 2; + credit_y = (stk_display->h - credit_h) / 2; + + /* background */ + if ( credit_bkgnd ) SDL_FreeSurface( credit_bkgnd ); + credit_bkgnd = stk_surface_create( SDL_SWSURFACE, credit_w, credit_h ); + SDL_SetColorKey( credit_bkgnd, 0, 0 ); + stk_surface_fill( credit_bkgnd, 0,0,-1,-1, 0x0 ); +} +void credit_clear() +{ + stk_surface_free( &credit_bkgnd ); +} +/* +==================================================================== +Show/Hide credits +==================================================================== +*/ +void credit_hide() +{ + if (credit_status == 3) return; + stk_surface_blit( offscreen, + credit_x, credit_y, credit_w, credit_h, + stk_display, credit_x, credit_y ); + stk_display_store_drect(); +} +void credit_show( ) +{ + if (credit_status == 3) return; + if ( credit_bkgnd ) + stk_surface_alpha_blit( credit_bkgnd, 0, 0, + credit_w, credit_h, stk_display, + credit_x, credit_y, credit_alpha / 2 ); + font->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + stk_font_write(font, stk_display, credit_x + 2, credit_y + 2, + (int)credit_alpha, credit_str ); + font->align = STK_FONT_ALIGN_CENTER_X | STK_FONT_ALIGN_CENTER_Y; +} +void credit_alphashow( int alpha ) +{ + if (credit_status == 3) return; + font->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + stk_font_write(font, stk_display, credit_x + 2, credit_y + 2, + (int)alpha, credit_str ); + font->align = STK_FONT_ALIGN_CENTER_X | STK_FONT_ALIGN_CENTER_Y; +} +void credit_update( int ms ) +{ + /* appearing */ + if (credit_status == 0) { + credit_alpha += credit_pms * ms; + if (credit_alpha >= 255 ) { + credit_status = 1; + credit_alpha = 255; + } + } + else + /* visible */ + if (credit_status == 1) { + credit_cur += ms; + if (credit_cur > credit_time) + credit_status = 2; + } + else + /* disappearing */ + if (credit_status == 2) { + credit_alpha -= credit_pms * ms; + if (credit_alpha <= 0) + credit_status = 3; + } + /* credit_status == 3 means credit disappeared */ +} diff --git a/project/jni/application/lbreakout2/client/credit.h b/project/jni/application/lbreakout2/client/credit.h new file mode 100644 index 000000000..55d049a09 --- /dev/null +++ b/project/jni/application/lbreakout2/client/credit.h @@ -0,0 +1,33 @@ +/*************************************************************************** + credit.h - description + ------------------- + begin : Thu Sep 13 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* +==================================================================== +Initiate credit. +==================================================================== +*/ +void credit_init( char *name, char *author, int level, int level_count ); +void credit_clear(); +/* +==================================================================== +Show/Hide credits +==================================================================== +*/ +void credit_hide(); +void credit_show(); +void credit_alphashow( int alpha ); +void credit_update( int ms ); diff --git a/project/jni/application/lbreakout2/client/display.c b/project/jni/application/lbreakout2/client/display.c new file mode 100644 index 000000000..261877d16 --- /dev/null +++ b/project/jni/application/lbreakout2/client/display.c @@ -0,0 +1,194 @@ +/*************************************************************************** + display.c - description + ------------------- + begin : Thu Sep 6 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "display.h" + +extern SDL_Surface *offscreen; +extern SDL_Surface *stk_display; +extern StkFont *display_font; +extern StkFont *display_highlight_font; + +List *displays = 0; + +/* +==================================================================== +Locals +==================================================================== +*/ + +/* +==================================================================== +Delete a display +==================================================================== +*/ +void display_delete( void *ptr ) +{ + Display *display = ptr; + if ( display ) { + stk_surface_free( &display->surf ); + free( display ); + } +} + +/* +==================================================================== +Publics +==================================================================== +*/ + +/* +==================================================================== +Add a display. The display is cleared by displays_clear() so +the returned display is just a pointer. +The contents of the display is 'text'+'value'. Both may be changed +with the display_set_text/value() functions. +'digits' is the maxium size of 'value' +==================================================================== +*/ +Display* displays_add( int x, int y, int w, int h, char *text, int value, int digits ) +{ + Display *display = 0; + if ( displays == 0 ) + displays = list_create( LIST_AUTO_DELETE, display_delete ); + display = calloc( 1, sizeof( Display ) ); + if ( display == 0 ) return 0; + if ( ( display->surf = stk_surface_create( SDL_SWSURFACE,w,h ) ) == 0 ) { + free( display ); + return 0; + } + SDL_SetColorKey( display->surf, 0, 0 ); + display->use_alpha = 1; + display->x = x; + display->y = y; + display->w = w; + display->h = h; + display->digits = digits; + strcpy( display->text, text ); + display->value = value; + display->cur_value = value; + list_add( displays, display ); + return display; +} +/* +==================================================================== +Remove all displays +==================================================================== +*/ +void displays_clear() +{ + if ( displays ) { + list_delete( displays ); + displays = 0; + } +} + +/* +==================================================================== +Draw displays +==================================================================== +*/ +void displays_hide() +{ + Display *display; + if ( displays == 0 ) return; + list_reset( displays ); + while ( ( display = list_next( displays ) ) ) { + stk_surface_blit(offscreen, display->x, display->y, + display->w, display->h, + stk_display, display->x, display->y ); + stk_display_store_drect(); + } +} +void displays_show() +{ + int i; + char str[64], numstr[10]; + StkFont *font; + Display *display; + if ( displays == 0 ) return; + list_reset( displays ); + display_font->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + display_highlight_font->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + while ( ( display = list_next( displays ) ) ) { + if (display->is_highlighted) + font = display_highlight_font; + else + font = display_font; + strcpy( str, display->text ); + if ( display->digits > 0 ) { + sprintf( numstr, "%i", (int)display->cur_value ); + for ( i = 0; i < display->digits - strlen( numstr ); i++ ) + strcat( str, " " ); + strcat( str, numstr ); + } + if ( display->use_alpha ) { + stk_surface_alpha_blit( display->surf, 0,0, + display->w, display->h, + stk_display, display->x, display->y, 128 ); + } + stk_font_write( font, stk_display, + display->x + 2, display->y + 1, -1, str ); + } +} + +/* +==================================================================== +Update displays +==================================================================== +*/ +void displays_update( int ms ) +{ + float change; + Display *display; + if ( displays == 0 ) return; + list_reset( displays ); + while ( ( display = list_next( displays ) ) ) { + if ( (int)display->cur_value == display->value ) continue; + /* change relative as for big display->cur_values we must count faster */ + change = ( display->value - display->cur_value ) / 200; + if ( change > 0 && change < 0.6 ) change = 0.6; + if ( change < 0 && change > -0.6 ) change = -0.6; + display->cur_value += change * ms; + if ( change > 0 && display->cur_value > display->value ) + display->cur_value = display->value; + if ( change < 0 && display->cur_value < display->value ) + display->cur_value = display->value; + } +} +/* +==================================================================== +Modify display +==================================================================== +*/ +void display_set_text( Display *display, char *text ) +{ + strcpy( display->text, text ); +} +void display_set_value( Display *display, int value ) +{ + display->value = value; +} +void display_set_value_directly( Display *display, int value ) +{ + display->cur_value = value; /* no smooth approaching of the dest value */ + display->value = value; +} +void display_set_highlight( Display *display, int on ) +{ + display->is_highlighted = on; +} diff --git a/project/jni/application/lbreakout2/client/display.h b/project/jni/application/lbreakout2/client/display.h new file mode 100644 index 000000000..ac3cee716 --- /dev/null +++ b/project/jni/application/lbreakout2/client/display.h @@ -0,0 +1,75 @@ +/*************************************************************************** + display.h - description + ------------------- + begin : Thu Sep 6 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef __DISPLAY_H +#define __DISPLAY_H + +typedef struct { + SDL_Surface *surf; + int x, y, w, h; + char text[32]; + int digits; + int value; + float cur_value; /* smoothly approximates destination 'value' */ + int use_alpha; /* if true we darken the background a bit. this + is true by default */ + int is_highlighted; /* use highlight font */ +} Display; + +/* +==================================================================== +Add a display. The display is cleared by displays_clear() so +the returned display is just a pointer. +The contents of the display is 'text'+'value'. Both may be changed +with the display_set_text/value() functions. +'digits' is the maxium size of 'value' +==================================================================== +*/ +Display* displays_add( int x, int y, int w, int h, char *text, int value, int digits ); +/* +==================================================================== +Remove all displays +==================================================================== +*/ +void displays_clear(); + +/* +==================================================================== +Draw displays +==================================================================== +*/ +void displays_hide(); +void displays_show(); + +/* +==================================================================== +Update displays +==================================================================== +*/ +void displays_update( int ms ); + +/* +==================================================================== +Modify display +==================================================================== +*/ +void display_set_text( Display *display, char *text ); +void display_set_value( Display *display, int value ); +void display_set_value_directly( Display *display, int value ); +void display_set_highlight( Display *display, int on ); + +#endif diff --git a/project/jni/application/lbreakout2/client/editor.c b/project/jni/application/lbreakout2/client/editor.c new file mode 100644 index 000000000..8f76482e9 --- /dev/null +++ b/project/jni/application/lbreakout2/client/editor.c @@ -0,0 +1,822 @@ +/*************************************************************************** + editor.c - description + ------------------- + begin : Fri Oct 12 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "../game/game.h" +#include "game.h" +#include "config.h" +#include "bricks.h" +#include "frame.h" +#include "editor.h" + +SDL_Surface *sel_frame = 0, *buttons = 0; +SDL_Surface *editor_bkgnd = 0; /* background (black with frame) of editor */ +char edit_file_name[512]; /* full path of edited file */ +Level *edit_levels[MAX_LEVELS]; /* editor levels */ +char edit_version[16]; /* version of edited set */ +int edit_level_count; /* how many levels currently used? */ +int edit_cur_level_id; +Level *edit_cur_level; /* current level modified */ +enum { EDITOR_BRICK, EDITOR_EXTRA }; +int edit_sel_type; /* type of selected tile */ +int edit_sel_id; /* brick or extra id */ +int edit_sel_x, edit_sel_y; /* position in map of selected tile */ +int edit_tile_x = 1, edit_tile_y = 20, edit_tile_w = MAP_WIDTH - 2, edit_tile_h = 3; /* part where either bricks ro bonuses + are displayed */ +int extra_vis; /* extras currently shown? blinks. */ +int first_swap_level = -1; /* if not -1 this and the current level will be swapped + next time the button is pressed */ +enum { + /* tiles */ + BUTTON_NONE = 0, + BUTTON_FIRST_BRICK, + BUTTON_LAST_BRICK = BUTTON_FIRST_BRICK + ( BRICK_COUNT ), + BUTTON_FIRST_EXTRA, + BUTTON_LAST_EXTRA = BUTTON_FIRST_EXTRA + ( EX_NUMBER -1 ), + BUTTON_EDIT, + BUTTON_EDIT_AUTHOR, + BUTTON_EDIT_NAME, + /* buttons */ + BUTTON_FIRST, + BUTTON_NEXT, + BUTTON_PREV, + BUTTON_CLEAR, + BUTTON_SWAP, + BUTTON_ADD, + BUTTON_INSERT, + BUTTON_DELETE, + BUTTON_VERSION, + BUTTON_LOAD, + BUTTON_SAVE, + BUTTON_PLAY +}; +int edit_buttons[MAP_WIDTH][MAP_HEIGHT]; /* an action is assigned to each map tile */ +/* externals */ +extern SDL_Surface *stk_display; +extern SDL_Surface *frame; +extern SDL_Surface *extra_pic; +extern SDL_Surface *brick_pic; +extern StkFont *mfont; /* use menu's font to draw status */ +extern StkFont *font; /* use game's font to confirm */ +extern Config config; +extern int stk_quit_request; + +/* extra conversion table may be found in bricks.c */ +extern Extra_Conv extra_conv_table[EX_NUMBER]; +extern Brick_Conv brick_conv_table[BRICK_COUNT]; + +/* +==================================================================== +Locals +==================================================================== +*/ + +/* +==================================================================== +We had a right click into the tile region so check and change the +bricks displayed there. We select the first new tile and set +edit_sel_id, edit_sel_x, edit_sel_y. The full update is initated +by editor_handle_click(). +==================================================================== +*/ +void editor_switch_tiles() +{ + int x_off = 2, y_off = 20, len = MAP_WIDTH - x_off * 2; /* offset in map of tiles, len is the number of tiles in one line */ + int i, j; + /* clear edit buttons */ + for ( i = edit_tile_x; i < edit_tile_x + edit_tile_w; i++ ) + for ( j = edit_tile_y; j < edit_tile_y + edit_tile_h; j++ ) + edit_buttons[i][j] = BUTTON_NONE; + /* clear this part of the editor bkjgnd */ + stk_surface_fill( editor_bkgnd, + edit_tile_x * BRICK_WIDTH, edit_tile_y * BRICK_HEIGHT, + edit_tile_w * BRICK_WIDTH, edit_tile_h * BRICK_HEIGHT, 0x0 ); + /* switch */ + if ( edit_sel_type == EDITOR_BRICK ) { + /* flag */ + edit_sel_type = EDITOR_EXTRA; + /* button map & background */ + i = 0; j = 0; + while ( i + j * len < EX_NUMBER ) { + edit_buttons[x_off + i][y_off + j] = BUTTON_FIRST_EXTRA + i + j * len; + stk_surface_blit( extra_pic, ( i + j * len ) * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + editor_bkgnd, ( i + x_off ) * BRICK_WIDTH, ( j + y_off ) * BRICK_HEIGHT ); + i++; + if ( i == len ) { + i = 0; + j++; + } + } + /* select first tile */ + edit_sel_id = 0; + edit_sel_x = x_off; + edit_sel_y = y_off; + } + else { + /* flag */ + edit_sel_type = EDITOR_BRICK; + /* button map & background */ + i = 0; j = 0; + while ( i + j * len < BRICK_COUNT ) { + edit_buttons[x_off + i][y_off + j] = BUTTON_FIRST_BRICK + i + j * len; + stk_surface_blit( brick_pic, ( i + j * len ) * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + editor_bkgnd, ( i + x_off ) * BRICK_WIDTH, ( j + y_off ) * BRICK_HEIGHT ); + i++; + if ( i == len ) { + i = 0; + j++; + } + } + /* select first tile */ + edit_sel_id = 0; + edit_sel_x = x_off; + edit_sel_y = y_off; + } +} + +/* +==================================================================== +Draw a helping grid. +==================================================================== +*/ +void editor_draw_grid() +{ + SDL_Surface *buffer; + int i, alpha; + buffer = stk_surface_create( SDL_SWSURFACE, EDIT_WIDTH * BRICK_WIDTH, 1 ); + stk_surface_fill( buffer, 0,0,-1,-1, 0xffffff ); + stk_surface_blit( buffer, 0,0,-1,-1, editor_bkgnd, BRICK_WIDTH, BRICK_HEIGHT ); + stk_surface_blit( buffer, 0,0,-1,-1, editor_bkgnd, BRICK_WIDTH, + ( EDIT_HEIGHT + 1 ) * BRICK_HEIGHT - 1 ); + for ( i = 0; i < EDIT_HEIGHT - 1; i++ ) { + if ( i == EDIT_HEIGHT / 2 - 1 ) + alpha = 192; + else + if ( i % (EDIT_HEIGHT/4) == 0 ) + alpha = 128; + else + alpha = 64; + stk_surface_alpha_blit( buffer, 0,0,-1,-1, editor_bkgnd, + BRICK_WIDTH, ( i + 1 ) * BRICK_HEIGHT + BRICK_HEIGHT - 1, + alpha ); + } + SDL_FreeSurface( buffer ); + buffer = stk_surface_create( SDL_SWSURFACE, 1, EDIT_HEIGHT * BRICK_HEIGHT ); + stk_surface_fill( buffer, 0,0,-1,-1, 0xffffff ); + stk_surface_blit( buffer, 0,0,-1,-1, editor_bkgnd, BRICK_WIDTH, BRICK_HEIGHT ); + stk_surface_blit( buffer, 0,0,-1,-1, editor_bkgnd, + ( EDIT_WIDTH + 1 ) * BRICK_WIDTH - 1, BRICK_HEIGHT ); + for ( i = 0; i < EDIT_WIDTH - 1; i++ ) { + if ( i == EDIT_WIDTH / 2 - 1 ) + alpha = 192; + else + if ( i % (EDIT_WIDTH/4) == 0 ) + alpha = 128; + else + alpha = 64; + stk_surface_alpha_blit( buffer, 0,0,-1,-1, editor_bkgnd, + ( i + 1 ) * BRICK_WIDTH + BRICK_WIDTH- 1, BRICK_HEIGHT, + alpha ); + } + SDL_FreeSurface( buffer ); +} + +/* +==================================================================== +Translate the saved character strings into extra and brick indices +for the editor. +==================================================================== +*/ +enum { INDICES_2_CHAR, CHAR_2_INDICES }; +void editor_translate_level( Level *level, int type ) +{ + int i, j, k; + if ( type == CHAR_2_INDICES ) { + for ( i = 0; i < EDIT_WIDTH; i++ ) + for ( j = 0; j < EDIT_HEIGHT; j++ ) { + /* bricks */ + for ( k = 0; k < BRICK_COUNT; k++ ) + if ( brick_conv_table[k].c == level->bricks[i][j] ) { + level->bricks[i][j] = brick_conv_table[k].id; + break; + } + if ( k == BRICK_COUNT ) level->bricks[i][j] = -1; + /* extras */ + for ( k = 0; k < EX_NUMBER; k++ ) + if ( extra_conv_table[k].c == level->extras[i][j] ) { + level->extras[i][j] = extra_conv_table[k].type; + break; + } + if ( k == EX_NUMBER ) level->extras[i][j] = EX_NONE; + } + } + else { + /* indices to characters */ + for ( i = 0; i < EDIT_WIDTH; i++ ) + for ( j = 0; j < EDIT_HEIGHT; j++ ) { + /* bricks */ + if ( level->bricks[i][j] == -1 ) + level->bricks[i][j] = '.'; + else + for ( k = 0; k < BRICK_COUNT; k++ ) + if ( level->bricks[i][j] == brick_conv_table[k].id ) { + level->bricks[i][j] = brick_conv_table[k].c; + break; + } + /* extras */ + if ( level->extras[i][j] == EX_NONE ) + level->extras[i][j] = '.'; + else + for ( k = 0; k < EX_NUMBER; k++ ) + if ( level->extras[i][j] == extra_conv_table[k].type ) { + level->extras[i][j] = extra_conv_table[k].c; + break; + } + } + } +} +/* +==================================================================== +Draw name of set file, current level, current count, remaining +levels, and other info stuff. +==================================================================== +*/ +void editor_draw_status() +{ + char str[512]; + int x = BRICK_WIDTH, y = ( MAP_HEIGHT - 1 ) * BRICK_HEIGHT - 2; + int height = 10; + /* locartion */ + sprintf( str, _("Location: %s"), edit_file_name ); + mfont->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + stk_font_write( mfont, stk_display, x, y, STK_OPAQUE, str ); + /* current level */ + sprintf( str, _("Current Level: %i/%i (Free: %i)"), edit_cur_level_id + 1, edit_level_count, MAX_LEVELS - edit_level_count ); + mfont->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + stk_font_write( mfont, stk_display, x, y + height, STK_OPAQUE, str ); + /* swap */ + mfont->align = STK_FONT_ALIGN_RIGHT | STK_FONT_ALIGN_TOP; + if ( first_swap_level != -1 ) { + sprintf( str, _("*** Level %i Marked For Swap ***"), first_swap_level + 1 ); + stk_font_write( mfont, stk_display, stk_display->w - BRICK_WIDTH, y + height, STK_OPAQUE, str ); + } + else { + /* version */ + sprintf( str, _("Version: %s "), edit_version ); + stk_font_write( mfont, stk_display, stk_display->w - BRICK_WIDTH, y + height, STK_OPAQUE, str ); + } + /* name and author */ + mfont->align = STK_FONT_ALIGN_LEFT | STK_FONT_ALIGN_TOP; + sprintf( str, _("Title: %s"), edit_cur_level->name ); + stk_font_write( mfont, stk_display, BRICK_WIDTH + 2, ( MAP_HEIGHT - 5 ) * BRICK_HEIGHT + 5, STK_OPAQUE, str ); + mfont->align = STK_FONT_ALIGN_RIGHT | STK_FONT_ALIGN_TOP; + sprintf( str, _("Author: %s"), edit_cur_level->author ); + stk_font_write( mfont, stk_display, stk_display->w - BRICK_WIDTH - 2, ( MAP_HEIGHT - 5 ) * BRICK_HEIGHT + 5, STK_OPAQUE, str ); +} +/* +==================================================================== +Draw brick and extra (if any) from screen map pos +so it fits the editable field (no frame, no bottom). +==================================================================== +*/ +void editor_draw_brick( int edit_map_x, int edit_map_y ) +{ + /* brick */ + if ( edit_cur_level->bricks[edit_map_x][edit_map_y] != -1 ) { + if ( edit_cur_level->bricks[edit_map_x][edit_map_y] != INVIS_BRICK_ID ) + stk_surface_blit( brick_pic, + edit_cur_level->bricks[edit_map_x][edit_map_y] * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + stk_display, (edit_map_x + 1) * BRICK_WIDTH, (edit_map_y + 1) * BRICK_HEIGHT ); + else + stk_surface_fill( stk_display, + (edit_map_x + 1) * BRICK_WIDTH, (edit_map_y + 1) * BRICK_HEIGHT, + BRICK_WIDTH, BRICK_HEIGHT, 0x777777 ); + } + else { + stk_surface_blit( editor_bkgnd, + (edit_map_x + 1) * BRICK_WIDTH, (edit_map_y + 1) * BRICK_HEIGHT, + BRICK_WIDTH, BRICK_HEIGHT, stk_display, + (edit_map_x + 1) * BRICK_WIDTH, (edit_map_y + 1) * BRICK_HEIGHT ); + } + /* extra */ + if ( ( extra_vis || edit_sel_type == EDITOR_EXTRA ) && edit_cur_level->extras[edit_map_x][edit_map_y] != EX_NONE) { + stk_surface_blit( extra_pic, + ( edit_cur_level->extras[edit_map_x][edit_map_y] ) * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + stk_display, (edit_map_x + 1) * BRICK_WIDTH, (edit_map_y + 1) * BRICK_HEIGHT ); + } + stk_display_store_drect(); +} +/* +==================================================================== +Redraw and refresh full screen +==================================================================== +*/ +void editor_full_update() +{ + int i, j; + /* background */ + stk_surface_blit( editor_bkgnd, 0,0,-1,-1, stk_display, 0,0 ); + /* bricks&extras */ + for ( i = 0; i < EDIT_WIDTH; i++ ) + for ( j = 0; j < EDIT_HEIGHT; j++ ) + editor_draw_brick( i, j ); + /* selection frame */ + stk_surface_blit( sel_frame, 0,0,-1,-1, + stk_display, edit_sel_x * BRICK_WIDTH, edit_sel_y * BRICK_HEIGHT ); + /* status */ + editor_draw_status(); + /* refresh */ + stk_display_update( STK_UPDATE_ALL ); +} +/* +==================================================================== +Do only redraw and refresh those bricks with an extra +==================================================================== +*/ +void editor_update_extra_bricks() +{ + int i, j; + for ( i = 0; i < EDIT_WIDTH; i++ ) + for ( j = 0; j < EDIT_HEIGHT; j++ ) + if ( edit_cur_level->extras[i][j] != EX_NONE ) + editor_draw_brick( i, j ); + stk_display_update( STK_UPDATE_RECTS ); +} +/* +==================================================================== +Free all editor levels +==================================================================== +*/ +void editor_clear_levels() +{ + int i; + for ( i = 0; i < MAX_LEVELS; i++ ) + if ( edit_levels[i] ) level_delete( edit_levels[i] ); + memset( edit_levels, 0, sizeof( Level* ) * MAX_LEVELS ); + edit_level_count = 0; +} +/* +==================================================================== +Save/load levels to/from editor file. +==================================================================== +*/ +void editor_load_levels() +{ + int i, version, update; + Level *level; + FILE *file = 0; + /* clear levels first */ + editor_clear_levels(); + /* read levels while there are some in it */ + edit_level_count = 0; + if ( ( file = fopen( edit_file_name, "rb" ) ) != 0 ) { + levelset_get_version( file, &version, &update ); + sprintf( edit_version, "%i.%02i", version, update ); + while ( ( level = level_load( file ) ) != 0 ) + edit_levels[edit_level_count++] = level; + fclose( file ); + } + /* if we got no level at all create an empty one */ + if ( edit_level_count == 0 ) { + edit_level_count = 1; + edit_levels[0] = level_create_empty( _("noname"), _("untitled") ); + } + /* translate the character strings to editor info */ + for ( i = 0; i < edit_level_count; i++ ) + editor_translate_level( edit_levels[i], CHAR_2_INDICES ); +} +void editor_save_levels() +{ + FILE *file = 0; + int i, j, k; + Level *level = 0; + /* convert */ + for ( i = 0; i < edit_level_count; i++ ) + editor_translate_level( edit_levels[i], INDICES_2_CHAR ); + /* save */ + if ( ( file = fopen( edit_file_name, "w" ) ) != 0 ) { + fprintf( file, "Version: %s\n", edit_version ); + for ( i = 0; i < edit_level_count; i++ ) { + level = edit_levels[i]; + /* save level */ + fprintf( file, "Level:\n%s\n%s\nBricks:\n", level->author, level->name ); + for ( j = 0; j < EDIT_HEIGHT; j++ ) { + for ( k = 0; k < EDIT_WIDTH; k++ ) + fprintf( file, "%c", level->bricks[k][j] ); + fprintf( file, "\n" ); + } + fprintf( file, "Bonus:\n" ); + for ( j = 0; j < EDIT_HEIGHT; j++ ) { + for ( k = 0; k < EDIT_WIDTH; k++ ) + fprintf( file, "%c", level->extras[k][j] ); + fprintf( file, "\n" ); + } + } + fclose( file ); + } + /* convert back */ + for ( i = 0; i < edit_level_count; i++ ) + editor_translate_level( edit_levels[i], CHAR_2_INDICES ); +} +/* +==================================================================== +Handle button action +==================================================================== +*/ +void editor_handle_button( int type, int *full_update ) { + Level *dummy_ptr; + int old_pos; + int version, update; + char *name, *author; + int i; + switch ( type ) { + case BUTTON_FIRST: + edit_cur_level_id = 0; + edit_cur_level = edit_levels[0]; + *full_update = 1; + break; + case BUTTON_NEXT: + edit_cur_level_id++; + if ( edit_cur_level_id == edit_level_count ) edit_cur_level_id = 0; + edit_cur_level = edit_levels[edit_cur_level_id]; + *full_update = 1; + break; + case BUTTON_PREV: + edit_cur_level_id--; + if ( edit_cur_level_id == -1 ) edit_cur_level_id = edit_level_count - 1; + edit_cur_level = edit_levels[edit_cur_level_id]; + *full_update = 1; + break; + case BUTTON_SWAP: + if ( first_swap_level == -1 ) { + first_swap_level = edit_cur_level_id; + *full_update = 1; + } + else { + /* swap current and marked level */ + dummy_ptr = edit_levels[first_swap_level]; + edit_levels[first_swap_level] = edit_levels[edit_cur_level_id]; + edit_levels[edit_cur_level_id] = dummy_ptr; + edit_cur_level = edit_levels[edit_cur_level_id]; + first_swap_level = -1; + *full_update = 1; + } + break; + case BUTTON_LOAD: + if ( !confirm( font, _("Discard All Changes? y/n"), CONFIRM_YES_NO ) ) break; + /* load levels and reset position if level doesn't exist */ + old_pos = edit_cur_level_id; + editor_load_levels(); + if ( old_pos >= edit_level_count ) edit_cur_level_id = 0; + edit_cur_level = edit_levels[edit_cur_level_id]; + first_swap_level = -1; + *full_update = 1; + break; + case BUTTON_SAVE: + if ( !confirm( font, _("Save Changes? y/n"), CONFIRM_YES_NO ) ) break; + editor_save_levels(); + break; + case BUTTON_CLEAR: + if ( !confirm( font, _("Clear Level? y/n"), CONFIRM_YES_NO ) ) break; + author = strdup( edit_cur_level->author ); + name = strdup( edit_cur_level->name ); + level_delete( edit_levels[edit_cur_level_id] ); + edit_levels[edit_cur_level_id] = level_create_empty( author, name ); + edit_cur_level = edit_levels[edit_cur_level_id]; + free( name ); free( author ); + *full_update = 1; + break; + case BUTTON_ADD: + if ( edit_level_count == MAX_LEVELS ) break; + if ( !confirm( font, _("Add Level? y/n"), CONFIRM_YES_NO ) ) break; + edit_levels[edit_level_count] = level_create_empty( edit_levels[edit_level_count - 1]->author, edit_levels[edit_level_count - 1]->name ); + edit_level_count++; + *full_update = 1; + break; + case BUTTON_INSERT: + if ( edit_level_count == MAX_LEVELS ) break; + if ( !confirm( font, _("Insert Level? y/n"), CONFIRM_YES_NO ) ) break; + for ( i = edit_level_count; i > edit_cur_level_id; i-- ) + edit_levels[i] = edit_levels[i - 1]; + edit_level_count++; + edit_levels[edit_cur_level_id] = level_create_empty( edit_cur_level->author, edit_cur_level->name ); + edit_cur_level = edit_levels[edit_cur_level_id]; + *full_update = 1; + break; + case BUTTON_DELETE: + if ( edit_level_count == 1 ) break; /* last level may not be removed */ + if ( !confirm( font, _("Delete Level? y/n"), CONFIRM_YES_NO ) ) break; + level_delete( edit_levels[edit_cur_level_id] ); + for ( i = edit_cur_level_id; i < edit_level_count - 1; i++ ) + edit_levels[i] = edit_levels[i + 1]; + edit_levels[i] = 0; + edit_level_count--; + if ( edit_cur_level_id >= edit_level_count ) + edit_cur_level_id = edit_level_count - 1; + edit_cur_level = edit_levels[edit_cur_level_id]; + *full_update = 1; + break; + case BUTTON_PLAY: + stk_display_fade( STK_FADE_OUT, STK_FADE_DEFAULT_TIME ); + /* translate */ + editor_translate_level( edit_cur_level, INDICES_2_CHAR ); + /* run */ + client_game_test_level( edit_cur_level ); + /* translate back */ + editor_translate_level( edit_cur_level, CHAR_2_INDICES ); + *full_update = 1; + break; + case BUTTON_VERSION: + if ( enter_string( font, _("Levelset Version:"), edit_version, 8 ) ) { + parse_version( edit_version, &version, &update ); + sprintf( edit_version, "%i.%02i", version, update ); + *full_update = 1; + } + break; + } +} +/* +==================================================================== +Handle a click on a map tile. +If set is False a remove action was requested (only for +editing) +==================================================================== +*/ +int near_grow_brick( int x, int y ) { + int i, j; + for ( i = x - 1; i <= x + 1; i++ ) + for ( j = y - 1; j <= y + 1; j++ ) + if ( i != x || j != y ) + if ( i >= 0 && j >= 0 && i < EDIT_WIDTH && j < EDIT_HEIGHT ) + if ( edit_cur_level->bricks[i][j] == GROW_BRICK_ID ) + return 1; + return 0; +} +void editor_handle_click( int x, int y, int set, int *full_update ) +{ + int sel = 0; + int edit_x, edit_y; + char str[32]; + /* if !set and within the tile field we perform a switch */ + if ( !set ) { + if ( x >= edit_tile_x && y >= edit_tile_y && x < edit_tile_x + edit_tile_w && y < edit_tile_y + edit_tile_h ) { + editor_switch_tiles(); + *full_update = 1; + return; + } + } + /* the remaining stuff requires a tile at the position */ + if ( edit_buttons[x][y] == BUTTON_NONE ) return; /* no action */ + /* bricks */ + if ( edit_buttons[x][y] >= BUTTON_FIRST_BRICK && edit_buttons[x][y] <= BUTTON_LAST_BRICK ) { + sel = 1; + edit_sel_type = EDITOR_BRICK; + edit_sel_id = edit_buttons[x][y] - BUTTON_FIRST_BRICK; + } + /* extras */ + if ( edit_buttons[x][y] >= BUTTON_FIRST_EXTRA && edit_buttons[x][y] <= BUTTON_LAST_EXTRA ) { + sel = 1; + edit_sel_type = EDITOR_EXTRA; + edit_sel_id = edit_buttons[x][y] - BUTTON_FIRST_EXTRA; + } + /* edit field */ + if ( edit_buttons[x][y] == BUTTON_EDIT ) { + edit_x = x - 1; + edit_y = y - 1; + if ( edit_sel_type == EDITOR_BRICK ) { + if ( set ) { + /* set brick */ + edit_cur_level->bricks[edit_x][edit_y] = edit_sel_id; + *full_update = 1; + } + else { + /* remove brick and extra if any */ + if ( edit_cur_level->bricks[edit_x][edit_y] != -1 ) { + edit_cur_level->bricks[edit_x][edit_y] = -1; + edit_cur_level->extras[edit_x][edit_y] = EX_NONE; + *full_update = 1; + } + } + } + else { + if ( set ) { + /* set extra - must be on a brick or beside a grow brick */ + if ( edit_cur_level->bricks[edit_x][edit_y] != -1 || near_grow_brick( edit_x, edit_y ) ) { + edit_cur_level->extras[edit_x][edit_y] = edit_sel_id; + *full_update = 1; + } + } + else { + /* remove extra */ + if ( edit_cur_level->extras[edit_x][edit_y] != EX_NONE ) { + edit_cur_level->extras[edit_x][edit_y] = EX_NONE; + *full_update = 1; + } + } + } + } + /* buttons */ + editor_handle_button( edit_buttons[x][y], full_update ); + /* name&author */ + strcpy( str, "" ); + if ( edit_buttons[x][y] == BUTTON_EDIT_AUTHOR ) + if ( enter_string( font, _("Author's Name:"), str, 24 ) ) { + snprintf( edit_cur_level->author, 31, "%s", str ); + *full_update = 1; + } + if ( edit_buttons[x][y] == BUTTON_EDIT_NAME ) + if ( enter_string( font, _("Title:"), str, 24 ) ) { + snprintf( edit_cur_level->name, 31, "%s", str ); + *full_update = 1; + } + /* sel frame tile position */ + if ( sel ) { + edit_sel_x = x; + edit_sel_y = y; + *full_update = 1; + } +} + +/* +==================================================================== +Publics +==================================================================== +*/ +/* +==================================================================== +Create/delete editor resources +==================================================================== +*/ +void editor_create() +{ + int i, j; + /* clear all level pointers */ + memset( edit_levels, 0, sizeof( Level* ) * MAX_LEVELS ); + /* load sel frame */ + sel_frame = stk_surface_load( SDL_SWSURFACE, "sel_frame.png" ); + /* load buttons */ + buttons = stk_surface_load( SDL_SWSURFACE, "buttons.png" ); + /* background is black + frame */ + editor_bkgnd = stk_surface_create( SDL_SWSURFACE, stk_display->w, stk_display->h ); + SDL_SetColorKey( editor_bkgnd, 0, 0 ); + stk_surface_fill( editor_bkgnd, 0,0,-1,-1, 0x0 ); + /* add helping grid */ + editor_draw_grid(); + /* set actions */ + /* editable part */ + for ( i = 0; i < EDIT_WIDTH; i++ ) + for ( j = 0; j < EDIT_HEIGHT; j++ ) + edit_buttons[i + 1][j + 1] = BUTTON_EDIT; + /* buttons */ + for ( i = 0; i < 11; i++ ) + edit_buttons[0][MAP_HEIGHT - 11 + i] = BUTTON_FIRST + i; + edit_buttons[MAP_WIDTH - 1][MAP_HEIGHT - 1] = BUTTON_PLAY; + /* name&author */ + for ( i = 1; i < MAP_WIDTH / 2; i++ ) + edit_buttons[i][MAP_HEIGHT - 5] = BUTTON_EDIT_NAME; + for ( i = MAP_WIDTH / 2; i < MAP_WIDTH - 1; i++ ) + edit_buttons[i][MAP_HEIGHT - 5] = BUTTON_EDIT_AUTHOR; + /* draw buttons */ + for ( i = 0; i < 11; i++ ) { + stk_surface_blit( buttons, i * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + editor_bkgnd, 0, ( MAP_HEIGHT - 11 + i ) * BRICK_HEIGHT ); + } + stk_surface_blit( buttons, 11 * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + editor_bkgnd, + ( MAP_WIDTH - 1 ) * BRICK_WIDTH, + ( MAP_HEIGHT - 1 ) * BRICK_HEIGHT ); +} +void editor_delete() +{ + stk_surface_free( &editor_bkgnd ); + stk_surface_free( &sel_frame ); + stk_surface_free( &buttons ); +} +/* +==================================================================== +Initiate and clear stuff for each editor call. +file_name is the name of the edited file in home directory. +==================================================================== +*/ +int editor_init( char *file_name ) +{ + FILE *file = 0; + /* set full file name */ + snprintf( edit_file_name, sizeof(edit_file_name)-1, "%s/%s/lbreakout2-levels/%s", (getenv( "HOME" )?getenv( "HOME" ):"."), CONFIG_DIR_NAME, file_name ); + /* test this file for write access. use append to keep contents */ + if ( ( file = fopen( edit_file_name, "a" ) ) == 0 ) { + fprintf( stderr, "Permission to write to file '%s' denied.\n", edit_file_name ); + return 0; + } + else + fclose( file ); + /* load levels */ + editor_load_levels(); + /* select first level */ + edit_cur_level_id = 0; + edit_cur_level = edit_levels[0]; + /* select first brick */ + edit_sel_type = EDITOR_EXTRA; + editor_switch_tiles(); + /* clear other flags */ + extra_vis = 0; + first_swap_level = -1; + return 1; +} +void editor_clear() +{ + /* free all levels */ + editor_clear_levels(); +} +/* +==================================================================== +Run the editor +==================================================================== +*/ +void editor_run() +{ + SDL_Event event; + int leave = 0; + int ms; + int last_switch_time = 0; + int full_update = 0, set; + int x, y, xoff,yoff; + Uint8 buttonstate; + + /* reset any alpha keys */ + SDL_SetAlpha( extra_pic, 0,0 ); + /* draw first time */ + editor_full_update(); + /* main loop */ + stk_timer_reset(); + while ( !leave && !stk_quit_request ) { + if ( SDL_PollEvent( &event ) ) { + switch ( event.type ) { + case SDL_QUIT: leave = 1; stk_quit_request = 1; break; + case SDL_MOUSEBUTTONDOWN: + editor_handle_click( event.button.x / BRICK_WIDTH, + event.button.y / BRICK_HEIGHT, + (event.button.button == STK_BUTTON_LEFT), + &full_update ); + break; + case SDL_KEYDOWN: + switch ( event.key.keysym.sym ) { + case SDLK_ESCAPE: + if ( confirm( font, _("Quit Editor? y/n"), CONFIRM_YES_NO ) ) leave = 1; + break; + case SDLK_LEFT: editor_handle_button( BUTTON_PREV, &full_update ); break; + case SDLK_RIGHT: editor_handle_button( BUTTON_NEXT, &full_update ); break; + case SDLK_UP: editor_handle_button( BUTTON_FIRST, &full_update ); break; + case SDLK_f: + config.fullscreen = !config.fullscreen; + stk_display_apply_fullscreen( config.fullscreen ); + full_update = 1; + break; + default: break; + } + break; + default: break; + } + } + /* mouse motion is handled directly */ + buttonstate = SDL_GetRelativeMouseState( &xoff, &yoff ); + if ( (xoff || yoff) && buttonstate ) { + buttonstate = SDL_GetMouseState( &x, &y ); + set = 0; if ( buttonstate & SDL_BUTTON(1) ) set = 1; + editor_handle_click( x / BRICK_WIDTH, y / BRICK_HEIGHT, set, &full_update ); + } + ms = stk_timer_get_time(); + if ( ( last_switch_time -= ms ) <= 0 ) { + extra_vis = !extra_vis; + last_switch_time = 500; + editor_update_extra_bricks(); + } + /* full update? */ + if ( full_update ) { + editor_full_update(); + full_update = 0; + } + /* don't consume all CPU time */ + SDL_Delay( 5 ); + } +} diff --git a/project/jni/application/lbreakout2/client/editor.h b/project/jni/application/lbreakout2/client/editor.h new file mode 100644 index 000000000..b2c4283f0 --- /dev/null +++ b/project/jni/application/lbreakout2/client/editor.h @@ -0,0 +1,38 @@ +/*************************************************************************** + editor.h - description + ------------------- + begin : Fri Oct 12 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* +==================================================================== +Create/delete editor resources +==================================================================== +*/ +void editor_create(); +void editor_delete(); +/* +==================================================================== +Initiate and clear stuff for each editor call. +file_name is the name of the edited file in home directory. +==================================================================== +*/ +int editor_init( char *file_name ); +void editor_clear(); +/* +==================================================================== +Run the editor +==================================================================== +*/ +void editor_run(); diff --git a/project/jni/application/lbreakout2/client/empty.hscr b/project/jni/application/lbreakout2/client/empty.hscr new file mode 100644 index 000000000..7bce630c2 --- /dev/null +++ b/project/jni/application/lbreakout2/client/empty.hscr @@ -0,0 +1,31 @@ +>>>LBreakout2 +............ +10 +300000 +............ +9 +200000 +............ +8 +150000 +............ +7 +100000 +............ +6 +70000 +............ +5 +50000 +............ +4 +40000 +............ +3 +30000 +............ +2 +20000 +............ +1 +10000 diff --git a/project/jni/application/lbreakout2/client/event.c b/project/jni/application/lbreakout2/client/event.c new file mode 100644 index 000000000..331b80391 --- /dev/null +++ b/project/jni/application/lbreakout2/client/event.c @@ -0,0 +1,60 @@ +/*************************************************************************** + event.c - description + ------------------- + begin : Sat Sep 8 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "event.h" + +extern int stk_quit_request; + +/* +==================================================================== +Event filter that blocks all events. Used to clear the SDL +event queue. +==================================================================== +*/ +static int all_filter( const SDL_Event *event ) { return 0; } + +/* +==================================================================== +Handle SDL_QUIT events directly and kill all motion events. +==================================================================== +*/ +int event_filter( const SDL_Event *event ) +{ + if ( event->type == SDL_QUIT ) { + stk_quit_request = 1; + return 0; + } + if ( event->type == SDL_MOUSEMOTION ) + return 0; + return 1; +} + +/* +==================================================================== +Clear the SDL event key (keydown events) +==================================================================== +*/ +void event_clear_sdl_queue() +{ + SDL_EventFilter old_filter; + SDL_Event event; + old_filter = SDL_GetEventFilter(); + SDL_SetEventFilter( all_filter ); + while ( SDL_PollEvent( &event ) ); + SDL_SetEventFilter( old_filter ); +} diff --git a/project/jni/application/lbreakout2/client/event.h b/project/jni/application/lbreakout2/client/event.h new file mode 100644 index 000000000..9248e8d76 --- /dev/null +++ b/project/jni/application/lbreakout2/client/event.h @@ -0,0 +1,56 @@ +/*************************************************************************** + event.h - description + ------------------- + begin : Sat Sep 8 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* +==================================================================== +Event filter used to get motion x. +==================================================================== +*/ +int event_filter( const SDL_Event *event ); +/* +==================================================================== +Reset event states +==================================================================== +*/ +void event_reset(); +/* +==================================================================== +Grab or release input. Hide cursor if events are kept in window. +Use relative mouse motion and grab if config tells so. +==================================================================== +*/ +void event_grab_input(); +void event_ungrab_input(); +/* +==================================================================== +Poll next event and set key and mousestate. +Return Value: True if event occured +==================================================================== +*/ +int event_poll( SDL_Event *event ); +/* +==================================================================== +Block/unblock motion event +==================================================================== +*/ +void event_block_motion( int block ); +/* +==================================================================== +Clear the SDL event key (keydown events) +==================================================================== +*/ +void event_clear_sdl_queue(); diff --git a/project/jni/application/lbreakout2/client/extras.c b/project/jni/application/lbreakout2/client/extras.c new file mode 100644 index 000000000..209d60f0b --- /dev/null +++ b/project/jni/application/lbreakout2/client/extras.c @@ -0,0 +1,635 @@ +/*************************************************************************** + extras.c - description + ------------------- + begin : Sun Sep 9 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "../game/game.h" +#include "bricks.h" +#include "shrapnells.h" +#include "player.h" +#include "paddle.h" +#include "frame.h" + +extern Player *cur_player; +extern SDL_Surface *stk_display; +extern SDL_Rect stk_drect; +extern SDL_Surface *offscreen; +extern SDL_Surface *bkgnd; /* background + frame */ +extern SDL_Surface *offscreen_backup; +extern int ball_w, ball_dia; +extern SDL_Surface *brick_pic; +extern Brick bricks[MAP_WIDTH][MAP_HEIGHT]; +extern SDL_Surface *extra_pic; /* graphics */ +extern SDL_Surface *extra_shadow; +extern SDL_Surface *paddle_pic, *weapon_pic; +extern SDL_Surface *ball_pic; +extern SDL_Surface *shot_pic; +extern StkFont *display_font; +extern SDL_Surface *wall_pic; +extern int shadow_size; +#ifdef AUDIO_ENABLED +extern StkSound *wav_score, *wav_metal, *wav_std, *wav_wall, *wav_joker; +extern StkSound *wav_goldshower, *wav_life_up; +extern StkSound *wav_speedup, *wav_speeddown; +extern StkSound *wav_chaos, *wav_darkness, *wav_ghost; +extern StkSound *wav_timeadd, *wav_expl_ball, *wav_weak_ball; +extern StkSound *wav_bonus_magnet, *wav_malus_magnet, *wav_disable; +extern StkSound *wav_attach; /* handled by balls.c */ +extern StkSound *wav_expand, *wav_shrink, *wav_frozen; +#endif +extern Game *game; /* client game context */ +extern int paddle_ch; +extern int ball_pic_x_offset; + +/* +==================================================================== +Locals +==================================================================== +*/ + +/* +==================================================================== +Public +==================================================================== +*/ + +/* Play sounds and handle graphical effects. */ +void client_handle_collected_extra( Paddle *paddle, int extra_type ) +{ + int i, j; +#ifdef AUDIO_ENABLED + int px = paddle->x+(paddle->w>>1); +#endif + Extra *ex; + + switch (extra_type) { + case EX_JOKER: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_joker ); +#endif + list_reset( game->extras ); + while ( ( ex = list_next( game->extras ) ) ) { + stk_display_store_rect( &ex->update_rect ); + list_delete_current( game->extras ); + } + break; + case EX_SCORE200: + case EX_SCORE500: + case EX_SCORE1000: + case EX_SCORE2000: + case EX_SCORE5000: + case EX_SCORE10000: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_score ); +#endif + break; + case EX_GOLDSHOWER: + paddle->extra_time[EX_GOLDSHOWER] += TIME_GOLDSHOWER; + paddle->extra_active[EX_GOLDSHOWER] = 1; +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_goldshower ); +#endif + break; + case EX_LIFE: + if ( game->game_type == GT_LOCAL ) { + if ( paddle->player->lives < game->diff->max_lives ) { + paddle->player->lives++; + frame_add_life(); + } + } + break; + case EX_SHORTEN: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_shrink ); +#endif + paddle_init_resize( paddle, -1); + break; + case EX_LENGTHEN: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_expand ); +#endif + paddle_init_resize( paddle, 1); + break; + case EX_BALL: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_std ); +#endif + break; + case EX_WALL: + paddle->extra_time[EX_WALL] += TIME_WALL; + if ( paddle->extra_active[EX_WALL] ) { +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_std ); +#endif + break; + } + paddle->extra_active[extra_type] = 1; + paddle->wall_alpha = 0; +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_wall ); +#endif + break; + case EX_METAL: + game->extra_time[EX_METAL] += TIME_METAL; + game->extra_active[extra_type] = 1; + ball_pic_x_offset = ball_w; +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_metal ); +#endif + /* other ball extras are disabled */ + if ( game->extra_active[EX_EXPL_BALL] ) { + game->extra_active[EX_EXPL_BALL] = 0; + game->extra_time[EX_EXPL_BALL] = 0; + } + if ( game->extra_active[EX_WEAK_BALL] ) { + game->extra_active[EX_WEAK_BALL] = 0; + game->extra_time[EX_WEAK_BALL] = 0; + } + break; + case EX_FROZEN: + paddle->extra_time[EX_FROZEN] = TIME_FROZEN; + paddle->extra_active[extra_type] = 1; + paddle->pic_y_offset = paddle_ch*2; + paddle->frozen = 1; /* the server sided paddle is blocked + so does the same with the local copy */ +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_frozen ); +#endif + break; + case EX_WEAPON: + paddle->extra_time[EX_WEAPON] += TIME_WEAPON; + paddle->extra_active[extra_type] = 1; + weapon_install( paddle, 1 ); +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_std ); +#endif + break; + case EX_SLIME: + paddle->extra_time[EX_SLIME] += TIME_SLIME; + paddle->extra_active[extra_type] = 1; + if ( !paddle->frozen ) + paddle->pic_y_offset = paddle_ch; +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_attach ); +#endif + break; + case EX_FAST: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_speedup ); +#endif + if ( game->extra_active[EX_SLOW] ) { + game->extra_time[EX_SLOW] = 0; + game->extra_active[EX_SLOW] = 0; + } + game->extra_time[EX_FAST] += TIME_FAST; + game->extra_active[extra_type] = 1; + break; + case EX_SLOW: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_speeddown ); +#endif + if ( game->extra_active[EX_FAST] ) { + game->extra_time[EX_FAST] = 0; + game->extra_active[EX_FAST] = 0; + } + game->extra_time[EX_SLOW] += TIME_SLOW; + game->extra_active[extra_type] = 1; + break; + case EX_CHAOS: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_chaos ); +#endif + game->extra_time[EX_CHAOS] += TIME_CHAOS; + game->extra_active[extra_type] = 1; + break; + case EX_DARKNESS: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_darkness ); +#endif + game->extra_time[EX_DARKNESS] += TIME_DARKNESS; + if ( game->extra_active[EX_DARKNESS] ) break; + /* backup offscreen and turn it black */ + stk_surface_fill( offscreen, 0,0,-1,-1, 0x0 ); + stk_surface_fill( stk_display, 0,0,-1,-1, 0x0 ); + stk_display_store_rect( 0 ); + /* set alpha keys to 128 */ + SDL_SetAlpha( paddle_pic, SDL_SRCALPHA, 128 ); + SDL_SetAlpha( weapon_pic, SDL_SRCALPHA, 128 ); + SDL_SetAlpha( extra_pic, SDL_SRCALPHA, 128 ); + SDL_SetAlpha( ball_pic, SDL_SRCALPHA, 128 ); + SDL_SetAlpha( shot_pic, SDL_SRCALPHA, 128 ); + SDL_SetAlpha( display_font->surface, SDL_SRCALPHA, 128 ); + /* use dark explosions */ + exps_set_dark( 1 ); + game->extra_active[extra_type] = 1; + break; + case EX_GHOST_PADDLE: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_ghost ); +#endif + paddle->extra_time[EX_GHOST_PADDLE] += TIME_GHOST_PADDLE; + paddle->extra_active[extra_type] = 1; + paddle_set_invis( paddle, 1 ); + break; + case EX_TIME_ADD: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_timeadd ); +#endif + for ( i = 0; i < EX_NUMBER; i++ ) + if ( game->extra_time[i] ) + game->extra_time[i] += 7000; + for ( i = 0; i < EX_NUMBER; i++ ) { + for ( j = 0; j < game->paddle_count; j++ ) + if ( game->paddles[j]->extra_time[i] ) + game->paddles[j]->extra_time[i] += 7000; + } + break; + case EX_EXPL_BALL: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_expl_ball ); +#endif + ball_pic_x_offset = ball_w*2; + game->extra_time[EX_EXPL_BALL] += TIME_EXPL_BALL; + game->extra_active[extra_type] = 1; + /* other ball extras are disabled */ + if ( game->extra_active[EX_METAL] ) { + game->extra_active[EX_METAL] = 0; + game->extra_time[EX_METAL] = 0; + } + if ( game->extra_active[EX_WEAK_BALL] ) { + game->extra_active[EX_WEAK_BALL] = 0; + game->extra_time[EX_WEAK_BALL] = 0; + } + break; + case EX_WEAK_BALL: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_weak_ball ); +#endif + ball_pic_x_offset = ball_w*3; + game->extra_time[EX_WEAK_BALL] += TIME_WEAK_BALL; + game->extra_active[extra_type] = 1; + /* other ball extras are disabled */ + if ( game->extra_active[EX_METAL] ) { + game->extra_active[EX_METAL] = 0; + game->extra_time[EX_METAL] = 0; + } + if ( game->extra_active[EX_EXPL_BALL] ) { + game->extra_active[EX_EXPL_BALL] = 0; + game->extra_time[EX_EXPL_BALL] = 0; + } + break; + case EX_BONUS_MAGNET: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_bonus_magnet ); +#endif + paddle_set_attract( paddle, ATTRACT_BONUS ); + paddle->extra_time[EX_BONUS_MAGNET] += TIME_BONUS_MAGNET; + paddle->extra_active[extra_type] = 1; + if ( paddle->extra_active[EX_MALUS_MAGNET] ) { + paddle->extra_active[EX_MALUS_MAGNET] = 0; + paddle->extra_time[EX_MALUS_MAGNET] = 0; + } + break; + case EX_MALUS_MAGNET: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_malus_magnet ); +#endif + paddle_set_attract( paddle, ATTRACT_MALUS ); + paddle->extra_time[EX_MALUS_MAGNET] += TIME_MALUS_MAGNET; + paddle->extra_active[extra_type] = 1; + if ( paddle->extra_active[EX_BONUS_MAGNET] ) { + paddle->extra_active[EX_BONUS_MAGNET] = 0; + paddle->extra_time[EX_BONUS_MAGNET] = 0; + } + break; + case EX_DISABLE: +#ifdef AUDIO_ENABLED + stk_sound_play_x( px, wav_disable ); +#endif + /* set all active extra times to 1 so they will expire next + prog cycle */ + for ( i = 0; i < EX_NUMBER; i++ ) + if ( game->extra_time[i] ) + game->extra_time[i] = 1; + for ( i = 0; i < EX_NUMBER; i++ ) { + for ( j = 0; j < game->paddle_count; j++ ) + if ( game->paddles[j]->extra_time[i] ) + game->paddles[j]->extra_time[i] = 1; + } + break; + } +} +/* +==================================================================== +Show, hide extras +==================================================================== +*/ +void extras_hide() +{ + ListEntry *entry = game->extras->head->next; + Extra *ex; + while ( entry != game->extras->tail ) { + ex = entry->item; + entry = entry->next; + stk_surface_blit( offscreen, + (int)ex->x, (int)ex->y, + BRICK_WIDTH + shadow_size, BRICK_HEIGHT + shadow_size, + stk_display, (int)ex->x, (int)ex->y ); + ex->update_rect = stk_drect; + stk_display_store_rect( &ex->update_rect ); + } +} +void extras_show_shadow() +{ + ListEntry *entry = game->extras->head->next; + Extra *extra; + while ( entry != game->extras->tail ) { + extra = entry->item; + stk_surface_clip( stk_display, 0,0, + stk_display->w - BRICK_WIDTH, stk_display->h ); + stk_surface_alpha_blit( + extra_shadow, extra->type * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + stk_display, (int)extra->x + shadow_size, (int)extra->y + shadow_size, + ((int)extra->alpha)>>1 ); + stk_surface_clip( stk_display, 0,0,-1,-1 ); + entry = entry->next; + } +} +void extras_show() +{ + ListEntry *entry = game->extras->head->next; + Extra *ex; + int x, y; + while ( entry != game->extras->tail ) { + ex = entry->item; + entry = entry->next; + x = (int)ex->x; y = (int)ex->y; + stk_surface_alpha_blit( extra_pic, ex->offset, 0, + BRICK_WIDTH, BRICK_HEIGHT, stk_display, x, y, ex->alpha ); +#if 0 + if ( x < ex->update_rect.x ) { + /* movement to left */ + ex->update_rect.w += ex->update_rect.x - x; + ex->update_rect.x = x; + } + else + /* movement to right */ + ex->update_rect.w += x - ex->update_rect.x; + if ( ex->dir == -1 ) { + /* movement up */ + ex->update_rect.h += ex->update_rect.y - y; + ex->update_rect.y = y; + if ( ex->update_rect.y < 0 ) { + ex->update_rect.h += ex->update_rect.y; + ex->update_rect.y = 0; + } + } + else { + /* movement down */ + ex->update_rect.h += y - ex->update_rect.y; + if ( ex->update_rect.y + ex->update_rect.h >= stk_display->h ) + ex->update_rect.h = stk_display->h - ex->update_rect.y; + } + stk_display_store_rect( &ex->update_rect ); +#endif + ex->update_rect.x = x; + ex->update_rect.y = y; + ex->update_rect.w = BRICK_WIDTH + shadow_size; + ex->update_rect.h = BRICK_HEIGHT + shadow_size; + stk_display_store_rect( &ex->update_rect ); + } +} +void extras_alphashow( int alpha ) +{ + ListEntry *entry = game->extras->head->next; + Extra *ex; + int x, y; + while ( entry != game->extras->tail ) { + ex = entry->item; + x = (int)ex->x; + y = (int)ex->y; + stk_surface_alpha_blit( extra_pic, ex->type * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, stk_display, x, y, alpha ); + stk_display_store_rect( &ex->update_rect ); + entry = entry->next; + } +} + +/* move the extras as in extras_update but do not collect them */ +void client_extras_update( int ms ) +{ + Extra *ex; + int i, j; + int magnets; + Paddle *magnet; + + /* check extra_time of limited extras */ + /* general extras */ + for ( i = 0; i < EX_NUMBER; i++ ) + if ( game->extra_time[i] ) { + if ( (game->extra_time[i] -= ms) <= 0 ) { + game->extra_time[i] = 0; + /* expired */ + switch ( i ) { + case EX_EXPL_BALL: + case EX_WEAK_BALL: + case EX_METAL: + ball_pic_x_offset = 0; + break; + case EX_DARKNESS: + /* restore offscreen */ + stk_surface_blit( bkgnd, 0,0,-1,-1, offscreen, 0,0 ); + bricks_draw(); + if ( game->game_type == GT_LOCAL ) + frame_draw_lives( cur_player->lives, + game->diff->max_lives ); + /* back to screen */ + stk_surface_blit( + offscreen, 0,0,-1,-1, + stk_display, 0,0 ); + stk_display_store_rect( 0 ); + /* set alpha keys to OPAQUE */ + SDL_SetAlpha( paddle_pic, 0,0 ); + SDL_SetAlpha( extra_pic, 0,0 ); + SDL_SetAlpha( ball_pic, 0,0 ); + SDL_SetAlpha( shot_pic, 0,0 ); + SDL_SetAlpha( display_font->surface, 0,0 ); + /* use bright explosions */ + exps_set_dark( 0 ); + break; + } + /* set deactivated */ + game->extra_active[i] = 0; + } + } + /* paddlized extras */ + for ( j = 0; j < game->paddle_count; j++ ) + for ( i = 0; i < EX_NUMBER; i++ ) + /* extra_time of wall is updated in client_walls_update() */ + if ( game->paddles[j]->extra_time[i] && i != EX_WALL ) + if ( (game->paddles[j]->extra_time[i] -= ms) <= 0 ) { + game->paddles[j]->extra_time[i] = 0; + /* expired */ + switch ( i ) { + case EX_FROZEN: + case EX_SLIME: + if ( game->paddles[j]->extra_time[EX_SLIME] > 0 ) + game->paddles[j]->pic_y_offset = paddle_ch; + else + game->paddles[j]->pic_y_offset = 0; + game->paddles[j]->frozen = 0; + break; + case EX_WEAPON: + weapon_install( game->paddles[j], 0 ); + break; + case EX_GHOST_PADDLE: + paddle_set_invis( game->paddles[j], 0 ); + break; + case EX_BONUS_MAGNET: + case EX_MALUS_MAGNET: + paddle_set_attract( game->paddles[j], ATTRACT_NONE ); + break; + } + /* set deactivated */ + game->paddles[j]->extra_active[i] = 0; /* wall is handled in wall_...() */ + } + + /* move extras and check if paddle was hit */ + list_reset( game->extras ); + while ( ( ex = list_next( game->extras ) ) ) { + /* if only one paddle has a magnet active all extras will + * be attracted by this paddle else the extras 'dir' is used + */ + magnets = 0; magnet = 0; + for ( i = 0; i < game->paddle_count; i++ ) + if ( paddle_check_attract( game->paddles[i], ex->type ) ) { + magnets++; + magnet = game->paddles[i]; /* last magnet */ + } + if ( magnets != 1 ) { + /* either no or more than one magnet so use default */ + if ( ex->dir > 0 ) + ex->y += 0.05 * ms; + else + ex->y -= 0.05 * ms; + } + else { + /* 'magnet' is the paddle that will attract this extra */ + if ( magnet->type == PADDLE_TOP ) + ex->y -= 0.05 * ms; + else + ex->y += 0.05 * ms; + if ( ex->x + ( BRICK_WIDTH >> 1 ) < magnet->x + ( magnet->w >> 1 ) ) { + ex->x += 0.05 * ms; + if ( ex->x + ( BRICK_WIDTH >> 1 ) > magnet->x + ( magnet->w >> 1 ) ) + ex->x = magnet->x + ( magnet->w >> 1 ) - ( BRICK_WIDTH >> 1 ); + } + else { + ex->x -= 0.05 * ms; + if ( ex->x + ( BRICK_WIDTH >> 1 ) < magnet->x + ( magnet->w >> 1 ) ) + ex->x = magnet->x + ( magnet->w >> 1 ) - ( BRICK_WIDTH >> 1 ); + } + } + if ( !game->extra_active[EX_DARKNESS] ) { + if ( ex->alpha < 255 ) { + ex->alpha += 0.25 * ms; + if (ex->alpha > 255) + ex->alpha = 255; + } + } + else { + if ( ex->alpha < 128 ) { + ex->alpha += 0.25 * ms; + if (ex->alpha > 128) + ex->alpha = 128; + } + } + /* if out of screen forget this extra */ + if ( ex->y >= stk_display->h || ex->y + BRICK_HEIGHT < 0 ) { + stk_display_store_rect( &ex->update_rect ); + list_delete_current( game->extras ); + continue; + } + for ( j = 0; j < game->paddle_count; j++ ) { + /* contact with paddle core ? */ + if ( paddle_solid( game->paddles[j] ) ) + if ( ex->x + BRICK_WIDTH > game->paddles[j]->x ) + if ( ex->x < game->paddles[j]->x + game->paddles[j]->w - 1 ) + if ( ex->y + BRICK_HEIGHT > game->paddles[j]->y ) + if ( ex->y < game->paddles[j]->y + game->paddles[j]->h ) { + /* remove extra but don't handle it */ + stk_display_store_rect( &ex->update_rect ); + list_delete_current( game->extras ); + } + } + } +} + +/* wall */ +void walls_hide() +{ + int j; + for ( j = 0; j < game->paddle_count; j++ ) + if ( game->paddles[j]->extra_active[EX_WALL] ) { + stk_surface_blit( offscreen, BRICK_WIDTH, game->paddles[j]->wall_y, + wall_pic->w, wall_pic->h, + stk_display, BRICK_WIDTH, game->paddles[j]->wall_y ); + stk_display_store_drect(); + } +} +void walls_show() +{ + int j; + for ( j = 0; j < game->paddle_count; j++ ) + if ( game->paddles[j]->extra_active[EX_WALL] ) + stk_surface_alpha_blit( wall_pic, 0,0, + wall_pic->w, wall_pic->h, + stk_display, BRICK_WIDTH, game->paddles[j]->wall_y, + (int)game->paddles[j]->wall_alpha ); +} +void walls_alphashow( int alpha ) +{ + int j; + for ( j = 0; j < game->paddle_count; j++ ) + if ( game->paddles[j]->extra_active[EX_WALL] ) + stk_surface_alpha_blit( wall_pic, 0,0, + wall_pic->w, wall_pic->h, + stk_display, BRICK_WIDTH, game->paddles[j]->wall_y, + alpha ); +} +void client_walls_update( int ms ) +{ + int j; + + for ( j = 0; j < game->paddle_count; j++ ) + if ( game->paddles[j]->extra_active[EX_WALL] ) { + if ( game->paddles[j]->extra_time[EX_WALL] > 0 ) { + if ( (game->paddles[j]->extra_time[EX_WALL] -= ms) < 0 ) + game->paddles[j]->extra_time[EX_WALL] = 0; + /* still appearing? */ + if (game->paddles[j]->wall_alpha < 255) + if ( (game->paddles[j]->wall_alpha += 0.25 * ms) > 255 ) + game->paddles[j]->wall_alpha = 255; + } + else + if ( (game->paddles[j]->wall_alpha -= 0.25 * ms) < 0 ) { + game->paddles[j]->wall_alpha = 0; + game->paddles[j]->extra_active[EX_WALL] = 0; + } + } +} + diff --git a/project/jni/application/lbreakout2/client/extras.h b/project/jni/application/lbreakout2/client/extras.h new file mode 100644 index 000000000..c1d21d336 --- /dev/null +++ b/project/jni/application/lbreakout2/client/extras.h @@ -0,0 +1,42 @@ +/*************************************************************************** + extras.h - description + ------------------- + begin : Sun Sep 9 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* Play sounds and handle graphical effects. */ +void client_handle_collected_extra( Paddle *paddle, int extra_type ); + +/* move the extras as in extras_update but do not collect them */ +void client_extras_update( int ms ); + +/* +==================================================================== +Show, hide extras +==================================================================== +*/ +void extras_hide(); +void extras_show_shadow(); +void extras_show(); +void extras_alphashow( int alpha ); +/* +==================================================================== +Wall +==================================================================== +*/ +void walls_hide(); +void walls_show(); +void walls_alphashow( int alpha ); +void client_walls_update( int ms ); + diff --git a/project/jni/application/lbreakout2/client/file.c b/project/jni/application/lbreakout2/client/file.c new file mode 100644 index 000000000..29fabe951 --- /dev/null +++ b/project/jni/application/lbreakout2/client/file.c @@ -0,0 +1,530 @@ + +/*************************************************************************** + file.c - description + ------------------- + begin : Thu Jan 18 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include +#include +#include +#include +#include + +#include "../common/list.h" +#include "../common/tools.h" +#include "file.h" + +//#define FILE_DEBUG + +/* +==================================================================== +Test file in path as mode. +Return Value: True if sucessful +==================================================================== +*/ +int file_check( char *path, char *fname, char *mode ) +{ + char *full_path; + FILE *file = 0; + int ok = 0; + + full_path = calloc( strlen( path ) + strlen( fname ) + 2, sizeof( char ) ); + sprintf( full_path, "%s/%s", path, fname ); + + if ( ( file = fopen( full_path, mode ) ) != 0 ) { + fclose( file ); + ok = 1; + } + free( full_path ); + return ok; +} +/* +==================================================================== +Open file in path according to type (write, read, append) +Return Value: File handle if successful else Null +==================================================================== +*/ +FILE *file_open( char *path, char *fname, int type ) +{ + FILE *file = 0; + char *full_path; + char mode[3] = "a"; + + full_path = calloc( strlen( path ) + strlen( fname ) + 2, sizeof( char ) ); + sprintf( full_path, "%s/%s", path, fname ); + + switch ( type ) { + case FILE_READ: + if ( ( file = fopen( full_path, "rb" ) ) == 0 ) + fprintf( stderr, "file_open: cannot open file '%s' for reading: permission denied or non-existent\n", full_path ); + break; + case FILE_WRITE: + sprintf( mode, "w" ); + case FILE_APPEND: + if ( ( file = fopen( full_path, mode ) ) == 0 ) + fprintf( stderr, "file_open: cannot open file '%s': permission denied\n", full_path ); + break; + } + return file; +} + +/* +==================================================================== +Read all lines from file pointer and return as static array. +Resets the file pointer. Should only be used when reading a whole +file. +==================================================================== +*/ +char** file_read_lines( FILE *file, int *count ) +{ + int nl_count = 0; + char c; + char **lines; + char buffer[1024]; + + if ( !file ) return 0; + + /* count new_lines */ + fseek( file, 0, SEEK_SET ); + while ( !feof( file ) ) { + fread( &c, sizeof( char ), 1, file ); + if ( c == 10 ) nl_count++; + } + fseek( file, 0, SEEK_SET ); + nl_count++; /* maybe last lines wasn't terminated */ + + /* get mem */ + lines = calloc( nl_count, sizeof( char* ) ); + + /* read lines */ + *count = 0; + while( !feof( file ) ) { + if ( !fgets( buffer, 1023, file ) ) break; + if ( buffer[0] == 10 ) continue; /* empty line */ + buffer[strlen( buffer ) - 1] = 0; /* cancel newline */ + lines[*count] = strdup( buffer ); + (*count)++; + } + + return lines; +} + +/* check consistence of file (all brackets/comments closed). +will reset the file pos to the very beginning */ +int check_file_cons( FILE *file ) +{ + int brac = 0, comm = 0; + char c; + int ok = 1; + + fseek( file, 0, SEEK_SET ); + + while ( !feof( file ) ) { + + fread( &c, 1, 1, file ); + switch ( c ) { + + case '(': brac++; break; + case ')': brac--; break; + case '#': comm++; break; + + } + + } + + fseek( file, 0, SEEK_SET ); + + if ( brac != 0 || ( comm % 2) != 0 ) { + +#ifdef FILE_DEBUG + if ( brac != 0 ) + printf("the number of opening and closing brackets does not fit!...\n"); + else + printf("the number of opening and closing comment hashes does not fit!...\n"); +#endif + ok = 0; + + } + + return ok; +} + +/* return line number; keeps current file pos */ +int get_line_number( FILE *file ) { + int count = 0; + char c; + int pos = ftell( file ); + + fseek( file, 0, SEEK_SET ); + while ( ftell( file ) < pos - 1 ) { + fread( &c, sizeof( char ), 1, file ); + if ( c == 10 ) count++; + } + fseek( file, pos, SEEK_SET ); + return count + 1; +} + +/* ignore all blanks and jump to next none-blank */ +void ignore_blanks( FILE *file ) +{ + char c; + do { + fread( &c, sizeof( char ), 1, file ); + } while ( c <= 32 && !feof( file ) ); + if ( !feof( file ) ) + fseek( file, -1, SEEK_CUR ); /* restore last none-blank */ +} + +/* add character to token and check max length; return true if below max length */ +int add_char( char *token, int c ) +{ + int length = strlen( token ); + /* check token length */ + if ( length == MAX_TOKEN_LENGTH - 1 ) { + fprintf( stderr, + "read_token: token '%s' reached maximum length of %i, reading skipped\n", + token, length ); + return 0; + } + token[length++] = c; + token[length] = 0; + return 1; +} +/* read token from current file position; ignore spaces; +tokes are: + ( + ) + = + # comment # + " string " + normal_token +save token in token and check that MAX_TOKEN_LENGTH is not exceeded +return true if not end of file */ +int read_token( FILE *file, char *token ) +{ + int length = 0; /* token length */ + char c; + int read_str = 0; /* if this is set token is a string "..." */ + int i; + + /* clear token */ + token[0] = 0; + + /* ignore all blanks before token */ + ignore_blanks( file ); + + while( !feof( file ) ) { + fread( &c, sizeof( char ), 1, file ); + /* treat new_lines as blanks */ + if ( c == 10 ) c = 32; + /* check if this is a comment; if so ignore all characters in between */ + if ( c == '#' && !read_str ) { + /* read all characters until '#' occurs */ + do { + fread( &c, sizeof( char ), 1, file ); + } while ( c != '#' ); + /* ignore all blanks after comment */ + ignore_blanks( file ); + continue; /* start reading again */ + } + /* add char */ + if ( !add_char( token, c ) ) { + /* in this case restore last char as it belongs to next token */ + fseek( file, -1, SEEK_CUR ); + break; + } + else + length++; + /* check if token ends with a special single-character assignment token */ + if ( !read_str ) + if ( c == '(' || c == ')' || c == '=' ) { + /* if this wasn't the first character it already belongs to a new token, so skip it */ + if ( length > 1 ) { + fseek( file, -1, SEEK_CUR ); + token[--length] = 0; + } + break; + } + /* check if this char is a blank */ + if ( c <= 32 && !read_str ) { + /* remvoe this blank from token */ + token[--length] = 0; + break; + } + /* check if this is a long string embraced by "..." */ + if ( c == '"' ) { + if ( length > 1 ) { + if ( read_str ) + /* termination of string; stop reading */ + break; + else { + /* token read and this " belongs to next token */ + /* in this case restore last char */ + fseek( file, -1, SEEK_CUR ); + token[--length] = 0; + break; + } + } + else + read_str = 1; + } + } + if ( read_str ) { + /* delete brackets from token */ + for ( i = 1; i < strlen( token ); i++ ) + token[i - 1] = token[i]; + token[strlen( token ) - 2] = 0; + } + if ( feof( file ) ) return 0; + return 1; +} + +/* find a string in the file and set file stream to this position */ +int find_token( FILE *file, char *name, int type, int warning ) +{ + char token[MAX_TOKEN_LENGTH]; + + if ( type == RESET_FILE_POS ) + fseek( file, 0, SEEK_SET ); + while( read_token( file, token ) ) + if ( strequal( name, token ) ) { + /* adjust position this token must be read */ + fseek( file, -strlen( token ) -1, SEEK_CUR ); + return 1; + } + if ( warning == WARNING ) + fprintf( stderr, "find_token: warning: token '%s' not found\n", name ); + return 0; +} + +/* read argument string of a single assignment */ +char* get_arg( FILE *file, char *name, int type ) +{ + char token[MAX_TOKEN_LENGTH]; + char *arg = 0; + + /* search entry_name */ + if ( !find_token( file, name, type, WARNING ) ) return 0; + + /* token was found so read it */ + read_token( file, token ); + /* next token must be an equation */ + read_token( file, token ); + if ( token[0] != '=' ) { + fprintf( stderr, + "get_arg: line %i: '=' expected after token '%s' but found '%s' instead\n", get_line_number( file ), name, token ); + return 0; + } + /* get argument */ + read_token( file, token ); + if ( token[0] == 0 ) + fprintf( stderr, "get_arg: line %i: warning: argument for '%s' is empty\n", get_line_number( file ), name ); + arg = strdup( token ); +#ifdef FILE_DEBUG + printf( "get_arg: %s = %s\n", name, arg ); +#endif + return arg; +} + +/* read a cluster of arguments and return as static list */ +char** get_arg_cluster( FILE *file, char *name, int *count, int type, int warning ) +{ + List *args; + char token[MAX_TOKEN_LENGTH]; + char **arg_list = 0; + int i; + + *count = 0; + + /* search entry_name */ + if ( !find_token( file, name, type, warning ) ) return 0; + + /* init list */ + args = list_create( LIST_AUTO_DELETE, LIST_NO_CALLBACK ); + + /* read entry_name */ + read_token( file, token ); + /* next token must be an '(' */ + read_token( file, token ); + if ( token[0] != '(' ) { + fprintf( stderr, "get_arg_cluster: line %i: '(' expected after token '%s' but found '%s' instead\n", get_line_number( file ), name, token ); + return 0; + } + + /* read tokens and add to dynamic list until ')' occurs; if an '=' or '(' is read instead something + gone wrong */ + while ( 1 ) { + read_token( file, token ); + if ( token[0] == ')' ) break; + if ( token[0] == '(' || token[0] == '=' ) { + fprintf( stderr, "get_arg_cluster: line %i: ')' expected to terminate argument list of entry '%s' but found '%c' instead\n", get_line_number( file ), name, token[0] ); + list_clear( args ); + return 0; + } + /* everything's ok; add to list */ + list_add( args, strdup( token ) ); + } + + /* static argument list */ + arg_list = calloc( args->count, sizeof( char* ) ); + for ( i = 0; i < args->count; i++ ) + arg_list[i] = strdup( (char*)list_get( args, i ) ); + *count = args->count; + + list_delete( args ); + + return arg_list; +} + +/* free arg cluster */ +void delete_arg_cluster( char **cluster, int count ) +{ + int i; + if ( cluster ) { + for ( i = 0; i < count; i++ ) + if ( cluster[i] ) + FREE( cluster[i] ); + FREE( cluster ); + } +} + +/* count number of entries */ +int count_arg( FILE *file, char *name ) +{ + char token[MAX_TOKEN_LENGTH]; + int count = 0; + + fseek( file, 0, SEEK_SET ); + while ( read_token( file, token ) ) { + if ( strequal( name, token ) ) + count++; + } + return count; +} + +/* +==================================================================== +Swap these two pointers. +==================================================================== +*/ +void swap( char **str1, char **str2 ) +{ + char *dummy; + dummy = *str1; + *str1 = *str2; + *str2 = dummy; +} + +/* +==================================================================== +Return a list with all accessible files and directories in path +with the extension ext (if != 0). Don't show hidden files. +Root is the name of the parent directory that can't be left. If this +is next directory up '..' is not added. +==================================================================== +*/ +Text* get_file_list( char *path, char *ext, char *root ) +{ + Text *text = 0; + int i, j; + DIR *dir; + DIR *test_dir; + struct dirent *dirent = 0; + List *list = 0; + struct stat fstat; + char file_name[512]; + FILE *file; + int len; + + /* open this directory */ + if ( ( dir = opendir( path ) ) == 0 ) { + fprintf( stderr, "get_file_list: can't open parent directory '%s'\n", path ); + return 0; + } + + text = calloc( 1, sizeof( Text ) ); + + /* use dynamic list to gather all valid entries */ + list = list_create( LIST_AUTO_DELETE, LIST_NO_CALLBACK ); + /* read each entry and check if its a valid entry, then add it to the dynamic list */ + while ( ( dirent = readdir( dir ) ) != 0 ) { + /* hiden stuff is not displayed */ + if ( dirent->d_name[0] == '.' && dirent->d_name[1] != '.' ) continue; + /* check if it's the root directory */ + if ( root ) + if ( dirent->d_name[0] == '.' ) + if ( strlen( path ) > strlen( root ) ) + if ( !strncmp( path + strlen( path ) - strlen( root ), root, strlen( root ) ) ) + continue; + /* get stats */ + sprintf( file_name, "%s/%s", path, dirent->d_name ); + if ( stat( file_name, &fstat ) == -1 ) continue; + /* check directory */ + if ( S_ISDIR( fstat.st_mode ) ) { + if ( ( test_dir = opendir( file_name ) ) == 0 ) continue; + closedir( test_dir ); + sprintf( file_name, "*%s", dirent->d_name ); + list_add( list, strdup( file_name ) ); + } + else + /* check regular file */ + if ( S_ISREG( fstat.st_mode ) ) { + /* test it */ + if ( ( file = fopen( file_name, "r" ) ) == 0 ) continue; + fclose( file ); + /* check if this file has the proper extension */ + if ( ext ) + if ( !strequal( dirent->d_name + ( strlen( dirent->d_name ) - strlen( ext ) ), ext ) ) + continue; + list_add( list, strdup( dirent->d_name ) ); + } + } + /* close dir */ + closedir( dir ); + + /* convert to static list */ + text->count = list->count; + text->lines = calloc( list->count, sizeof( char* )); + for ( i = 0; i < text->count; i++ ) + text->lines[i] = strdup( (char*)list_get( list, i ) ); + list_delete( list ); + + /* sort this list: directories at top and everything in alphabetical order */ + if ( text->count > 0 ) + for ( i = 0; i < text->count - 1; i++ ) + for ( j = i + 1; j < text->count; j++ ) { + /* directory comes first */ + if ( text->lines[j][0] == '*' ) { + if ( text->lines[i][0] != '*' ) + swap( &text->lines[i], &text->lines[j] ); + else { + /* do not exceed buffer size of smaller buffer */ + len = strlen( text->lines[i] ); + if ( strlen( text->lines[j] ) < len ) len = strlen( text->lines[j] ); + if ( strncmp( text->lines[j], text->lines[i], len ) < 0 ) + swap( &text->lines[i], &text->lines[j] ); + } + } + else { + /* do not exceed buffer size of smaller buffer */ + len = strlen( text->lines[i] ); + if ( strlen( text->lines[j] ) < len ) len = strlen( text->lines[j] ); + if ( strncmp( text->lines[j], text->lines[i], len ) < 0 ) + swap( &text->lines[i], &text->lines[j] ); + } + } + + return text; +} diff --git a/project/jni/application/lbreakout2/client/file.h b/project/jni/application/lbreakout2/client/file.h new file mode 100644 index 000000000..5363a5d8c --- /dev/null +++ b/project/jni/application/lbreakout2/client/file.h @@ -0,0 +1,107 @@ +/*************************************************************************** + file.h - description + ------------------- + begin : Thu Jan 18 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + + +#ifndef __FILE_H +#define __FILE_H + +/* +this file contains function to work with files like +open,close,read/write binary/ascii data... +*/ + +/* maximum length of a token */ +enum { + MAX_TOKEN_LENGTH = 1024 +}; + +/* shall find_arg reset to beginning of file or use current position? */ +enum { + RESET_FILE_POS = 0, + FROM_CURRENT_FILE_POS +}; + +/* shall read_file_token go to next token or stay at end of current one */ +enum { + GO_TO_NEXT_TOKEN = 0, + STAY_AT_TOKEN +}; + +/* display warning if find_arg failed */ +enum { + NO_WARNING = 0, + WARNING +}; + +/* +==================================================================== +Test file in path as mode. +Return Value: True if sucessful +==================================================================== +*/ +int file_check( char *path, char *file, char *mode ); +/* +==================================================================== +Open file in path according to type (write, read, append) +Return Value: File handle if successful else Null +==================================================================== +*/ +enum { + FILE_WRITE, + FILE_READ, + FILE_APPEND +}; +FILE *file_open( char *path, char *fname, int type ); +/* +==================================================================== +Read all lines from file pointer and return as static array. +Resets the file pointer. Should only be used when reading a whole +file. +==================================================================== +*/ +char** file_read_lines( FILE *file, int *count ); + +/* check consistence of file (all brackets/comments closed). +will reset the file pos to the very beginning */ +int check_file_cons( FILE *file ); + +/* find a string in the file and set file stream to this position */ +int find_token( FILE *file, char *name, int type, int warning ); + +/* read argument string of a single assignment */ +char* get_arg( FILE *file, char *name, int type ); + +/* read a cluster of arguments and return as static list */ +char** get_arg_cluster( FILE *file, char *name, int *count, int type, int warning ); + +/* free arg cluster */ +void delete_arg_cluster( char **cluster, int count ); + +/* count number of entries */ +int count_arg( FILE *file, char*name ); + +/* +==================================================================== +Return a list with all accessible files and directories in path +with the extension ext (if != 0). Don't show hidden files. +Root is the name of the parent directory that can't be left. If this +is next directory up '..' is not added. +==================================================================== +*/ +Text* get_file_list( char *path, char *ext, char *root ); + +#endif diff --git a/project/jni/application/lbreakout2/client/frame.c b/project/jni/application/lbreakout2/client/frame.c new file mode 100644 index 000000000..65cc70457 --- /dev/null +++ b/project/jni/application/lbreakout2/client/frame.c @@ -0,0 +1,363 @@ +/*************************************************************************** + frame.c - description + ------------------- + begin : Fri Sep 7 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "config.h" +#include "player.h" +#include "display.h" +#include "frame.h" + +extern SDL_Surface *stk_display; +extern SDL_Surface *offscreen; +extern SDL_Surface *bkgnd; /* background + frame */ +extern SDL_Surface *brick_pic; /* brick graphics in a horizontal order */ +/* parts of the frame: left, top, right */ +extern SDL_Surface *frame_left, *frame_top, *frame_right; +extern SDL_Surface *frame_left_shadow, *frame_top_shadow, *frame_right_shadow; +extern SDL_Surface *frame_mp_left, *frame_mp_right; +extern SDL_Surface *frame_mp_left_shadow, *frame_mp_right_shadow; +extern SDL_Surface *lamps; /* life lamps */ +float score = 0; /* current score */ +int dest_score; /* final score */ +int score_x_offset = 54; /* display score at this position (right align)*/ +int score_x, score_y = BRICK_HEIGHT / 2 - 2; /* center position where to write score */ +int new_life_y; /* if new life lamp is drawn do this at this y position */ +int name_x = 404, name_y = BRICK_HEIGHT / 2 - 2; /* offset (right side of screen) */ +extern int shadow_size; +extern Config config; +int info_x; +int info_y; /* absolute position is info_y + info_offset */ +int info_offsets[EX_NUMBER]; /* offset at which extra info is displayed */ +int paddle_info_y[4]; +int paddle_info_offsets[EX_NUMBER]; /* specialized extras */ +extern SDL_Surface *extra_pic; +#ifdef AUDIO_ENABLED +extern StkSound *wav_life_up, *wav_life_down; +#endif +extern StkFont *display_font; +int warp_blink; +Delay warp_delay; +int warp_x, warp_y; +int warp_blinks; +extern SDL_Surface *warp_pic; +extern Game *game; + +/* +==================================================================== +Locals +==================================================================== +*/ + +/* +==================================================================== +Publics +==================================================================== +*/ + +/* +==================================================================== +Create frame by loading and assembling all graphics and loading +additional graphics. +==================================================================== +*/ +void frame_create() +{ + delay_set( &warp_delay, 500 ); + warp_x = stk_display->w - BRICK_WIDTH + ( BRICK_WIDTH - warp_pic->w ) / 2; + warp_y = stk_display->h - warp_pic->h; + warp_blink = 0; +} + +/* +==================================================================== +Inititate the frame to the according game type. +Set the position of the extras displayed, enable life lamps etc. +==================================================================== +*/ +void frame_init() +{ + /* setup position of extra info */ + info_x = stk_display->w - BRICK_WIDTH; + if ( game->game_type == GT_NETWORK ) { + /* general */ + info_y = 178; + info_offsets[EX_METAL] = 26; + info_offsets[EX_WEAK_BALL] = 26; + info_offsets[EX_EXPL_BALL] = 26; + info_offsets[EX_FAST] = 52; + info_offsets[EX_SLOW] = 52; + info_offsets[EX_CHAOS] = 78; + /* paddles */ + paddle_info_y[0] = 271; + paddle_info_y[1] = 7; + paddle_info_offsets[EX_SLIME] = 26; + paddle_info_offsets[EX_WEAPON] = 52; + paddle_info_offsets[EX_WALL] = 78; + paddle_info_offsets[EX_GOLDSHOWER] = 104; + paddle_info_offsets[EX_GHOST_PADDLE] = 130; + paddle_info_offsets[EX_BONUS_MAGNET] = 156; + paddle_info_offsets[EX_MALUS_MAGNET] = 156; + } + else { + /* in single player we ignore the second paddle + and model general and paddle0 extras so that + they result in the old layout */ + info_y = 48; paddle_info_y[0] = 48; + paddle_info_offsets[EX_GOLDSHOWER] = 30; + paddle_info_offsets[EX_SLIME] = 60; + info_offsets[EX_METAL] = 90; + info_offsets[EX_WEAK_BALL] = 90; + info_offsets[EX_EXPL_BALL] = 90; + paddle_info_offsets[EX_WALL] = 120; + paddle_info_offsets[EX_WEAPON] = 150; + info_offsets[EX_FAST] = 180; + info_offsets[EX_SLOW] = 180; + info_offsets[EX_CHAOS] = 210; + paddle_info_offsets[EX_GHOST_PADDLE] = 240; + paddle_info_offsets[EX_BONUS_MAGNET] = 270; + paddle_info_offsets[EX_MALUS_MAGNET] = 270; + } +} + +/* +==================================================================== +Free all resources created by frame_create() +==================================================================== +*/ +void frame_delete() +{ +} +/* +==================================================================== +Draw frame to offscreen and to bkgnd as frame won't change while +playing. +==================================================================== +*/ +void frame_draw() +{ + SDL_Surface *fr_left = (game->game_type==GT_LOCAL)?frame_left:frame_mp_left; + SDL_Surface *fr_right = (game->game_type==GT_LOCAL)?frame_right:frame_mp_right; + SDL_Surface *fr_left_shadow = + (game->game_type==GT_LOCAL)?frame_left_shadow:frame_mp_left_shadow; + SDL_Surface *fr_right_shadow = + (game->game_type==GT_LOCAL)?frame_right_shadow:frame_mp_right_shadow; + /* left and right part are always drawn */ + /* left part */ + stk_surface_alpha_blit( fr_left_shadow, 0,0,-1,-1, + offscreen, shadow_size, shadow_size, SHADOW_ALPHA ); + stk_surface_blit( fr_left, 0,0,-1,-1, offscreen, 0,0 ); + stk_surface_alpha_blit( fr_left_shadow, 0,0,-1,-1, + bkgnd, shadow_size, shadow_size, SHADOW_ALPHA ); + stk_surface_blit( fr_left, 0,0,-1,-1, bkgnd, 0,0 ); + if ( game->game_type == GT_LOCAL ) { + /* add top */ + stk_surface_alpha_blit( frame_top_shadow, 0,0,-1,-1, + offscreen, fr_left->w + shadow_size, shadow_size, SHADOW_ALPHA ); + stk_surface_blit( + frame_top, 0,0,-1,-1, offscreen, fr_left->w,0 ); + stk_surface_alpha_blit( frame_top_shadow, 0,0,-1,-1, + bkgnd, fr_left->w + shadow_size, shadow_size, SHADOW_ALPHA ); + stk_surface_blit( + frame_top, 0,0,-1,-1, bkgnd, fr_left->w,0 ); + } + /* right part */ + stk_surface_alpha_blit( fr_right_shadow, 0,0,-1,-1, + offscreen, stk_display->w - fr_right_shadow->w + shadow_size, + shadow_size, SHADOW_ALPHA ); + stk_surface_blit( fr_right, 0,0,-1,-1, offscreen, + stk_display->w - fr_right->w,0 ); + stk_surface_alpha_blit( fr_right_shadow, 0,0,-1,-1, + bkgnd, stk_display->w - fr_right_shadow->w + shadow_size, + shadow_size, SHADOW_ALPHA ); + stk_surface_blit( fr_right, 0,0,-1,-1, bkgnd, + stk_display->w - fr_right->w,0 ); +} +/* +==================================================================== +Add life lamps at left side of frame in offscreen +==================================================================== +*/ +void frame_draw_lives( int lives, int max_lives ) +{ + int i,y; + /* substract one life to have the same result like in old LBreakout */ + /* at maximum ten lamps may be displayed */ + for ( i = 0; i < 10; i++ ) { + if ( i < lives - 1 ) + y = BRICK_HEIGHT; + else + if ( i < max_lives - 1 ) + y = 0; + else + y = BRICK_HEIGHT * 2; + stk_surface_blit( lamps, 0,y, BRICK_WIDTH, BRICK_HEIGHT, + offscreen, 0, ( MAP_HEIGHT - i - 1 ) * BRICK_HEIGHT ); + } + /* get position of next lamp */ + new_life_y = stk_display->h - lives * BRICK_HEIGHT; +} +/* +==================================================================== +Add one new life at offscreen and screen (as this will happen in +game ) +==================================================================== +*/ +void frame_add_life() +{ + if ( !game->extra_active[EX_DARKNESS] ) { + stk_surface_blit( lamps, 0, BRICK_HEIGHT, + BRICK_WIDTH, BRICK_HEIGHT, + stk_display, 0, new_life_y ); + stk_display_store_drect(); + } + new_life_y -= BRICK_HEIGHT; +#ifdef AUDIO_ENABLED + stk_sound_play_x( 20, wav_life_up ); +#endif +} +/* +==================================================================== +Switch of a life lamp +==================================================================== +*/ +void frame_remove_life() +{ + new_life_y += BRICK_HEIGHT; + if ( new_life_y >= stk_display->h ) return; + if ( !game->extra_active[EX_DARKNESS] ) { + stk_surface_blit( lamps, 0, 0, BRICK_WIDTH, BRICK_HEIGHT, + stk_display, 0, new_life_y ); + stk_display_store_drect(); + } +#ifdef AUDIO_ENABLED + stk_sound_play_x( 20, wav_life_down ); +#endif +} +/* +==================================================================== +Display extra information on right side of screen. +==================================================================== +*/ +void frame_info_hide() +{ + int i, j; + if ( !config.bonus_info ) return; + for ( i = 0; i < EX_NUMBER; i++ ) + if ( info_offsets[i] > 0 && game->extra_active[i] ) { + stk_surface_blit( offscreen, info_x, info_y + info_offsets[i], + BRICK_WIDTH, BRICK_HEIGHT, + stk_display, info_x, info_y + info_offsets[i] ); + stk_display_store_drect(); + } + for ( i = 0; i < EX_NUMBER; i++ ) + for ( j = 0; j < game->paddle_count; j++ ) + if ( paddle_info_offsets[i] > 0 && game->paddles[j]->extra_active[i] ) { + stk_surface_blit( offscreen, info_x, + paddle_info_y[j] + paddle_info_offsets[i], + BRICK_WIDTH, BRICK_HEIGHT, + stk_display, info_x, paddle_info_y[j] + paddle_info_offsets[i] ); + stk_display_store_drect(); + } +} +void frame_info_show() +{ + char str[12]; + int i, j; + if ( !config.bonus_info ) return; + display_font->align = STK_FONT_ALIGN_CENTER_X | STK_FONT_ALIGN_CENTER_Y; + for ( i = 0; i < EX_NUMBER; i++ ) { + if ( info_offsets[i] > 0 && game->extra_active[i] ) { + /* picture */ + stk_surface_fill( + stk_display, info_x, info_y + info_offsets[i], + BRICK_WIDTH, BRICK_HEIGHT, 0x0 ); + stk_surface_alpha_blit( extra_pic, i * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + stk_display, info_x, info_y + info_offsets[i], 128 ); + /* remaining extra_time */ + sprintf(str, "%i", (game->extra_time[i] / 1000) + 1); + /* write text */ + stk_font_write( display_font, stk_display, + info_x + ( BRICK_WIDTH >> 1 ), info_y + info_offsets[i] + ( BRICK_HEIGHT >> 1 ), + -1, str ); + } + } + for ( i = 0; i < EX_NUMBER; i++ ) + for ( j = 0; j < game->paddle_count; j++ ) + if ( paddle_info_offsets[i] > 0 && game->paddles[j]->extra_active[i] ) { + if ( i == EX_WALL && game->paddles[j]->extra_time[i] <= 0 ) continue; + /* picture */ + stk_surface_fill( + stk_display, info_x, paddle_info_y[j] + paddle_info_offsets[i], + BRICK_WIDTH, BRICK_HEIGHT, 0x0 ); + stk_surface_alpha_blit( extra_pic, i * BRICK_WIDTH, 0, + BRICK_WIDTH, BRICK_HEIGHT, + stk_display, info_x, paddle_info_y[j] + paddle_info_offsets[i], 128 ); + /* remaining extra_time */ + sprintf(str, "%i", (game->paddles[j]->extra_time[i] / 1000) + 1); + /* write text */ + stk_font_write( display_font, stk_display, + info_x + ( BRICK_WIDTH >> 1 ), + paddle_info_y[j] + paddle_info_offsets[i] + ( BRICK_HEIGHT >> 1 ), + -1, str ); + } +} + +/* +==================================================================== +Blink the warp icon. +==================================================================== +*/ +void frame_warp_icon_hide() +{ + if ( game->game_type != GT_LOCAL ) return; + if ( game->level_type == LT_PINGPONG ) return; + if ( game->bricks_left > game->warp_limit ) return; + stk_surface_blit( offscreen, warp_x,warp_y,-1,-1, + stk_display, warp_x, warp_y ); + stk_display_store_drect(); +} +void frame_warp_icon_show() +{ + if ( game->game_type != GT_LOCAL ) return; + if ( game->level_type == LT_PINGPONG ) return; + if ( game->warp_limit == 0 ) return; + if ( game->bricks_left > game->warp_limit ) return; + if ( !warp_blink ) return; + if ( !game->extra_active[EX_DARKNESS] ) + stk_surface_blit( warp_pic, 0,0,-1,-1, + stk_display, warp_x, warp_y ); + else + stk_surface_alpha_blit( warp_pic, 0,0,-1,-1, + stk_display, warp_x, warp_y, 128 ); +} +void frame_warp_icon_update( int ms ) +{ + //printf( "%i > %i\n", game->bricks_left, game->warp_limit ); + if ( game->game_type != GT_LOCAL ) return; + if ( game->level_type == LT_PINGPONG ) return; + if ( game->bricks_left > game->warp_limit ) return; + if ( warp_blinks == 0 ) { + warp_blink = 1; + return; + } + if ( delay_timed_out( &warp_delay, ms ) ) { + warp_blink = !warp_blink; + if ( warp_blink ) + warp_blinks--; + } +} diff --git a/project/jni/application/lbreakout2/client/frame.h b/project/jni/application/lbreakout2/client/frame.h new file mode 100644 index 000000000..c596bf950 --- /dev/null +++ b/project/jni/application/lbreakout2/client/frame.h @@ -0,0 +1,85 @@ +/*************************************************************************** + frame.h - description + ------------------- + begin : Fri Sep 7 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* +==================================================================== +This file handles all the graphical stuff concering the frame +including drawing of score, lifes and bonus info. +==================================================================== +*/ + +/* +==================================================================== +Create frame by loading and assembling all graphics and loading +additional graphics. +==================================================================== +*/ +void frame_create(); +/* +==================================================================== +Inititate the frame to the according game type. +Set the position of the extras displayed, enable life lamps etc. +==================================================================== +*/ +void frame_init(); +/* +==================================================================== +Free all resources created by frame_create() +==================================================================== +*/ +void frame_delete(); +/* +==================================================================== +Draw frame to offscreen. +==================================================================== +*/ +void frame_draw(); +/* +==================================================================== +Add life lamps at left side of frame in offscreen +==================================================================== +*/ +void frame_draw_lives( int lives, int max_lives ); +/* +==================================================================== +Add one new life at offscreen and screen (as this will happen in +game ) +==================================================================== +*/ +void frame_add_life(); +/* +==================================================================== +Switch of a life lamp +==================================================================== +*/ +void frame_remove_life(); +/* +==================================================================== +Display extra information on right side of screen. +==================================================================== +*/ +void frame_info_hide(); +void frame_info_show(); + +/* +==================================================================== +Blink the warp icon. +==================================================================== +*/ +void frame_warp_icon_hide(); +void frame_warp_icon_show(); +void frame_warp_icon_update( int ms ); diff --git a/project/jni/application/lbreakout2/client/game.c b/project/jni/application/lbreakout2/client/game.c new file mode 100644 index 000000000..03234dfbf --- /dev/null +++ b/project/jni/application/lbreakout2/client/game.c @@ -0,0 +1,1531 @@ +/*************************************************************************** + local_game.c - description + ------------------- + begin : Thu Sep 6 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "lbreakout.h" +#include "../game/game.h" +#include "../gui/gui.h" +#include "client_data.h" +#include "event.h" +#include "config.h" +#include "shrapnells.h" +#include "player.h" +#include "display.h" +#include "paddle.h" +#include "chart.h" +#include "shine.h" +#include "credit.h" +#include "bricks.h" +#include "shots.h" +#include "frame.h" +#include "balls.h" +#include "extras.h" +#include "help.h" +#include "game.h" +#include "comm.h" +#include "slot.h" +#include "manager.h" + +SDL_Surface *bkgnd = 0; /* current background picture */ +extern SDL_Surface *nuke_bkgnd; /* nuke background */ +SDL_Surface *offscreen = 0; /* buffer with frame, background and bricks */ +extern StkFont *font; /* standard font */ +extern Config config; /* lbreakout config struct */ +extern int stk_quit_request; /* terminate game */ +extern SDL_Surface *stk_display; +extern SDL_Surface *brick_pic; +extern int player_count; +extern Player players[MAX_PLAYERS]; /* player infos */ +#ifdef AUDIO_ENABLED +extern StkSound *wav_click; +extern StkSound *wav_damn, *wav_dammit, *wav_wontgiveup, *wav_excellent, *wav_verygood; +#endif +extern int ball_pic_x_offset; +extern int paddle_cw; +extern List *client_users; +extern ClientUser *client_user; +extern GuiWidget *list_users; +extern char pause_chatter[CHAT_LINE_COUNT][CHAT_LINE_WIDTH]; +extern GuiWidget *gui_key_widget; +extern GuiWidget *gui_clicked_widget; +extern GuiWidget *gui_focused_widget; +extern GuiWidget *dlg_pauseroom, *dlg_chatroom; + +extern List *levelset_names; +Player *cur_player = 0; /* current player */ +Paddle *l_paddle = 0; /* locally controlled paddle */ +Paddle *r_paddle = 0; /* remotely controlled paddle */ +LevelSet *game_set; /* set that is played */ +Game *local_game = 0; /* in a local game the remote side is faked in this + game context to have just one main loop for both game + types */ +Game *game = 0; /* local/network game context */ +int game_round; /* id of current round in network game */ +int game_stats[2][7]; /* network game stats */ +int stats_received = 0; +int game_over = 0; /* network game is over */ +int allow_disintegrate = 1; /* wether Plane of Inner Stability may be entered */ +char best_name[32]; +int best_score; /* result of first place in chart of local set */ +int showing_best = 0; /* if true best score is shown, thus display should not be updated */ +Display *display_score[2]; /* either score or frags */ +Display *display_player[2]; /* player name and lifes or wins */ +Display *bl_display; /* display some special data of bonus levels */ +extern int client_state; +extern int warp_blinks, warp_blink; +extern SDL_Surface *paddle_pic, *weapon_pic, *ball_pic, *extra_pic, *shot_pic; +extern StkFont *display_font; +extern int bkgnd_count; +int bkgnd_ids[MAX_LEVELS]; /* random background ids changed everytime a game is started */ +int client_comm_delay; /* delay between communications */ +int no_comm_since; /* time passed this last comm */ +extern char client_name[16]; /* our local username */ +int gameSeed = 0; /* last used seed for freakout game */ + +extern int current_player; +extern Item *item_resume_0; + +extern void select_chart( char *name, int update ); + +/* +==================================================================== +Locals +==================================================================== +*/ + + +/* initiate the level of the game context by using the player's + * snapshot. the snapshot must've been previously set either by + * net update or locally. 'l_pos' is either PADDLE_BOTTOM or TOP + * indicating which paddle client controls in network game. + */ +static int init_level( Player *player, int l_pos ) +{ + int length; + char str[32]; + + /* init level by replacing with the players snapshot. this will + * screw the total brick count thus stats are useless for local + * game but they are not used anyway as the remote/local game + * context contains the real stats */ + if ( game->game_type == GT_LOCAL ) + game_init( local_game, &player->snapshot ); + game_init( game, &player->snapshot ); + /* if special level copy the local game data as snapshot */ + if ( game->game_type == GT_LOCAL ) + if ( player->snapshot.type!=LT_NORMAL ) + memcpy( game->bricks, local_game->bricks, sizeof(game->bricks) ); + + /* initiate frame for game type */ + frame_init(); + + /* create offscreen */ + offscreen = stk_surface_create( SDL_SWSURFACE, stk_display->w, stk_display->h ); + SDL_SetColorKey( offscreen, 0, 0 ); + + /* add&create background */ + if ( game->game_type == GT_LOCAL ) + bkgnd_draw( bkgnd, bkgnd_ids[player->level_id] ); + else + bkgnd_draw( bkgnd, -1 ); + /* add frame */ + frame_draw(); + /* add bricks */ + bricks_draw(); + /* draw lives */ + if ( game->game_type == GT_LOCAL ) + frame_draw_lives( player->lives, game->diff->max_lives ); + + /* determine what is the local and what is the remote paddle and + * connect the proper players with each paddle */ + if ( game->game_type == GT_LOCAL ) { + l_paddle = game->paddles[PADDLE_BOTTOM]; + l_paddle->player = player; + r_paddle = 0; + } else { + if ( l_pos == PADDLE_BOTTOM ) { + l_paddle = game->paddles[PADDLE_BOTTOM]; + r_paddle = game->paddles[PADDLE_TOP]; + } else { + l_paddle = game->paddles[PADDLE_TOP]; + r_paddle = game->paddles[PADDLE_BOTTOM]; + } + /* player 0 is always the local player */ + l_paddle->player = &players[0]; + r_paddle->player = &players[1]; + + /* let top paddle use alternative graphics if any */ + if ( paddle_pic->w > 3*paddle_cw ) + game->paddles[PADDLE_TOP]->pic_x_offset = 3*paddle_cw; + } + player->paddle_id = l_pos; + + /* displays */ + if ( game->game_type == GT_LOCAL ) { + /* we put these displays to the old positions + at the top of the frame */ + sprintf( str, "%s", player->name ); + length = strlen(best_name); + if (strlen(player->name)>length ) + length = strlen(player->name); + length *= 8; + display_player[0] = displays_add( 402, 0, + length + 4, 16, str, player->lives, 0 ); + display_score[0] = displays_add( stk_display->w - 52 - 76, 0, + 76, 16, "", player->stats.total_score, 9 ); + display_player[0]->use_alpha = 0; + display_score[0]->use_alpha = 0; + /* for special levels we need a small display in the right lower corner */ + if (game->isBonusLevel) + bl_display = displays_add( + stk_display->w - BRICK_WIDTH - 20 - 76, + ( MAP_HEIGHT - 1 ) * BRICK_HEIGHT + 2, + 76, 16, "", 0, 9 ); + else + bl_display = 0; + } else { + /* wins */ + sprintf( str, "%s ~x%i", + game->paddles[0]->player->name, + game->paddles[0]->player->stats.wins ); + length = strlen( str ) * 8; + display_player[0] = displays_add( + BRICK_WIDTH + 20, ( MAP_HEIGHT - 1 ) * BRICK_HEIGHT + 2, + length + 4, 16, str, 0, 0 ); + sprintf( str, "%s ~x%i", + game->paddles[1]->player->name, + game->paddles[1]->player->stats.wins ); + length = strlen( str ) * 8; + display_player[1] = displays_add( + BRICK_WIDTH + 20, 2, length + 4, 16, str, 0, 0 ); + /* scores */ + display_score[0] = displays_add( + stk_display->w - BRICK_WIDTH - 20 - 76, + ( MAP_HEIGHT - 1 ) * BRICK_HEIGHT + 2, + 76, 16, "", game->paddles[0]->score, 9 ); + display_score[1] = displays_add( + stk_display->w - BRICK_WIDTH - 20 - 76, 2, + 76, 16, "", game->paddles[1]->score, 9 ); + } + + /* initiate credit */ + if ( game->game_type == GT_LOCAL && game_set ) + credit_init( game->title, game->author, + player->level_id, game_set->count ); + else + credit_init( game->title, game->author, + player->level_id, 0/*don't display info*/ ); + + /* show offscreen */ + stk_surface_blit( offscreen, 0,0,-1,-1, stk_display, 0,0 ); + + /* no refresh rect as we want to use dim effect */ + return 1; +} + +static void finalize_level( void ) +{ + /* set alpha keys to OPAQUE */ + SDL_SetAlpha( paddle_pic, 0,0 ); + SDL_SetAlpha( weapon_pic, 0,0 ); + SDL_SetAlpha( extra_pic, 0,0 ); + SDL_SetAlpha( ball_pic, 0,0 ); + SDL_SetAlpha( shot_pic, 0,0 ); + SDL_SetAlpha( display_font->surface, 0,0 ); + + /* reset ball graphic */ + ball_pic_x_offset = 0; + + /* reset shrapnells */ + shrapnells_reset(); + /* reset shine */ + shine_reset(); + /* reset explosions */ + exps_clear(); + exps_set_dark( 0 ); + + /* delete offscreen */ + stk_surface_free( &offscreen ); + + /* clear credits */ + credit_clear(); + + /* clear displays */ + displays_clear(); + + /* clear game contexts */ + if ( game->game_type == GT_LOCAL ) + game_finalize( local_game ); + game_finalize( game ); +} + +/* display formatted info + score table if multiple players */ +static void display_score_table( char *format, ... ) +{ + va_list args; + int i; + char info[256], buf[32]; + + va_start( args, format ); + vsnprintf( info, 64, format, args ); + va_end( args ); + + if ( player_count > 1 ) { + strcat( info, "##" ); + for ( i = 0; i < player_count; i++ ) { + /* add player and score */ + sprintf( buf, "#%12s %10i", " ", + players[i].stats.total_score ); + strcpy( buf + 1, players[i].name ); + buf[strlen(players[i].name)+1] = 32; + strcat( info, buf ); + } + } + + display_text( font, info ); + stk_display_update( STK_UPDATE_ALL ); +} + +static void display_bonus_level_score() +{ + double avgRatio = 0; + char info[256]; + info[0] = 0; + if (local_game->blNumCompletedRuns==0) + avgRatio = 0; + else + avgRatio = local_game->blRatioSum/local_game->blNumCompletedRuns; + switch (local_game->level_type) + { + case LT_JUMPING_JACK: + display_text( font, _("%s, you hit %d Jumping Jacks!##Your average ratio: %5d%%# Your score: %6d"), + cur_player->name,local_game->blNumCompletedRuns, + (int)(100.0*avgRatio),local_game->totalBonusLevelScore); + break; + case LT_OUTBREAK: + display_text( font, _("%s, you stopped %d Outbreaks!##Your average ratio: %5d%%# Your score: %6d"), + cur_player->name,local_game->blNumCompletedRuns, + (int)(100.0*avgRatio),local_game->totalBonusLevelScore); + break; + case LT_BARRIER: + display_text( font, _("%s, you broke through %d Barriers!##Your average ratio: %5d%%# Your score: %6d"), + cur_player->name,local_game->blNumCompletedRuns, + (int)(100.0*avgRatio),local_game->totalBonusLevelScore); + break; + case LT_SITTING_DUCKS: + display_text( font, _("%s, you shot %d Sitting Ducks!##Your score: %6d"), + cur_player->name,local_game->blNumCompletedRuns, + local_game->totalBonusLevelScore); + break; + case LT_HUNTER: + display_text( font, _("%s, you hunted down %d bricks!##Your average ratio: %5d%%# Your score: %6d"), + cur_player->name,local_game->blNumCompletedRuns, + (int)(100.0*avgRatio),local_game->totalBonusLevelScore); + break; + case LT_DEFENDER: + display_text( font, _("%s, you stopped %d waves#killing a total of %d invaders!##Your average ratio: %5d%%# Your score: %6d"), + cur_player->name,local_game->blNumCompletedRuns,local_game->blTotalNumKilledInvaders, + (int)(100.0*avgRatio),local_game->totalBonusLevelScore); + break; + } + stk_display_update( STK_UPDATE_ALL ); +} + +/* begin frame by hiding all objects */ +static void begin_frame( void ) +{ + int i; + + displays_hide(); + frame_info_hide(); + extras_hide(); + for ( i = 0; i < game->paddle_count; i++ ) { + paddle_hide( game->paddles[i] ); + paddle_ammo_hide( game->paddles[i] ); + } + balls_hide(); + shots_hide(); + shrapnells_hide(); + walls_hide(); + frame_warp_icon_hide(); + shine_hide(); + exps_hide(); + credit_hide(); +} + +/* end frame by drawing all objects and updating the screen */ +static void end_frame( void ) +{ + int i; + + /* show -- some things will be missing if darkness is enabled */ + balls_show_shadow(); + extras_show_shadow(); + for ( i = 0; i < game->paddle_count; i++ ) + paddle_show_shadow( game->paddles[i] ); + shots_show(); + if ( config.debris_level == DEBRIS_BELOW_BALL ) { + exps_show(); + if ( !game->extra_active[EX_DARKNESS] ) { + shrapnells_show(); + frame_info_show(); + } + } + if ( config.ball_level == BALL_ABOVE_BONUS ) + extras_show(); + balls_show(); + if ( config.ball_level == BALL_BELOW_BONUS ) + extras_show(); + for ( i = 0; i < game->paddle_count; i++ ) + paddle_show( game->paddles[i] ); + if ( !game->extra_active[EX_DARKNESS] ) walls_show(); + shine_show(); + if ( config.debris_level == DEBRIS_ABOVE_BALL ) { + exps_show(); + if ( !game->extra_active[EX_DARKNESS] ) { + shrapnells_show(); + frame_info_show(); + } + } + frame_warp_icon_show(); + displays_show(); + for ( i = 0; i < game->paddle_count; i++ ) + paddle_ammo_show( game->paddles[i] ); + credit_show(); +} + +/* grab/ungrab input of actual game */ +static void grab_input( int grab ) +{ + if ( grab ) { + SDL_ShowCursor(0); + SDL_WM_GrabInput( SDL_GRAB_ON ); + SDL_GetRelativeMouseState(0,0); + } else { + SDL_ShowCursor(1); + SDL_WM_GrabInput( SDL_GRAB_OFF ); + } +} + +/* switch client to new state */ +void set_state( int newstate ) +{ + if ( client_state == newstate ) return; + + if ( newstate == CS_PLAY ) + grab_input( 1 ); + if ( client_state == CS_PLAY ) + grab_input( 0 ); + if ( client_state == CS_CONFIRM_WARP || + client_state == CS_CONFIRM_RESTART || + client_state == CS_CONFIRM_QUIT || + client_state == CS_CONFIRM_CONTINUE || + client_state == CS_GET_READY || + client_state == CS_PAUSE || + client_state == CS_FINAL_PLAYER_INFO || + client_state == CS_GET_READY_FOR_NEXT_LEVEL || + client_state == CS_RECV_LEVEL || + client_state == CS_ROUND_RESULT || + client_state == CS_RECV_STATS || + client_state == CS_FATAL_ERROR ) { + /* show offscreen */ + if ( offscreen ) { + stk_surface_blit( offscreen, 0,0,-1,-1, stk_display, 0,0 ); + end_frame(); + } + /* do not refresh when coming from RECV_LEVEL as a GET_READY + * will follow */ + if ( client_state != CS_RECV_LEVEL ) + if ( client_state != CS_ROUND_RESULT ) + if ( client_state != CS_RECV_STATS ); + stk_display_update( STK_UPDATE_ALL ); + } + + client_state = newstate; + stk_timer_reset(); +} + +/* Fade all animations until they disappear */ +static void fade_anims() +{ + float alpha = 255.0; + int ms, i; + stk_timer_reset(); + if ( game->game_type == GT_LOCAL && game->winner != PADDLE_BOTTOM ) + frame_remove_life(); + while ( alpha > 0 ) { + displays_hide(); + for ( i = 0; i < game->paddle_count; i++ ) + paddle_hide( game->paddles[i] ); + balls_hide(); + extras_hide(); + shrapnells_hide(); + shots_hide(); + walls_hide(); + credit_hide(); + ms = stk_timer_get_time(); + alpha -= 0.3 * ms; + if ( alpha < 0 ) alpha = 0; + shrapnells_update( ms ); + for ( i = 0; i < game->paddle_count; i++ ) + paddle_alphashow( game->paddles[i], alpha ); + balls_alphashow( alpha ); + extras_alphashow( alpha ); + shots_alphashow( alpha ); + shrapnells_show(); + walls_alphashow( alpha ); + displays_show(); + credit_alphashow( alpha ); + stk_display_update( STK_UPDATE_RECTS ); + } +} + +void open_pause_chat( char *text ) +{ + set_state( CS_PAUSE ); + + /* clear pause_chatter */ + memset( pause_chatter, 0, sizeof( pause_chatter ) ); + /* clear global gui widgets */ + gui_focused_widget = 0; + gui_clicked_widget = 0; + gui_key_widget = 0; + /* use 'text' as initial chatter */ + client_add_pausechatter( text, 1 ); + /* gray screen */ + stk_surface_gray( stk_display, 0,0,-1,-1, 1 ); + /* show pauseroom */ + gui_widget_show( dlg_pauseroom ); + stk_display_update( STK_UPDATE_ALL ); + + /* disable event filter */ + SDL_SetEventFilter( 0 ); + /* disable client_recv which is called as time event */ + gui_widget_disable_event( dlg_chatroom, GUI_TIME_PASSED ); +} + +void close_pause_chat( void ) +{ + gui_widget_hide( dlg_pauseroom ); + set_state( CS_PLAY ); + + /* enable event filter */ + SDL_SetEventFilter( event_filter ); + gui_widget_enable_event( dlg_chatroom, GUI_TIME_PASSED ); +} + +/* Pause/unpause a local/network game. */ +static void client_set_pause( int pause ) +{ + if (game_set==0) return; /* test level */ + if (pause&&client_state==CS_PLAY) + { + /* in local game simply darken the screen, in + * network game enter the pausechatroom */ + if ( game->game_type == GT_LOCAL ) { + set_state(CS_PAUSE); + display_text( font, _("Pause") ); + } + else { + open_pause_chat( _("You have paused the game.") ); + comm_send_short( MSG_PAUSE ); + } + } + else if (!pause&&client_state==CS_PAUSE) + { + /* unpause (local game only)*/ + if ( game->game_type == GT_LOCAL ) + set_state(CS_PLAY); + } +} + +/* modify the client and its state according to the key pressed */ +static int handle_default_key( int key, int *abort ) +{ + SDL_Surface *buffer; + + switch ( key ) { + case SDLK_F1: + case SDLK_h: + if ( client_state != CS_PLAY ) break; + if ( game->game_type == GT_NETWORK ) break; /* only for single player */ + grab_input(0); + help_run(); + grab_input(1); + return 1; + case SDLK_q: + case SDLK_ESCAPE: + /* recv_stats or final_stats means we already broke up + * the game so ESC will directly quit */ + if ( client_state == CS_RECV_STATS || client_state == CS_FINAL_STATS ) { + *abort = 1; + break; + } + + if ( client_state == CS_CONFIRM_QUIT ) break; + if ( client_state == CS_PAUSE ) break; + if ( players_count() == 0 ) break; + set_state(CS_CONFIRM_QUIT); + if ( game->game_type == GT_LOCAL && game_set != 0 /*not testing a level*/ ) + display_text( font, _("Quit Game? y/n#(If yes, this game may be resumed later.#No highscore entry is created yet.)") ); + else + display_text( font, _("Quit Game? y/n") ); + return 1; + case SDLK_r: + if ( client_state != CS_PLAY ) break; + if ( game->game_type == GT_NETWORK ) break; /* only for single player */ + if ( game_set == 0 ) break; /* test level */ + if ( cur_player->lives < 2 ) break; + set_state(CS_CONFIRM_RESTART); + display_text( font, _("Restart Level? y/n") ); + return 1; + case SDLK_d: + if ( client_state != CS_PLAY ) break; + if ( game->game_type == GT_NETWORK ) break; /* only for single player */ + if ( !allow_disintegrate ) break; + if ( game->level_type != LT_NORMAL ) break; /* not in bonus levels */ + grab_input(0); + game_nuke(); + grab_input(1); + return 1; + case SDLK_f: + buffer = stk_surface_create( SDL_SWSURFACE, 640, 480 ); + SDL_BlitSurface( stk_display, 0, buffer, 0 ); + config.fullscreen = !config.fullscreen; + stk_display_apply_fullscreen( config.fullscreen ); + SDL_BlitSurface( buffer, 0, stk_display, 0 ); + stk_display_update( STK_UPDATE_ALL); + SDL_FreeSurface( buffer ); + return 1; + case SDLK_s: +#ifdef AUDIO_ENABLED + config.sound = !config.sound; + stk_audio_enable_sound( config.sound ); +#endif + return 1; + case SDLK_a: + config.anim++; + if ( config.anim >= 4 ) config.anim = 0; + return 1; + case SDLK_TAB: + stk_display_take_screenshot(); + return 1; + case SDLK_t: + return 0; + case SDLK_p: + if ( client_state == CS_PLAY ) + client_set_pause(1); + else if (client_state==CS_PAUSE) + client_set_pause(0); + return 1; + default: + if ( client_state != CS_PLAY ) break; + if ( game->game_type != GT_LOCAL ) break; + if ( game->bricks_left > game->warp_limit ) break; + if ( game_set == 0 ) break; /* test level */ + if ( game->level_type != LT_NORMAL ) break; /* not in bonus levels */ + if ( key == config.k_warp ) { + set_state(CS_CONFIRM_WARP); + display_text( font, _("Warp to next level? y/n") ); + return 1; + } + break; + } + + return 0; +} + +void update_bonus_level_display() +{ + /* Michael! What are you doing? You're messing this all up! + Who the fuck are you? + Your conscience! You can do better! I can do this way + cleaner. I know! This is just another terrible hack. Stop it! + Shhiiiiit, who cares? It's too goddamn late you bastard. You should + have come up with that earlier. This game is down on its knees + already. Dying from hacks spreading like cancer... */ + switch (local_game->level_type) + { + case LT_JUMPING_JACK: + display_set_value(bl_display,(local_game->bricks[local_game->bl_jj_mx][local_game->bl_jj_my].exp_time+500)/1000); + break; + case LT_OUTBREAK: + display_set_value(bl_display,local_game->blCancerCount); + break; + case LT_BARRIER: + display_set_value(bl_display,local_game->blBarrierMaxMoves-local_game->blBarrierMoves); + break; + case LT_SITTING_DUCKS: + display_set_value(bl_display,local_game->blMaxScore); + break; + case LT_HUNTER: + display_set_value(bl_display,local_game->blHunterTimeLeft/1000); + break; + case LT_DEFENDER: + display_set_value(bl_display,local_game->blInvaderLimit-local_game->blNumKilledInvaders); + break; + } +} + +/* update local objects (shrapnells,extras,explosions...) and communicate + * every client_comm_delay seconds either with real or fake server */ +static void update_game( int ms ) +{ + int i; + + /* run the fake server game */ + if ( game->game_type == GT_LOCAL ) { + game_set_current( local_game ); + game_update( ms ); + game_set_current( game ); + } + + /* local animations and movements */ + for ( i = 0; i < game->paddle_count; i++ ) + client_paddle_update( game->paddles[i], ms ); + client_shots_update( ms ); + client_balls_update( ms ); + client_extras_update( ms ); + client_walls_update( ms ); + shrapnells_update( ms ); + frame_warp_icon_update( ms ); + shine_update( ms ); + exps_update( ms ); + displays_update( ms ); + credit_update( ms ); + + /* communicate */ + if ( (no_comm_since+=ms) >= client_comm_delay ) { + no_comm_since -= client_comm_delay; + + /* send paddle state */ + comm_send_paddle( l_paddle ); + + /* receive game data from local or remote server and + * apply it to the game context. */ + comm_recv(); + + /* update score displays */ + if (!showing_best) + display_set_value( + display_score[0], + game->paddles[0]->player->stats.total_score + + game->paddles[0]->score ); + if ( game->game_type == GT_NETWORK ) + display_set_value( + display_score[1], + game->paddles[1]->player->stats.total_score + + game->paddles[1]->score ); + + /* update bonus level information */ + if (bl_display) update_bonus_level_display(); + } +} + +/* give us a damn or excellent depending on the outcome of the level. + * the result for network game must've been received already so that + * game::level_over and game::winner are valid entries. */ +static void play_speech( void ) +{ +#ifdef AUDIO_ENABLED + if ( !config.speech ) + return; + if ( game->winner == -1 ) + return; /* draw */ + + if ( game->paddles[game->winner] == l_paddle ) { + if ( rand() % 2 ) + stk_sound_play( wav_excellent ); + else + stk_sound_play( wav_verygood ); + } else { + if (!config.badspeech) /* no swearing! */ + return; + if ( rand() % 2 ) + stk_sound_play( wav_damn ); + else + stk_sound_play( wav_dammit ); + } +#endif +} + +/* check players of local game wether they entered a highscore */ +static void check_highscores( void ) +{ + int i; + + chart_clear_new_entries(); + for ( i = 0; i < config.player_count; i++ ) + chart_add( + chart_set_query(game_set->name), + players[i].name, + players[i].level_id + 1, + players[i].stats.total_score ); + chart_save(); +} + +/* init next network game round by displaying a message and switching + * to GET_READY. */ +void init_next_round( void ) +{ + game_round++; + set_state( CS_GET_READY ); + init_level( cur_player, cur_player->paddle_id ); + display_text( font, + _("***** Round %i *****###You control the %s paddle in this level!#" + "To fire a ball keep the mouse button PRESSED.#Don't just click.###" + "Press any key when you are ready...###(You can pause the game with 'p' any time.)" + "###NOTE: Due to latency, bonuses on the server are closer than they " + "appear! I'll try to work on that."), + game_round, cur_player->paddle_id==0?_("BOTTOM"):_("TOP") ); +} + +/* display a message about the winner */ +void finalize_round( void ) +{ + if ( (char)game->winner == -1 ) + display_text( font, _("DRAW") ); + else { + game->paddles[game->winner]->player->stats.wins++; + if ( game->winner == cur_player->paddle_id ) + display_text( font, _("You have won this round!") ); + else + display_text( font, _("You have lost this round.") ); + } + finalize_level(); + set_state( CS_ROUND_RESULT ); +} + +/* display the final statistics. the first player is always this client + * and the second is the remote. */ +void display_final_stats( void ) +{ + int win; + + /* won this match? */ + if ( game_stats[0][0] > game_stats[1][0] ) + win = 1; + else + if ( game_stats[0][0] == game_stats[1][0] ) + win = -1; + else + win = 0; + + /* build stats string */ + display_text( font, + _(" Result: %s ##" \ + " %12s %12s##" \ + "Wins: %12i %12i#" \ + "Losses: %12i %12i#" \ + "Draws: %12i %12i#" \ + "#" \ + "Total Score: %12i %12i#" \ + "#" \ + "Balls Kept: %11i%% %11i%%#" \ + "Bricks Cleared: %11i%% %11i%%#" \ + "Extras Collected: %11i%% %11i%%##" \ + "(Press SPACE to continue)"), + win==1?_("VICTORY"):win==0?_(" DEFEAT"):_(" DRAW"), + players[0].name, players[1].name, + game_stats[0][0], game_stats[1][0], + game_stats[0][1], game_stats[1][1], + game_stats[0][2], game_stats[1][2], + game_stats[0][3], game_stats[1][3], + game_stats[0][4], game_stats[1][4], + game_stats[0][5], game_stats[1][5], + game_stats[0][6], game_stats[1][6] ); +} + +/* save data from local and local_game variables and update + * the menu hint. */ +void save_local_game( int slot_id ) +{ + GameSlot gs; + int i; + + memset( &gs, 0, sizeof(GameSlot) ); + strcpy( gs.setname, game_set->name ); + gs.diff = config.diff; + gs.player_count = config.player_count; + gs.cur_player = current_player; + for ( i = 0; i < MAX_PLAYERS; i++ ) + { + strcpy( gs.player_names[i], config.player_names[i] ); + gs.player_cur_level_id[i] = players[i].level_id; + gs.player_lives[i] = players[i].lives; + gs.player_scores[i] = players[i].stats.total_score; + } + gs.gameSeed = gameSeed; + if ( !slot_save( slot_id, &gs ) ) + fprintf( stderr, _("ERROR: couldn't save game!\n") ); + slot_update_hint( slot_id, item_resume_0->hint ); +} + +/* check whether Shift is pressed to switch between own and highest score */ +void handle_display_switch() +{ + int modstate = 0; + modstate = SDL_GetModState(); + if (!showing_best) + { + if (modstate&KMOD_RSHIFT||modstate&KMOD_LSHIFT) + { + display_set_text( display_player[0], best_name ); + display_set_value_directly( display_score[0], best_score ); + display_set_highlight( display_player[0], 1 ); + display_set_highlight( display_score[0], 1 ); + showing_best = 1; + } + } + else + { + if (!(modstate&KMOD_RSHIFT||modstate&KMOD_LSHIFT)) + { + display_set_text( display_player[0], cur_player->name ); + display_set_value_directly( display_score[0], + game->paddles[0]->player->stats.total_score + + game->paddles[0]->score ); + display_set_highlight( display_player[0], 0 ); + display_set_highlight( display_score[0], 0 ); + showing_best = 0; + } + } +} + +/* +==================================================================== +Publics +==================================================================== +*/ + +/* create various resources like shrapnells */ +void client_game_create() +{ + frame_create(); + shrapnells_init(); + shine_load(); + init_angles(); + + /* background */ + bkgnd = stk_surface_create( SDL_SWSURFACE, + stk_display->w, stk_display->h ); + SDL_SetColorKey( bkgnd, 0, 0 ); + stk_surface_fill( bkgnd, 0,0,-1,-1, 0x0 ); + +} +void client_game_delete() +{ + stk_surface_free( &bkgnd ); + + displays_clear(); + frame_delete(); + shrapnells_delete(); + shine_delete(); +} + +/* create network/local game context and initiate game state: + * network needs to receive the level data and a local game + * has to load the next level */ +int client_game_init_local( char *setname ) +{ + Set_Chart *chart; + int i, warp_limit; + + warp_limit = config.rel_warp_limit; + allow_disintegrate = 1; + + /* the original levelsets do not need these workarounds */ + if ( STRCMP( setname, "LBreakout2" ) || STRCMP( setname, "LBreakout1" ) ) { + warp_limit = 100; + allow_disintegrate = 0; + } + + /* the approach for a local game is to use the same + * settings as a network game. the receiving of packets + * is simply faked by a local_game context that + * runs the game locally. but to use only one game loop + * we do not use it directly but apply its modificiations + * to game which is visualized */ + local_game = game_create( GT_LOCAL, config.diff, warp_limit ); + game_set_current( local_game ); + game_set_convex_paddle( config.convex ); + game_set_ball_auto_return( !config.return_on_click ); + game_set_ball_random_angle( config.random_angle ); + game_set_ball_accelerated_speed( config.maxballspeed_float ); + local_game->localServerGame = 1; + + /* load levels: + * only required for local games. in network both players + * just require a single level that can store the incoming + * data that is send by the server via the net. + */ + if ( !strcmp( setname, TOURNAMENT ) ) + game_set = levelset_load_all( levelset_names, gameSeed, config.addBonusLevels ); + else + game_set = levelset_load( setname, ((config.addBonusLevels)?gameSeed:0) ); + if ( game_set == 0 ) return 0; + + /* load highest score so far if any */ + chart = chart_set_query(setname); + strcpy(best_name,_("nobody")); best_score = 0; + if (chart) + { + strcpy(best_name,chart->entries[0].name); + best_score = chart->entries[0].score; + } + + /* create client game context */ + game = game_create( GT_LOCAL, config.diff, warp_limit ); + game_set_current( game ); + + /* a local game is not limited in its communication */ + client_comm_delay = 0; + no_comm_since = 0; + + /* prepare warp icon at frame */ + warp_blinks = 4; warp_blink = 1; + + /* set list of level background ids */ + for ( i = 0; i < MAX_LEVELS; i++ ) + bkgnd_ids[i] = rand() % bkgnd_count; + + /* initiate players */ + players_clear(); + for ( i = 0; i < config.player_count; i++ ) + player_add( config.player_names[i], + game->diff->lives, + levelset_get_first( game_set ) ); + cur_player = players_get_first(); + + /* init first level */ + init_level( cur_player, PADDLE_BOTTOM ); + + /* if only one player don't show score table */ + client_state = CS_NONE; + if ( player_count > 1 ) + set_state( CS_SCORE_TABLE ); + else + set_state( CS_PLAY ); /* one player starts immediately */ + return 1; +} +int client_game_init_network( char *opponent_name, int diff ) +{ + /* create an empty one level levelset. the server will send + * the data into the level everytime we play. */ + game_set = levelset_create_empty( 1, "empty", "empty" ); + + /* create client game context */ + game = game_create( GT_NETWORK, diff, 100 ); + game_set_current( game ); + game_round = 0; /* will be increased by init_next_round() */ + game_over = 0; + + /* a network game communicates every 25 ms by default */ + client_comm_delay = 25; + no_comm_since = 0; + + /* initiate players */ + players_clear(); + player_add( client_name, game->diff->lives, levelset_get_first( game_set ) ); + player_add( opponent_name, game->diff->lives, levelset_get_first( game_set ) ); + cur_player = players_get_first(); + + display_text( font, _("Receiving level data...") ); + set_state( CS_RECV_LEVEL ); + return 1; +} + +/* create local game context and initiate game state + * as given from slot 'slot_id'. */ +int client_game_resume_local( int slot_id ) +{ + int i; + GameSlot gs; + + /* load saved game */ + if ( !slot_load( slot_id, &gs ) ) return 0; + + /* FIXME: config settings are overwritten for this */ + config.diff = gs.diff; + config.player_count = gs.player_count; + for ( i = 0; i < config.player_count; i++ ) + strcpy( config.player_names[i], gs.player_names[i] ); + gameSeed = gs.gameSeed; + + /* create local game where all players have full lives */ + if ( !client_game_init_local( gs.setname ) ) return 0; + + /* re-initiate players */ + players_clear(); + for ( i = 0; i < config.player_count; i++ ) + { + /* name + lives */ + player_add( config.player_names[i], + gs.player_lives[i], + levelset_get_first( game_set ) ); + /* level */ + player_init_level( &players[i], + game_set->levels[gs.player_cur_level_id[i]], + gs.player_cur_level_id[i] ); + /* score */ + players[i].stats.total_score = gs.player_scores[i]; + } + cur_player = players_set_current( gs.cur_player ); + + /* init first level */ + init_level( cur_player, PADDLE_BOTTOM ); + + return 1; +} + +/* create a one level game context for testing a level */ +int client_game_init_testing( Level *level ) +{ + local_game = game_create( GT_LOCAL, config.diff, 100 ); + game_set_current( local_game ); + game_set_convex_paddle( config.convex ); + game_set_ball_auto_return( !config.return_on_click ); + game_set_ball_random_angle( config.random_angle ); + game_set_ball_accelerated_speed( config.maxballspeed_float ); + local_game->localServerGame = 1; + + game = game_create( GT_LOCAL, config.diff, 100 ); + game_set_current( game ); + + players_clear(); + player_add( config.player_names[0], game->diff->lives, level ); + cur_player = players_get_first(); + + bkgnd_ids[0] = 0; + + init_level( cur_player, PADDLE_BOTTOM ); + + client_state = CS_NONE; + set_state( CS_PLAY ); + + return 1; +} + +/* finalize a game and free anything allocated by init process */ +void client_game_finalize() +{ + players_clear(); + + if ( game && game->game_type == GT_LOCAL ) { + game_delete( &local_game ); + levelset_delete( &game_set ); + } + game_delete( &game ); +} + +/* run the state driven loop until game is broken up or finished */ +void client_game_run( void ) +{ + int ms, frame_delay = config.fps?10:1; + int button_clicked, key_pressed; + SDL_Event event; + int abort = 0, i, j, penalty; + /* frame rate */ + int frames = 0; + int frame_time = SDL_GetTicks(); + + event_clear_sdl_queue(); + + stk_display_fade( STK_FADE_IN, STK_FADE_DEFAULT_TIME ); + + stats_received = 0; + stk_timer_reset(); ms = 1; + while ( !abort && !stk_quit_request ) { + /* check wether an event occured */ + button_clicked = key_pressed = 0; + if ( SDL_PollEvent( &event ) ) { + if ( client_state == CS_PAUSE && game->game_type == GT_NETWORK ) + gui_dispatch_event( &event, ms ); + else + if ( event.type == SDL_MOUSEBUTTONDOWN ) + button_clicked = event.button.button; + else + if ( event.type == SDL_KEYDOWN ) { + key_pressed = event.key.keysym.sym; + if ( handle_default_key( key_pressed, &abort ) ) + key_pressed = 0; + } + else + if (event.type == SDL_ACTIVEEVENT) + { + if (event.active.state == SDL_APPINPUTFOCUS || + event.active.state == SDL_APPACTIVE ) + if (event.active.gain == 0 ) + client_set_pause(1); + } + } + else if ( client_state == CS_PAUSE && game->game_type == GT_NETWORK ) + gui_dispatch_event( 0, ms ); + + /* check whether Shift is pressed to switch between own and highest score */ + if (game->game_type == GT_LOCAL) + handle_display_switch(); + + /* let server know we're still alive except + * in CS_PLAY as we send paddle updates there */ + if ( game->game_type == GT_NETWORK ) + comm_send_heartbeat(); + + /* handle client */ + switch ( client_state ) { + + case CS_FINAL_STATS: + if ( key_pressed==SDLK_SPACE ) abort = 1; + break; + + case CS_FATAL_ERROR: + /* after game was violently broken up the server + * may still send the stats of the game so far */ + if ( button_clicked || key_pressed ) { + SDL_Delay(250); /* give time to release button */ + set_state( CS_RECV_STATS ); + display_text( font, _("Receiving final stats...") ); + } + break; + + case CS_FINAL_TABLE: + if ( button_clicked || key_pressed ) { + chart_load(); + check_highscores(); + select_chart( game_set->name, 0 ); + /* remove saved game */ + slot_delete( 0 ); + slot_update_hint( 0, item_resume_0->hint ); + /* quit local game */ + abort = 1; + } + break; + + case CS_SCORE_TABLE: + /* show who's next player and scores in local game */ + display_score_table( _("Next Player: %s"), cur_player->name ); + set_state( CS_GET_READY ); + break; + + case CS_BONUS_LEVEL_SCORE: + /* display total score from this level for player */ + display_bonus_level_score(); + set_state( CS_GET_READY_FOR_NEXT_LEVEL ); + break; + + case CS_FINAL_PLAYER_INFO: + if ( button_clicked || key_pressed ) { + SDL_Delay(250); /* give time to release button */ + set_state( CS_NEXT_PLAYER ); + } + break; + + case CS_RECV_LEVEL: + comm_recv(); + if ( cur_player->next_level_received ) { + cur_player->next_level_received = 0; + cur_player->paddle_id = cur_player->next_paddle_id; + init_next_round(); + } + break; + + case CS_RECV_STATS: + comm_recv(); + if ( stats_received ) { + set_state( CS_FINAL_STATS ); + display_final_stats(); + } + break; + + case CS_ROUND_RESULT: + if ( button_clicked || key_pressed ) { + SDL_Delay(250); /* give time to release button */ + if ( game_over ) { + set_state( CS_RECV_STATS ); + display_text( font, _("Receiving final stats...") ); + } else { + set_state( CS_RECV_LEVEL ); + display_text( font, _("Receiving level data...") ); + } + } + break; + + case CS_GET_READY: + if ( button_clicked || key_pressed ) { + SDL_Delay(250); /* give time to release button */ + comm_send_short( MSG_READY ); + set_state( CS_PLAY ); + } + break; + + case CS_GET_READY_FOR_NEXT_LEVEL: + if ( button_clicked || key_pressed ) { + SDL_Delay(250); /* give time to release button */ + set_state( CS_NEXT_LEVEL ); + } + break; + + case CS_PAUSE: + if ( game->game_type == GT_LOCAL ) break; + + /* check wether pause chatroom has been closed + * either by client or remote */ + comm_recv(); + break; + + case CS_PLAY: + /* hide objects */ + begin_frame(); + + /* apply events to local paddle */ + paddle_handle_events( l_paddle, ms ); + + /* update local objects and communicate if + * comm_delay ms have passed */ + update_game( ms ); + + /* show objects */ + end_frame(); + + /* handle local level over */ + if ( game->level_over ) { + if ( game->game_type == GT_LOCAL ) { + if ( game_set == 0 ) { + abort = 1; /* was a test level */ + grab_input(0); + break; + } + if ( game->winner == PADDLE_BOTTOM ) + { + if (local_game->isBonusLevel) + set_state( CS_BONUS_LEVEL_SCORE ); + else + set_state( CS_NEXT_LEVEL ); + } + else + set_state( CS_LOOSE_LIFE ); + } else { + finalize_round(); + } + } + break; + + case CS_NEXT_LEVEL: + /* apply paddle stats to player */ + game_set_current( local_game ); + game_update_stats( PADDLE_BOTTOM, &cur_player->stats ); + game_set_current( game ); + /* init next level for player in local game */ + cur_player->level_id++; + if ( cur_player->level_id >= game_set->count ) { + /* deactivate player */ + cur_player->lives = 0; + display_text( font, + _("You've cleared all levels...#Congratulations!!!") ); + set_state( CS_FINAL_PLAYER_INFO ); + break; + } + /* get snapshot for next init */ + cur_player->snapshot = *game_set->levels[cur_player->level_id]; + /* cycle players */ + set_state( CS_NEXT_PLAYER ); + break; + + case CS_RESTART_LEVEL: + /* apply paddle stats to player */ + game_set_current( local_game ); + game_update_stats( PADDLE_BOTTOM, &cur_player->stats ); + game_set_current( game ); + /* reset level for next turn */ + cur_player->snapshot = *game_set->levels[cur_player->level_id]; + /* decrease lives (is checked that this wasn't the last one) */ + cur_player->lives--; + /* cycle players */ + set_state( CS_NEXT_PLAYER ); + break; + + case CS_LOOSE_LIFE: + /* apply paddle stats to player */ + game_set_current( local_game ); + game_update_stats( PADDLE_BOTTOM, &cur_player->stats ); + game_set_current( game ); + + /* remember level for next turn */ + game_get_level_snapshot( &cur_player->snapshot ); + + /* decrease lives */ + cur_player->lives--; + if ( cur_player->lives == 0 ) { + display_text( font, + _("You've lost all lives...#Do you want to buy a continue#for 100%% of your score? y/n") ); + set_state( CS_CONFIRM_CONTINUE ); + //set_state( CS_FINAL_PLAYER_INFO ); + break; + } + set_state( CS_NEXT_PLAYER ); + break; + + case CS_NEXT_PLAYER: + /* game over? */ + if ( players_count() == 0 ) { + display_score_table( _("Game Over!") ); + set_state( CS_FINAL_TABLE ); + break; + } + /* speak and fade */ + play_speech(); + fade_anims(); + /* finalize current game context */ + finalize_level(); + /* set next player */ + cur_player = players_get_next(); + init_level( cur_player, PADDLE_BOTTOM ); + if ( player_count > 1 ) + set_state( CS_SCORE_TABLE ); + else { + set_state( CS_PLAY ); /* one player starts immediately */ + stk_display_update( STK_UPDATE_ALL ); + } + break; + + case CS_CONFIRM_CONTINUE: + case CS_CONFIRM_QUIT: + case CS_CONFIRM_WARP: + case CS_CONFIRM_RESTART: + if ( key_pressed ) + { + char *keyName = SDL_GetKeyName(key_pressed); + char *yesLetter = _("y"), *noLetter = _("n"); + if ( strcmp(keyName,noLetter)==0||key_pressed==SDLK_ESCAPE ) { + /* if denying continue... DIE!!! */ + if ( client_state == CS_CONFIRM_CONTINUE ) + { + SDL_Delay(250); /* give time to release button */ + set_state( CS_NEXT_PLAYER ); + //set_state( CS_FINAL_PLAYER_INFO ); + } + else + set_state( CS_PLAY ); + break; + } + if ( strcmp(keyName, yesLetter) ) break; + } else break; + /* handle confirmed action */ + SDL_Delay(250); /* give time to release button */ + switch( client_state ) { + case CS_CONFIRM_CONTINUE: + /* clear score and give full lives again */ + cur_player->lives = game->diff->lives; + cur_player->stats.total_score = 0; + set_state( CS_NEXT_PLAYER ); + break; + case CS_CONFIRM_QUIT: + comm_send_short( MSG_QUIT_GAME ); + if ( game->game_type == GT_LOCAL ) { + /* apply paddle stats to player */ + game_set_current( local_game ); + game_update_stats( PADDLE_BOTTOM, &cur_player->stats ); + game_set_current( game ); + /* no higscore check anymore as game is supposed to + * be resumed until normal game over */ + /* testing levels don't got for + * high scores *** + if ( game_set ) { + check_highscores(); + select_chart( game_set->name, 0 ); + }*/ + /* save local game */ + if ( game_set != 0 /*not testing a level*/ ) + save_local_game( 0 ); + abort = 1; + } + else { + /* await game stats */ + set_state( CS_RECV_STATS ); + display_text( font, _("Receiving final stats...") ); + } + break; + case CS_CONFIRM_WARP: + game->winner = -1; /* no speech */ + local_game->winner = -1; /* not counted as win */ + /* substract doubled score of remaining bricks */ + penalty = 0; + for ( i = 0; i < MAP_WIDTH; i++ ) + for ( j = 0; j < MAP_HEIGHT; j++ ) + if ( local_game->bricks[i][j].dur != -1 ) + penalty += local_game->bricks[i][j].score; + printf( _("warp penalty: -%d\n"), penalty ); + local_game->paddles[0]->score -= penalty; + set_state( CS_NEXT_LEVEL ); + break; + case CS_CONFIRM_RESTART: + game->winner = -1; /* no speech */ + local_game->winner = -1; /* not counted as win */ + local_game->level_over = 1; + set_state( CS_RESTART_LEVEL ); + break; + } + break; + + } + + /* update anything that was changed */ + stk_display_update( STK_UPDATE_RECTS ); + + /* get time since last call and delay if below frame_delay */ + ms = stk_timer_get_time(); + if ( ms < frame_delay ) { + SDL_Delay( frame_delay - ms ); + ms += stk_timer_get_time(); + } + frames++; + } + finalize_level(); + client_state = CLIENT_NONE; + + stk_display_fade( STK_FADE_OUT, STK_FADE_DEFAULT_TIME ); + if ( stk_quit_request ) + comm_send_short( MSG_DISCONNECT ); + else + comm_send_short( MSG_UNHIDE ); + + /* frame rate */ + frame_time = SDL_GetTicks() - frame_time; + printf( _("Time: %.2f, Frames: %i -> FPS: %.2f\n"), + (double)frame_time / 1000, frames, 1000.0*frames/frame_time ); + + event_clear_sdl_queue(); + + /* update the selected user and the user list in network as + * we received ADD/REMOVE_USER messages */ + gui_list_update( list_users, client_users->count ); + /* re-select current entry */ + if ( client_user ) { + i = list_check( client_users, client_user ); + if ( i != -1 ) + gui_list_select( list_users, 0, i, 1 ); + } +} + +/* test a level until all balls got lost */ +void client_game_test_level( Level *level ) +{ + stk_display_fade( STK_FADE_IN, STK_FADE_DEFAULT_TIME ); + client_game_init_testing( level ); + client_game_run(); + client_game_finalize(); + stk_display_fade( STK_FADE_OUT, STK_FADE_DEFAULT_TIME ); +} diff --git a/project/jni/application/lbreakout2/client/game.h b/project/jni/application/lbreakout2/client/game.h new file mode 100644 index 000000000..3247c94c7 --- /dev/null +++ b/project/jni/application/lbreakout2/client/game.h @@ -0,0 +1,67 @@ +/*************************************************************************** + local_game.h - description + ------------------- + begin : Thu Sep 6 2001 + copyright : (C) 2001 by Michael Speck + email : kulkanie@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* in game client states */ +enum { + CS_NONE = 0, + CS_RECV_LEVEL, /* wait for level data from server */ + CS_SCORE_TABLE, /* score table in local game */ + CS_FINAL_TABLE, /* final score table in local game */ + CS_FINAL_PLAYER_INFO, /* info that player cleared all levels */ + CS_RECV_STATS, /* wait for server to send stats */ + CS_FINAL_STATS, /* looking at final network player stats */ + CS_GET_READY, /* await click from user */ + CS_PLAY, /* render frame */ + CS_NEXT_PLAYER, /* cycle to next player in local game */ + CS_NEXT_LEVEL, /* init next level for player in local game */ + CS_RESTART_LEVEL, /* player begins at reset level next time */ + CS_LOOSE_LIFE, /* take a snapshot and decrease lives */ + CS_ROUND_RESULT,/* await click and start level receive after it */ + CS_GAME_OVER, /* all levels are played */ + CS_CONFIRM_WARP, + CS_CONFIRM_QUIT, + CS_CONFIRM_RESTART, + CS_CONFIRM_CONTINUE, + CS_FATAL_ERROR, /* display error and quit game after it */ + CS_PAUSE, + CS_BONUS_LEVEL_SCORE, /* show score gained in bonus level */ + CS_GET_READY_FOR_NEXT_LEVEL /* wait for click when showing score of bonus level */ +}; + +/* create various resources like shrapnells */ +void client_game_create(); +void client_game_delete(); + +/* create network/local game context and initiate game state: + * network needs to receive the level data and a local game + * has to load the next level */ +int client_game_init_local( char *setname ); +int client_game_init_network( char *opponent_name, int diff ); + +/* create local game context and initiate game state + * as given from slot 'slot_id'. */ +int client_game_resume_local( int slot_id ); + +/* finalize a game and free anything allocated by init process */ +void client_game_finalize(); + +/* run the state driven loop until game is broken up or finished */ +void client_game_run( void ); + +/* test a level until all balls got lost */ +void client_game_test_level( Level *level ); + diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/ABOUT b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/ABOUT new file mode 100644 index 000000000..673da2aa0 --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/ABOUT @@ -0,0 +1,6 @@ +absolute B v0.8 +by Jurgen De Backer + annejurgen@pandora.be + +New version of the theme, well, it has changed a lot since the previous version, +and looks more consistent now. diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/Makefile.am b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/Makefile.am new file mode 100644 index 000000000..bec31dbe1 --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/Makefile.am @@ -0,0 +1,15 @@ +EXTRA_DIST = back0.png back1.png back2.png back3.png back4.png back5.png \ +bricks.png extras.png fr_left.png fr_right.png fr_top.png \ +life.png menuback.png paddle.png shot.png weapon.png \ +ABOUT README + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/AbsoluteB + @for file in $(EXTRA_DIST); do\ + $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/gfx/AbsoluteB/$$file;\ + done + +win32-install-script: + @for file in $(EXTRA_DIST); do \ + echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\\gfx\\AbsoluteB\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ + done diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/Makefile.in b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/Makefile.in new file mode 100644 index 000000000..94c050c35 --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/Makefile.in @@ -0,0 +1,372 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = client/gfx/AbsoluteB +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longdouble.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +appname = @appname@ +arch_flag = @arch_flag@ +audio_flag = @audio_flag@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +doc_dir = @doc_dir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +hi_dir = @hi_dir@ +hi_inst_flag = @hi_inst_flag@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +inst_dir = @inst_dir@ +inst_flag = @inst_flag@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +locdir_flag = @locdir_flag@ +mandir = @mandir@ +mixer_flag = @mixer_flag@ +mkdir_p = @mkdir_p@ +netdebug_flag = @netdebug_flag@ +network_flag = @network_flag@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sdlnet_flag = @sdlnet_flag@ +sdlnet_lib_flag = @sdlnet_lib_flag@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +warp_flag = @warp_flag@ +win32_deps = @win32_deps@ +win32_inst_script = @win32_inst_script@ +EXTRA_DIST = back0.png back1.png back2.png back3.png back4.png back5.png \ +bricks.png extras.png fr_left.png fr_right.png fr_top.png \ +life.png menuback.png paddle.png shot.png weapon.png \ +ABOUT README + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/gfx/AbsoluteB/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign client/gfx/AbsoluteB/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-data-local + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-info-am + + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/AbsoluteB + @for file in $(EXTRA_DIST); do\ + $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/gfx/AbsoluteB/$$file;\ + done + +win32-install-script: + @for file in $(EXTRA_DIST); do \ + echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\\gfx\\AbsoluteB\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ + done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/README b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/README new file mode 100644 index 000000000..6bca133b2 --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/README @@ -0,0 +1,13 @@ + +* Title : absolute B theme for LBreakout 2 by Jurgen De Backer + +* Version number 0.8 created on 6th December 2002 + +* Email-address : annejurgen@pandora.be + +* Description + +New version of the theme, well, it has changed a lot since the previous version, +and looks more consistent now. +The menu background, the in-game frame, the bricks , paddles, weapons, backgrounds and extras have been customized. +As you will notice , I modified some of the original backgrounds a bit, and created new ones, all using the Gimp. Hopefully you'll enjoy this theme. diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/back0.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/back0.png new file mode 100644 index 0000000000000000000000000000000000000000..0b45d4590474beb200187916950330c927cbbcd7 GIT binary patch literal 14996 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 literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/back2.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/back2.png new file mode 100644 index 0000000000000000000000000000000000000000..5be6d0d0ff93bd5ed8053f7b17bfea1c29750c5e GIT binary patch literal 221810 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A%)r3F#IJLWfr067fKP}kpO}!ImzAuM zoSvJRl9ifWoR65AlvR|QnU$TElaZ93lv$XIk(H5?mz$oEo|TuCnvs&0m7bBCnUt24 zRgjaGotB!JnwguKk&~ICnUb2Gnpu#Okery6pPiDHl9Ha1S5}mml9Z93ot~YZmYJ5E zmXw~Ao?V!mo|BQ0osnBwn3bEInU|HEl7f_yl$n#6lA5xdnw(phmz|%Jl#!O0nwpTB zl9rK{S6q;tmy?>AmYSKKQBk(i#Eo}H1Notd7Sm7bNEnUkH7 zla-m9m6@BJm79~Ela-a1ot2l9ou8YTpOciDm{X9Kk(-@gQdnG7mXevCm7klLms4m_ zl3kFOQ<$Gskeim1nNw1bQ=A{4l(3PNnVyk}nw^@GmYR^9lv`AgQ(TZ+n4g-SmX?v8 zU6_|sl%JfMl3!k&n4FZ9lANBIo?D!sk(ZU7o0F85oS2r9S6Y}?T$r4ZmRDMol985@ zmY!Eqn3kTFUs{-yo|?Ixlbo8GnVp%Ik%eDYl$e^5nwgQBmYP|Ro0^_pP*#*(l$V{C zn~;={m6NlQo}QeZR#0A?l9is4mX@BGk(`#6k(HI1ot==Bm{(MgoRN}~pO=!6o|2hb zSYDi*o|K%Pnwp)Sk(rg0mRe9&oRXTJo|To9l9HI3oR*cDmXVQ|oSc}HgjJZAmYtrQ zmYf+VRMnL9)XYF3Z08o_7nByIW~HTOWGtm76#d5WTt0kCTFCkWoINLCgc_u zBqb+h)6%oEvT}2i zQj?R?Q?he&3(HHg3Ujk_vy#$Ml2TKWl9My?bJ8-?)3Y*?(^Imtvs2U3(lRr%i}JII z@^VWG@=J?S(=swLGcqzWGqSQ%vr-H0-LJ*Kz`&T~?e4FdgViHBK~Lt4hHT!eu^fx*+oF{EOS%bxmr{XYhC@_1)O@ zneWauHb;?1zs`tSu3XhHn>VI&mUMv5))g8mYhR1JT$9aj&Td;!KeeXIUZvs%s|CA{ z*-@Wk3F4fO%L-R|vERPxV{o*j&A8k1=f&ebho)Y?qIuVU`?VXFKc^+ADyQ!LfAfpZ z_n%sK=WLp@u513K>ih4XAOBuEKkQ#ccVFw?tv}cNy?y!Y+3Iq$!kSOFvh(-My6u~L zyDa6;pXc_!zn(ALk^KCR`2R=c|Bn9uU~O^l$MpYq>p#!8y1uUb|K&H~oZdII)Af7A zf2XIXzkEI0b=tmn&-+5JT(f?^=kew>GgEpq?|+|Tzx(~aC+F?{J@tR_2 z?%&goKV6*ua`6U@dzReUJm0Ke&V0Yq@$s_#WihvR|NnP+`TPC2VrhGqn@1Ff7!{~|U=hvF1J-H$3p+go)%IeX#$-TyDXR?kmhnZ141IqQ43)XU%B6SZ#qUVW^t=>NIL+wJQA zOxC~m|7_uue->SHzWw;CfA9W|nu6o?7ga7=&+abFV>$M8A}oAuhl!>{{8gv`Q!7S`}scUo4w!n^Vzj$vuCgW$8>z|o;b6) z%T~V5`sADOu5{;3xgYTj3%{n?oldWdd-Ct*vqN&}j|?d&bA?%cJtxpVY=Z1(wEw{Lq-T2cQw+J1raGT#Gw-^%!fqFH{6vEAON<6Kks z;osxs{`2krU5)?qwEzE0cl%$v>wjI|%Rk?y^3#u(>+7HC&aeH`{=II;<8^QU6gPSMRG8lXUzpx_HJ^zkNUM*KPRta{2p9ANwA& zJbELWvZ;0b=5ulN^?#}oBd0_(ZrHSy*QU{V-hA)Oy}y4Pm;d)d+Ukkd=U=l*C+xBL zQ20mx|F_@&KR@@4yIwi(_x;uB;pv;NuRE8N8!&T!bm%eR$E*4K-_(44xBu7rf5-oS zdbN7}zpMX$-T(j7K)UOk`QmQBOEC&+WzN=*D*tuab9b-UAoghM?|G&F|3znK-}}Gs z>tFjH%m-$F{<5-J;c$da?SH??X??<~o{y~DFaCb_d)@Abc`cQPzt#Re;3u3WVUg)9 zb?n_e`+M83@n8R+H$Al7LMwFc{OPwhU0IiV;_dGF`(||p>E3D-^6xo*ZN0f}`P*x| z`{%#Ab8F|q1d4mkkxzs6~M^pCq2fqntjJQ z3KM(3ulo7g_tZ(ln7 zti42i&GX+Dc4do?pFgww-i@1uU5_#oJ2&_WtFhE)>Go_kUlLnfT)J|;ki*79{5@II zSr6LhDfO>jUzT#TXRd5wgy*NaiErO{ET8c6+sfA=sV9Y&vIYG-CY=BHZ~C{ntv^aW zzD)Y~F6m?U+qX_UR=d_^-g;rI<+y)+bDePIz9YZTm#x-|dLOqguy?w` znvignGkj;~#K=`kw`IJWGWF=BXTdd%5j9>C@zU4DxL@k5DzE=p@zCb)!{_mTs{U;L z|KsC&`)_6+4yxX87TYf78~5hVB8@UTO}m}l@4e;(XiwGj?U~u>ze={Rf#v@RH@Bn8 zS6e!Q`X0!HoZ6z6GsoJ#WM0)hy+!Ho5C7e}m!F^C()-VeZ!b_WJ658<;mTB-{V|@Nx3~KNs)+dGRLU`^k6rW$b=t)r$A)%+sygSp0sib;2tD zwf^O&K0OK6>^89ooLX%*_3yz)vrJ}~{EFQ0p4~65B{Q%vj*<0@()4GV+wW^0d0civ zx>1he^yr7Ne!M2C6%T>AEC~2UacloC{r_+7-~Y9?{{Qv*lDE;m zDIaU(j;}diZ5VE2cGlwE-JCZH*TU{kX7RdU@#%1L`TqZZzt3f!FnQssu4Jh>b6ZQx zC(4{GxX*C0NUc&tfos*1*-IbAhfiJhn2ArwCOk59t7N40w2kK-EVZgW9{Sw1ByZa~ zw#>4}ZqrKF$FWbj;+eb4J@Av#%(6*G^0d}pF0ol}y+>4S;^ZA=&LVHhW<7Z`z2DwT z_I2UMg^wc=Blgehd=O)Cm+OG+&!bK(Gi)~4SBMoxY92L>u@ngYn4EWPX`=3vMKMfL zQ&zE^()fLEgH&ASEWhLH*DRm*aMwiJZQ}FuZ^_q+*i|o+vwhWe?W`W>o}`cbMTO!O zlT?0&$hwx!Rq?RbEMIeI(p1IxV`+B_O}G2$%~}v7B%`LZy#D_8W8co*w>Wq4-oCF7 z|JCi-9xbb6yf|O^UW`m^j7j*cW%|v3YcHmIa(oKu@XJ3Ty6#}bpC_D84}{zQx;T0N zkIVLdFU!AGW~l#CzB}I5^3SQ*nyT|>&1N56KK~!{vei?vR(??L^If-+;TF4mDDSD{ zxU%MRyn^BJ+Py1NuO9PQx>a$ZCrH#a?! zi1@kr?p}HO%AnZj!p$`k7*}4t9=|>J{N7!bt0Qmxn7eSrT>npd&RNIVeyK6oQy|UW8 znD6y_^}2k#y6$Y6v-Wy>Wa0LD=Y(y)h3aoGO?Z-8+qge6hjIQv z*W%!pK~|oEE@`fwhN4@IX1&^*try&S-E`|+-lJzz_ka9mBPhoHyC{vQACfEapj@nRm(Udtu-+y=&@=UqR*{6ExYEFZfe)_r#ID>k7tV zjpYrTar__IjtS*5{FtovD6v6eB|~lX!+;I3_n)@i|9NeGQ^(pVefqr$UHASO{kr*2 zyME)p#q;-n@|XX6G~VXPZ+87PI_6FtcS?-=^jwZKM&q2)jY5^ ze$7got)H(*T)DjZ+u6c{;=S7^-pc;|p1=KOWW~ddM@L(qyT*xJt9+LF-TeLC_9nfW z`=tuY|7iKh*=6-v?UUdAuHgR7=*>@W-K=P>USd2k!@5#TqwDM2t2>_GQne2~I7$0@ zI-7a+{W(YWUQ}`OIsUP)!Z%~}>Qh%WJspNxzed|$W9>k9JRR)~&OKNUCYN5M7CXT>Wd=Dyze(sf4D#^X!w=$5M34D}@6~^uvxxI}(#G1NA|bX}WirPXw$H02nQZxu_6IP#m4s`)E8i0t^fd1B&N|zVpJQ4hg?DV5n-=+OiRRKX zfuFqYmVe&!(fo;E=d(NS!zR8@J$twMN&Kcat+~?v-+CXMtn1Bu7&l2q*45d5kLATP zg6B5hK6+HRFe&1l3GWnx4M|3YiaT>@(6T-!0vitv>a2l|ze0 z)kAgnz{xE41+Q(CoZM~ObiRs1HNog>S%Q(OH<&eMaZ_I%#Fou7aIvH3QZ zbB_Ewti5gZiGZm)-UJ_A9vq*M_{?MJvTWW7S>ZZKqi+ZcF#M2b+Y)Ic`U-~e(CjaZ6^B&q) zWCW~EH&pq)_`Tsv_#uWWVew}vk;TgU1(%ghy(^&Bw*7eH{@hD*Q|0e|d*r>Z-~GIL zvkre(Vbjfk$&R-shPkyL7eDxj^Mh`~Dqhze)|O9>p9z|=ohzUyXr|PGl!B(31_leZ zaK9b5o=0gc@YnD${FTOYh9PuTmcov*Gt&j4e7dX-oZuE}TyV5F+g;1)z=lgns*5F0 zOl=G(TfHx+J?z;5EsveNp{m;p6W83D_x44?f_48npRZ=A)%9mjH@(0!-}zeGnVbm8 zqnmCUtSeOb-B7$TtdwQmx|fF*XxD2x?-6v?7H<>ufA)~aVNHqf`saHut_VNVw8>~4 z>jb5PeOsBIAGzT>r+z=HpC!lAf2B2N9#8*aAjR{q#%{d;=QG8Ci4Q*&er-E=eK~vC zJN1_b&n|!5f2`rik%9v{k2kJemHQ}0B`)LxI zn#f}D=*J&#g*9|C?i0ye!YEbzdj>m?A^*YS{Fw}5Lf4Yjy)M~E9_Fq6RywIH%liDf zYo)g$H=nsx_=|mxwy#3#||9HIirj9P#?7Ya&x|sOy8-AMW`%PM6L8@>@c4 zip7&@Q?+L2zHsgo*SpWWXlB~+KeL{MYnaqYc?&l$X>PYY`MmJik&k9C%?vF2pR)_D zD;H%rcD!86Orf}``^ULbLm$=kJD$v3{pW?XYkT*)MIl$RKcq=4{#?9tX2%wioP5KGV;KY|a!=PW-ZMwUP0y zK=Ui7l3drG*;_-N4&3Vm&p2%1(&zpW3ZGtem>u=-;P_p&7#fs@20|RbI(O5awbVFdz{GR{YX`* zAiej~-*esKo(+!i@&D6yUFVi}%lnf0M6E#n>+SsA`a)u5yDzTUD15cT_j1V+o4|n2 zl_@(a)pgm*bD}j$Kfm^@sjx`+SiJRI!*j+BMe!xh@8vGujxh;*8dJf|^IOBNPcX6Y zLLr0K-D81=Rd((;;Q1tQ7LS3W$6~E{E$c6s-}q^3-~VW3^ikW2^{)h0X1`@F*w-n< zx~S}~%e+e!taCFTUOkb$W6Lf7A5%5w6|c@;VJ3Br*YBTF=ByL>*FO6_s-C;}Nz$#A z%F>3jzf^LIcr$R9sD`)foWaEk5tO&h0*6@*I5uyrU(Y?Tmb@VUr-Jxo{n zb0O0MZXw+d>a!T4x~@$L$eZcCt?R#Ho{8$jySBP^%S;|Wvk7xMqxwa_Wp<@fDeujz z=XNZ+{JG=D(h#HeeBbajzu)hfx=V>sqdLx3b^XPcF$sUZSuLCx&(oawT;r3qoo?ro zOx^u&S>oLc!W}+mSk8XB{)wGWM4d{y=ZuJ$%}pn^Po8;LIqmtkUzv8N+m{wy(Mei( zk$vs;GWUBT2X(gEs$Od2w4QsjQmA3)=Ken#n_enP=bv6~e1Fxo$x)Mg-&fAP)q1;XH z#g!()4JNA=cPe;1DJu`ti0z#DnD0tw(ydq9RwO=pG<)5-?heK&4V(0Rjh-uv= znpW)RK0Q#FDJl~@`Mi?-mQM>`-tU+)_wEVfe_X!)kMrb542FM`|p2$N9OR_zI~>Xr{pZi^qJ*1wPqY}n zR?n>H%va#@yD2`u=rV7m>@oiQWx*H3mp>BV|0K2EDz^2y<39>T6uI1wewH>?U609E+fP}@RHB( zy%%flRol%!a=tUV!BuLZ>C?yGWfn32nYijitOTd@Co}##et}o#-TzVd$X(~u=jxw< z!k?0?<{na0i0as%C@9VS(A=_ZUF)uMwN4B>omF+Ny^XbMxR+ugeA@Cac1%dJ73*LV$o`M^(?lf3QqEt=$^J> zI@jeDSIcLGXMb1AOwfInDC{d$;4I=Pb@D)=<2nO@()nGQHijud-b)-!dQJpng=ld` zofn$zcXqLLjA&W-^G(UoHIgw2+n5A@HHO{ryBcNkL8(yjo;qL4vdG9+0d7;7FU2(1 z1UT`k8jCfwT{Ws~y_oHLL4k9_jDLkbUH;xvF4SyQT37Na@44&o?>Y9qN(q5NzSi%Y z6Z-zIIJVv8K9h+4to+9c2?Al4?|kfPjP#N0ci#U(j>k9S8nd;@=bM2-XATO@O2%F_wN~o?St3P(DqQ`K8TKFfe7?lx#%X5(9~m<*>6gn{v;|x~dPmHO z%lE5GXS&+@{m6sf$HLB24>m9vd2n-eJ8Fmgy|Bc;b<&ygD_VL7-o&%){W*sztI1sJ zZ%8!j0|(Kgw-TJ1x!yCYS@#)k_~E;1wfTRB{DTV}ujb7^b|Oo0e)g1!8&95jF6E-H zar2K<`hU}UgO|1)mFw>p6c|<3OfFBHq|%mRxlnkSrODRNx)mDhPMSSllQ=DDqVp1d zjz8X#$M-(}cx0D?Fzb{!_gCR-_?zbWU3EzM@Oz*6S?j+u<0BX7o%s@zyyKl*N06~( z%b|u$tHq5PzPa`gRiI_?;hO71**r6v8` z-~2v38SYaGj%F7x@m$nvW3^y-_2Ti9W`|>oEjhT}J-O<#R>ki4jy^Tz9dT|(H-hux z9@?tB61MOA6ZY-l+&>|cQ6AXANFF0QF^C(!;)pc0S zl+o>2_oK9m$Rh{WPn|l|^6aJCjdH=6=_36r*2GP_$`Zx3c(slT7t=wlg8`uvS7`0} z8X9M4-=reHMI>z1KEtl+hF5ZPYwapO9Ay7-oIP#5I#Ys+&BCDL8BCWqJrP)I=x4I< z(28r#7goBxSz#S$ZD9T^$ReSz;j&`NIxT|)fqhjnB35Uu?WZy^m^RLt*RDfCWsThXN*cwCreul!c#`7xcj*HubA{t^+f>;sEw4E{`eyA(+&P~` zVT-~A$Efy3PJ@Q?cj{A0Kerv8vcuDO#)b(yQcv>qDO~BD?O49>tzfqE+z-ntCtjI2 zRlPiYT~qE6SHn5CRzA{y94cGcka(eFHNU*n^yR;Ty8ixkP}B-J(`u4xwAt92yXOM8 zV6d~rjLbM5rT10GvuhqciGBJb@EQmI42IC#C(oUGrCcB3I@j-V<{!KF=d%ufEw_Psqazh4tD2sZ!Hxn-!WbZ7}W$UCJwX;?|3$@+)Odbxu1`a#CPPyrEypLl#2 z>rdp3`m<*P?<%&hPYtHmOx-AKnxKBjLq@5r$?6C18JG3xKX^W92s3KBwBA%OO}MYU z>etM@3ooC2wQ1_F3syx2JPiiV3T3{37MNL@6~r^!)8nFbS+CHyhF5n|${5s^*m3%p z20M6s+@@f6A!+vtz3G+OkGwkb7k}H}ED#te7BZFX;mg;*tUPz0J82jYV=_r@?KN(x zzM#A(Nzo@i@7trsdurY`7yF>AP93izgx$<@r&}6C&fE7o_2;=rHHWv+(b>u8S6$!s zZvEZ;wfWhvRGU>UNtomr&25{Yay@nKwO4L+r7NCxetH|S>zRdp@$16i`FAbjt#9wL z{r1+ERe#cT=Ba5vBa?bIZ~iE0MaS+4)d`s|t2!AbQu zCKoDyNSpAGYp(f+UWa`82+2Xs?Lv_6W%B zQJy3}LrjWSOHi`=bFp%d7l-ibm+ZV7jh+^v_7R8G*)%) zo5Rq=(D3XJ^Pcu;9DfQ}rYseesH=T${nszbnrFIhdqI?-zILSekEK_(Y0aGFwYKx@ zxx7~Wx|e6eT^vKbBK~ji4(OGPdOGXF2{lPU?m5oI=0@fFXKr51w4_-0#5Mg}lNNM@ ztWJCxt-fee%%i`XQo2`Y^*i`ZmSfz1XX3?6Ci>zRm?vf3-Q~g%{w~gz= z#+Bl&x9-L1J#^b9dTzO-V573GR`^Mm$$`)Ef^V*E%DT8^OJejtCeOwRw)XeqBraSm zQk=4fL%qPIWI{phh0`%lwO4hjz}5n!_-U6EeBBf><5ltEy3OmZXO*uuyJf@jUu)I5 zEbq1J7wM*`e~o#tS<-3Yq4>`}8@ybD|1!@y|8tLJLY&&kqcYosEB8$>Sgg&w?#Pih z+rLU{?GK*&;D|xSowJ=~Ig>V9nLYMCcT}7|qjB*gQIS0da*|Hz`)>|WT3WpH)9#47 zayqHJ(vB4}@%_(O;;uYpG~O}CCG3sspLwkr$1~(Ue_j7PK*w{1YIVh74X)1rJMX>T z=or1|g4*KuH#zsLe{H7sV6FQ#))i{sS_OV^>n>*!bI!icb!G*lzUj`@*Piod-43r? z{&cwmzf0?BX^q&;NAj#}%O@Y|U&Xt>*!KJEn!_s+%irHD3%_@B%iFW7SE}frJL;?2 zoM-X%v&Wn%w*?k7?I~RT`04e(8kGklzKfQN$KCw?{;AT;N5>brwV4&14bBT$65w(D zOUc`(3Y#o;KFpV6HN463RgUA#1h=c}ch8#Y;(oD&tAB-wg@Dw@uU`*!cSKGW&tutE z|B%P$?Ih8u`>yzDyE*^&IKX#wZ{QPu-xc-S{hSQUe>_p*)MSs?J?p|X23{ALRGq7B z>!$`?==tze=!&P}rw0fB{P@9m#r&M%vM9%R>m{%H%hn!l)?6yTEbyXB(w^`8qZvaQ zwad0^ywF=eQ=3`s{)#CFrf1A?oILTt|D1cww`XjLTJmzb_ojx~_i9vE=2}b3o7}XJ z78jdQCiRw;X+fp%p6Tbav=zIRySe}0Zu%K=eZKp{ZyKKaY>S^-?5=g6m-2GiTq{-s z>!sV;)chZ-{1nn>S+w6aG=1{|i|j?MN#f!cr)uAiiQ!DU-fJ?Q@%3X~W0sDNnf$HS zH`GRL`!-u!PR*p#Ci>&Vl-kRu#8(;BG|rhC^I26xBIr@elJz0Ns}48sWpmZ@-`X|n z&715j&B_^x4ZO~CnrC$GU^8HTeXL;b?JIsu#p+ZVeBSvyI(v#b3MH^15M7UC>FVwbHv@wO{rDaw8m&Gq$vbdyJd1J0xXF_y#`1?TXEx|o& z6C@(npRu|enRVM;f7U}THol0TvC?`QwpILo{Zm!ya97E(X*!Z$Cmm6nyibg+^Tco8 z|3ByabUDHh6*e>X343PX)I;lC^4=|9u<4rMce?{SuIr_Jx^3I>$a1!s>wM90+3lBk zR=vIC5;QHbu;}vl{mYjJ7k6&HC_3|6@~pe>uB=y|7=7J$;VP^A2G+R8WnB_Ex6%aH z)+wG?JnOrfZ7@qk$ElK|>K4nFMq0d`B>Xj8!{G?W4OPV-?<*y~`c1yJXk+@e+~sNZ zF<1Rg@~zg>VX9>6+4gEbk5jXL=2EUSzvb&61U?p-e*fYwtsUwQ1rmd{PM&}0zpePc zi4Wbj_V-tOG3(SiaIxf{qYeM00N>A1+vM**3EZD29{X2$|K-lSI`e1zAGp(5f`jCb zeLhqldNo*_*+5}ey~vj}cTcM95%z5hynAKUR~`4Q_ceA*QpuF4(XhW7wlhvt=({7q9&=@`Csobx$YHhl;?JbNkQ zRnvsO&pfV4)|z}+{nR^`(I7Q+M#Wm2pw7GNxSH;?bzYmD&C|K%8+YON;Ee(zNdd*{ z?=E0lpKBIy>thP59lv8(-BF&#^2Dgl4e~X|nr_{1uugIW4i)`eK-ZfB47PJT)?(?>iIV_>!&f+C!0OkklmDKGM~x%;ETK4nVz}o^ zqynQ|-hXAATX*Ke$F=WxFUiiBwCXSWz5wyug&Ws$W;?`02_HY4D7PZja>5k`Mi%qc zU*k?Bebg2Gr&wy6om_E1O2y&*D*FQxK7SJ~=htTK-(Q)oI5+Kn!pUnlKVMk4 zdWzV34aQW1IZxG>O?dTW)7Rt%Mq}nxON_o1+0{=p<@C5%r>3(}W04x?-!Es*Z9kTs zeoINFsUTc|mreBg@_P!`+zfgP!;Vh6oo%fmF4i`yEM)aO!vp85p9Mw7CRH`Zys+3Z z-6YL%#hfdF>Z?BJp5Dg6y~23OBsZ~?&X=y!kJ<}AQ(AXRsCyE>b3;t@llI?LoTWas zYO7~eE;`GVd#KX7vFeg)sXQa!*BgrZj<-aEg^zpZ-n_bt@%t?)Ax#CB8%A=9dnU0L z7uy9rJhs5~%hF9%hVn<3b%q>_VOCLC{AEGjbjNMc+zy*s4AuLX(^rPwF6~;n(%sPe z(bSWtnnjf}bb=cKcn`j6H=N_t!()E7ZlV6po#$5YCst}Mn&BLO=&I1m1J8ArpL?hp zu}AuVA+xTjQnp~xtNDt$-r3$8D?}IgpX>YbPx0J~y$pOS1fE>9<(-qDwtChzQ5*5S z3)ZVk`L~p1=2+BpM7?@@W6rF}KTa)aKOmjxBgIm${>C>d+cDt<|KleYKmYu*Gd#FD zabcziL)KHGlQ8Kwl^Ay+6WJJzq&{&e}8Sxpid4jdkrIN+v7sr+C&z zTv=;<$!pd770FR+IX@YlEY;7R9jVAvY)`&?|{PFXL6RcuRb-lc3ZnHovCW>Qars<;(fgKxU z)m-(97G<*hPm%cB@c7fwvp=U+O@Ez`TGzg+Uhjt>^V=WpX_r;%j(B!APnxAsRj7Dy zQPKj#MhC;foyt8f`Im&;)WVvr~S&hzSqmO%GI5=Wai2#?PGhj z*R1Emfy~y;&-N`oI)U5w%DQEGC-+atzUfxCqHAWZrz7+AFAFRu)Lm)HJY%r3SWob& zu+PqQ`n}Un&3M5W5ZC-{X;*mux#j=Ttx8vhhHOe$?KQ=F-=(#0SN}{4xm~*dTw0lz zt(xb*SKl*EbajMyh4%<+$Dcl4u42k_=iL%b1OLyLcb&L1iK{7d>&&w?6Y`I2o>jhV z%{(^cC`;cRdc5wLb;{bc6K<6%%ehvs?d7g4xcKqSGOkZo_FXc!3XWA1-_msW_dn5l z-~aSIzgnpNu+YEs*3*?;UTHn5;yR7;0fmktN25NyT-~-#dS}^=E3j9*pB&_23)7Q&%qQ%FPPB4u3f>6&pDOPWUlt z_HAa%1m>IOO%6Ieua#ar>8ZBKxKYA1VY#R*i{<3DS4Z1)^A1F(NLH9NPLjCo<{14i z@A=%bIuqSg_$PZUW)rZ^w@TkI$J6h1*^(A(Pv+OrE6n0#~P(ZrwTa-UfEl)P+PI`?)&7Vs^@&NE_$ijx_RSFHTIRy zZ*KXt`%;mBu&)-24-4Wb5! z1A~tU{E}Mh-!~z&v{p)W-*>klf93Dqx?OEs#rG~TP%Zq=xm8ARhEAnXYoh0->h3$= z6!T^s>$h38nI$h<^9_^V+j;MEe)uY0axtmgc5_GB?!W!37Tw`cXGmXsAtIq`SCI7; zR@cb&UOw9tS2Oxd-eWdb)lGJ%Nu=J|Y1JRLSu_V{)OPW$9|c11Bh|1-;EqbI}9)Pw$umTZ_hRXHe(ec{|T=i5y- zf2Evs(vGAhiv4?b*)cVBwa44rO8-x2Y>&3=UcHRztX)&)Nu~KyuS%Pzq^o%bu3fP~ z`|la{+ci`6Iec+Hr@gsx*~xt@k-8-s?Q3mLe-eMZd9$(5^GP!k?VeO>>FpOu@Du$P z>MAuw<=>=ewxs^ejdiEwP4BDa$@LaTrucfS?~eYOv}(^?-fZFK2h; z)hx)eUcr0j`py`R{aq{Xx!hfAk+0=&J+d$_rp;Zm`CVj|<;_U5xYLCX3telY8NVJr zD^;|AL+|xpUa@6-mo4?O4mY)LF#f;Qqi#8$a|ngl^z!kmC>Go|ri*$8OUU>u=m0nHd-@NL{r`_u_r{`&XdZDPF zBkAmZWbd}?T$$JRwFT|{RxtPcM4yT7-jWw~O}1HTmwD@%(?c&=fhd;g+q=()*p}xba`i)DS@T7g*{5rgek^;a99knMlM{Xa z5zET|+uJwKIwSw(*^mDJDDq&{?2@Ue|I^*U6IIUk7I{5vJScX zmY?revY!&i?ECmztir)Bw`6yV`kt>oUh~DK?q}(OBuR^q%q6d;JU?!Gn4jJ6@}3Wq z`V^ZCJRLS4?wix_^5`M17S--Z-RwC{&wn>F?mnp|p~svcU$Xnpj3=#%J2|FY%w5{_ zXdQ1pm-i#}X|BBjJJwxz_r=pma@N-W8guv<8V=Zg(|ECS{k5&PRXEr7z2oqG6P?Jr zR(Gip+f>07o!eTZ73J@_ScQh14i#{kzbNA4vIlkZe_xrgF42oeKd-vw#5?WM6}(Ij z+=_Dky@DR6TUDo*R=ljdF#x@=5Z@3d;hQX*KI6Y zvj0)CjB}mx-8pB4R!N=DmN**q_2ayhYnq2XxZaztBjJ>iwzA~d+>VpoE7kOc&ihYV zX)kkrO?33**W3@qj2{31cTuQ=amTRf3_qId}Z&Ls)j+ixA6aM@dd zF?UB>_!Tefr)!QKc5yeFxJdKXH^z%)X?z_~-j*Mjdp1al@gDCf@x4{ykScTayH1wv zlDXPeYmYi!dbIxF875XiYsIVs=~-VlX>SvneN?^7!Fo+fd-_uMWQFM4yIzQF z^j~K1QFh(cb+5%0|D=2EuAFVNc5nZ?kSl^SOv|FyR9<)}Sn5$-DeTy9eeAr_>SZzd zYpl3Ft~zo|`gKnB<@o4m&zfc1{T`$;&)lg}bTv8dcW$LxW55zmuJpIO{2BR%Y#Z0; z*nfFc=fxekD7#$n`tsc57mAKs#D3`a$7wHO*eR;y^ubWvQ&CW4)~DLa-8b6|7O9?V zdct?`e#WI6KcA`@Wo$pOs4PQkv)0;=6FxTm3JwoHtGaKWM#$;AGwi3Dcp4vF?sIa7 zy5FQboC{8O-_HqN(lR$d-sJ7n{$`aYiMx#^DxChZkNH$2tNyx2vsZ8)iJY~3$@i5T z6=wK0Yi|92!}r~WSyE?e?REGTP4E(47OH>yXuef%>eB-~6^XXrR%CsyG&>hndFYEELeA{(3u=eR&xyHHMw+U9{=jEE{k7-v6yWXND?XJczX|ZUdFeA6Sk8`fP){OeH zj*WMw$Sp5!PZ<}ssZ7aYk6d&2g|GJJQuNcE*7HqId+~~l=H5WjElU^ORpB{$N&k1n z;(KP1M>i%cxKwsUJ#E2{qh~o;7!S>jiYq)7kWz7Z*UigSi_6~ggl<oxjX5supU%zyhP)}Lwfttwe*^3wbO}^50b+Omi8mG0}ii7vP`TA`B z#eEHy>%v4I|B_+wE1z&s|HgCg{4-mhPyfaF!Lyg)p)X6}hL=-VDz5|;OTN1hx2$dz zr+UGA>m)~W?V?5EJek}3Hpi|H@!(~5<89u-wQ8eMbd%!BAk&6x4_S*Yur;#REo$-a znRevJ$xTr@>sTK}_22aq_bao`nkr+us&Ny~ee;aO#aCK0u3h7M+dIixU+38O+6PI; zU;oGwe<|T1`bH%(?WQ3Abnl%3Z;Lc?=d;|<-E z)c)?0?%K%{x4*rSGU4OD%YLhVbWRpaU3z@W^OB9e9TA}u^_?E|hs|$`6+UsbCUNU` zHlc2z;stuQt5-DKm7Y50|PN`*K-7 zi{XM9n;8z8HX6+ASz%q~@?+PHwxy0Cn?0m^-S&DtKC-}3RcUe!cbs5EP8G*ZDU~he ziJdR)^K>;r9UeIKe7N*CYgxf+vw(S9W$mwpgsIuQFS-=XFL&nomP6kE6Svr9KDcnc z_w!Lpr>ln+Oz<`j4{xrD4xGDv(qX2PQimSC*>!QL+5dI-JM{h4JL=De#KrCln_sPz z@jgOTZF=k;he>}I%@tB-%9$b^7+JD1!bhxbWsR-0+7F5Q7yrD!xNC~sewU(sK28bm z7=#b3s(6z-UqR-w?GNQB+Yeo0#VbDNs8{USAlBdd>he4*RkLMRe%`w!TNfR&MYpAF zjZvULXFzC|c+~EEougCQEm`}v6|0>)e^q+sAHC}d`YR+8FPJTz`tY0miEYkvUp~`1 zBx}cF8U1p(&5X<>x6|k69G|xKwae-QyHj^x^jG-vf${ID2~!mtj&9-DdTM2K-MRkf ziz|8hu1l7v*IOTHn0=?8txop$-ARSXjO;A)BebGqFKo#=a_3m!R&|MHxpfMgUG3k+ z&D{0%wyW&VU_M)mugjOczSeoYrAdA}@68YDJyxmH9)6u=sc@!xZuPyeYht1ApW429 zzURyxO(9V&PP>#r@gm) z@@-z$TNSrND$$SopW9kHMnUg;nrsFo`nP-4P0r7`{He-f$+_QNZORq`r|L`{uVuwN zYPQ&VbMmi8Za*eXZZUrJbyt^Y&ikes(+iHQdsU53rJrB1f+6qmF`@g*R!vQK<(|0w z@*czNS0`q=I$oM-<$O9jW#6`$>;ERaUAyAktGyzdCY3$u+@g0o`s4>4t1mI{{&&sV zaO`Go`UIVt+nS3ei8CiuFOjvrawqwB*{j-+4HLet=lf+>`t{09ACXADr`E~S?0r9J zUn-E!dbRn@v&6-rff*%-+O*{l%?~`8UOP8WbecEQG9`1Z9nwBllOxNFv_3hO-a4OZ zF!hrLf9WlAmbfeaPwl64AGIt!oZ(oj{9ui>Nv7bAyWxD!>3-7|q}<^5O%`0sk+uB% z?Q180G7G$qX*_1kJ}2!dtAxOzMz6rE$g8h=zOB#Wiy z1|#j}2V1kGRb(WLZap}uvg3q~{_1qCYk6iJyhnw8r~Hgl?VS{UtnY~A^EoN=Q+%^> z!?&=S8mybSHfw{e*g1v0>7K8eC$V2&VX0Do@ybqh-R=5s4{`nNs5+#axl}*HIr4aZ z&3eN=rp@cR4^+H3_Eciwgvy&!THT(mF@2sLJ)2Yi`aPS|nakCD_>RP6E&uuD)sK7K zw>u{1*?(kIInkOqW%AxwPn)c*9r`&BB-D=0`L%^HY*yN~Z6DtyPgu2MvX$$#Pr5U= za!gtqa=R;JY17i16H+Y>UyZ(<=yuzE_v$N8FI(vF8-<6y{%-K_X5c-8r~DJEj&FJT zg6ICpqUj#q_G?${jnrSTq<@m1*KR>!hQ`|}&ikLaU;ek^uBFG)&DycIQWvzhp1Zpz z()XQ;=R4EN*G-(9Vf_~9JEw!ipcwW-_e*S|9A z?r_^({Ic#jkCIgEeo3_tCgIPDKUWxaHA_vdV6tDcFWPfKb(+TWK%ug~?aeD5KVClh z3R`VV$Zs2)f~RfMpR-r4YdTTBAk^wZ;J%&}-BVW?-?Pn~+pAVvzg|mk(z3}WM??Z0 zZF@_ePkp*-ne8s2Sj$z)QLo&8tf?!ydHCtw&+lfYobZ?!lql(T8$iYianL_WJ{c$WKxXa5_`x64AM zD!P~xDgq`jd}zP_^1nr&&Z;i$cX!IpvpLkY9k{O-I-~b>x{=TQI|g2hdxF%L{(gDK zphuPcdqGH=j2V> zeuE==*RrC|osQmGUMxx*=B(YkIV~ptzm{`C{&uxH6F+=Pu79SSYL&iIxZTE(@gj(*&8ZXH;tmUruh;yTVceaGSQoCoDwVgxgJm=0^ z_u|<6Kg_O4eR?pJpVvb$tsmrZH^iZ$%brN>&!X1?nQTlL5IMB`kY z_wTn{`yiLR_D1TJIj&ppILzdJxX!eD>(6tLe@*CGGE2}WgG+7k(&_6mDsOxD24<^1-MDS#1JAf_PH$C6s+ETnwhVo%E@iUjIXWB&W0+?;`+8=$=43070yK`3Ulh7KTB3y{#)nJ z78cg8E-$BFmDV^q&v2^X?4Z+|b9g4Ue3&r(gX6|j6UJ_*sMinF{&2T0ST;YXQLEre z^%m#Jr*@y-=bATX*Srs@d?AJ(-#?ujF7moh@B8wgRL8bktG303o`2Y{b?w(wcKMnQ z2~UmZ=%z4e>%CXnv*h-Y7t0Op+XIX_9KSTOf1Gfji}n7^+CNz)^8`*FyY(PSrq1cL z{W`~P(F-}Yw~jf*TTg6Tw)A9!RGIdis5Ok;aVz!n_c^W9P*n+c{_P*lyd?C*DW&cY z=QV`W+|0|@UXM9!Aa>BnX+_SQ*n5U-m;d&JF!sEDY7(@V_im<0^3002&%WG{$^7+c z)grOe$Kuv}$q3J{-Y@=Y!mRAwe~M<5unK>gqrYsJ3Ow8%b#zC-(yw=A zOEbPVoSdHOGI`4q>#A32uGWHQ%Hq5EI9aPJ@-AHV+rlzs${UxU{nr;9Y2LfkP1=6T z#hB;^Q(peNW6ip_EP3+_mp@*$AH9N9^Cs^PyQq6+lAFaso$bD-nZmBs9g@0#T)6hG zN#@qPdyjXWkS|m(pL0d_*<0HyE9AEw$a&>hn7iS}l8lC9d5^6hwT9M)%i6R>GrT*a zxa;tjzEbtyHO6NTtO;OZ`^l`pY?m?P_l)+m$+G-hC)IwXfiAPK4rL-eb*L%a%@Hw$EqU@i|W5LfWJAa%a@mTb`w zWofDlx%Me@*ONTC;3t#nU+fkwxova&x!=+H=spYiXwA9bCtf`_MR3hBRiCXJ(~n3s zdj4j6U&k!!c{uC#BzxtE?iEvbu6(~J(p2=Jr6jg>sb^hE!nKkI*Z$lTF=1&rnRVCC z(sI3T?#v^%w8h1L!`G#*53V*@?oys3y889JHB0VRZ<^OpS5zI< z&KP7m{cpR*Ut5Vi@7whsUFe_I_6cBJPw1;D67t54a#i~(=ksi5-6hQVb>Xg*nd@^uhi0@N zWYe6vQ2C_hw6?E?HM=91)%Z<(etP4y!;=mc*l+}T#?8~|UFup_E?Isr%&nCDajqHX zYL!Zd1;tBOw`@s&ziLOm==9oqn#=aS;SK7_y7g4Y_dkmsx9qgcZ#rei49XI=rg*75 z@R&B!(=p2F!0GaWJmTBg|$Lf3EEVKb{IrO#}Qoe^<*wT`ci(Tbv? zus1X66(bd2cbRfV%8Jc;W6u26aI;5&i&HhGUnRUX@$ zjT(Jo{mg0I8lHPnV%QhPver)ed;hCz?EjryuX4}aIAij9)qS>SW*N@Aj+`^wzgsKy z>QsJ)&!2BBahT|^nx{YHSGXVJo$8xKT)VgV%T28Rm-8{he5Q|>@cwo2)h*F;J1RHo z&f#ZH7iDi0esWc7zi?KZg@Tx+%kwF3xpb$*%I*<`?j2# zy~(8RT5gL7LwChQqrl(E7lZ;9?w8(OSh7TT%Up z(`#CU3no1k_q(vyWTCm|w7KiAwEz45hkyO&Q~6a@KOI+S1RUz$Fz5T*$ouR68OXVs z{oK0J@3iEj-5K#+q6b|WJk73c-L}Q##ntBrc15abr)c`VV4Ll;?7Y*jn?JsOd-dei z?29Mo|EheW^(<3NpY_HzotuH2Yo!b_jYN!2zWcI9eERg#r#1SehxHFd9qwwkQnXaM zUAD>Ox3_=PX~88re0+R8@7Jnc65Vvp(ls(#QB6F^W}RkJR7K;0^K*W#`F=q%EL!XQ z-S^9@O4pwG#<_NfyW>0dqMln@g;}niaxpypyd{&(k>R3o&Bjl9zY|a1I4`2L)MN3I z6luxWsXv}yzq_h@^VIvPf8YOQ(EW9LAAgtI+aC9S+o$`*Jnvj}{@S&zo3mzrot0;G zBqprITl;;&ZAN~@JiXl-Wo9$g>@=El{dwN~Oqp1JgfZcyt)kx2izWZd^ygQkcTbJH z;5X|i-!#Fk?xN==g_?eI?UtRrYUP>B)`cQZezxoUG<;Xjf8f3f^Av_<0t(_aCW}ma zwryHcu<2IXpQ#6r&%b+avreqi4$1cN)ms1c#mnxt_dfT`Q)y3he<2;J_&9X+z9kOR zKDQX|{^q+|=usobqC0cja$LhR#M)M``oDJWLfb{F&3UVK3a|Kba+}WNuQ|1~HpgXp z54FWvxL#3Cjr%M*TXXVc)qo87i=mTDekyI@KWfb@Xv+NTtj5_LUH{Cw9Nm+-Vv~J? z&ZW)y>;fo`K1WKP)eR)xq|9i^XM6LbKFJ0LC zu}EG`+EUYMsK?DF++szWn4XD*yk5kKBi5X{)DYJ1(A8jJA^ac&a=5{FAu2^*(a*c@KZ> zo5bHpd%W)JeXZ!rS*f|^Nz100LCh;>`-MKfyt6al-`q*LmXnPAu4UY9%3LZG zUw5l)UDgCq?dX!{3X!Yw)@+!5MtO&Y>Fzgd$KSRvDa~w~yRfHUZpWOs_{+HqY>j5l z6uz_VWWwG{DGR53k6OPyv+Z6_wQkM*3W3&IYv;MyD-@1pF`1gq_FJpCZo-=D*}a>5 zO|5n+{a6@cWfiy}X6LG{FIP`kd;Q*31N&!kZzI+_8g*9{A1`O{D|uuxXB&r_SWSDf zuf+RZPrvBKZ(4F&;+kB-1aH028QV|wonDsOoNThUIsfS7=`q}YzvdZDh@9iYd*aQS z(xY>>n<-96J$1~x+3@YAOZ{6kx!!h7(7QAF{|#HgDg}mo^`zrJ*YCgN^(QOhcWX6gM{#{Fj2#b$>u#uYiUt6y5= zTc2y5Ca`Yv1s=~A)=Ntmg4dQ#?%U)PUi@NP-?aRF4o{MT?i4ZoNW7czz}`1dD#_zy z%EM}H5t071r`n++zPk_Kbc`(&O`Ugz|CiX-_mYxv$IoqA61x6dPy*Y|U6WTXO!bb{ zE`OQu`9-N-kxkPU>xt7>_xZ0qQX_t8ue!nADPqNM&)ohNt^VS#Tn3xYzLq!LiEa~f z_bcB&_RDJ5My2D%nrry=^jw6tv3mzZ&X_r~$JMa1aI^4TuOr$I3qPfwdwq^GJx-PB zc=8O6P)q(hKMrQid48|{z~yUvmA8KVt`KPd^6-GPf{a6WPVgNSsVD1s7w0UN{88dI zGp1K(gZ7%e-xyagF3?}j)K{5QXw)TRllj}6Z5Ic=lz+*@vsmDLmdNE@G=?-ilp{J&l~-rHIG=Gi3%;kRF3 zhfmmW`t!O+(=PHj&wcD@eKlxxi^{UIS3U$?$f`?!^hI>e2NBjwNA)tVmmE0z<&)2H zSEI$xGk?q#n3r{4GTt-vLg>qhPc*MKp1U72@n!tBPS@S{6NI>Dxj!f=-N$03lAp%o zv1_ZuQP*pX9OdgBf_H4%w{zFwqkkUd)I}#xyEOUa6V6XdE9Jj$Q5N|3Vs);_(`%)! z2NvEciJ4b*HrMujvvTy2i{Cs#Z~Je%y4r?sZ9uE1@?OovF2}xYpKS7u_eGw`{#Ibf z@AEAE)g$}A%l{{zJNx3~JJ3l=Gt)BJlwy?*mU)bJ90|xR@->E*ghz%$#inN zG2dKZ&-KmL9OXTy&m_0cFPP(e>#h9j)YeCw@H3c~d;OnZ4952*vaDQL@Kl>-YcT>}>4xEO`Dk|4A-g8oHwA`OH)1o^lKK9=gOdH6`ne z!{+s$_>2xq{amf0FRX9;c|!R`i|e0M+AH1p40rC!o6+syFYlGW{&{Qavu8WbZ+Y~f zgllJds&C-AjfZODh4iQ1RKD&f$o|@r<8pz{C1-1nT)i6mMU8%YOxt&QKJ3yyyt1zT z)1RkCd%Hd{bIIM-?$UNEyz_7OY|o#)*N*;qCM_DPsafh*J-=D>#xCES#j zv%It36F;q&vpv`)Yu%yZ$N5*3Gkj9nH6BGC{kSh<|M9|Pe$ic~{%P0OMv1#>97>hA z#4qvk%UK~`zYMNysh<GfHJ$79@xq)KhcM62 zsutGU7d$t*=UsWqFK+3A^ra6(=WdDrUOm}ieR1aG+){DbPmR_l93uA~@%&e^o5Vkb z>lu&aW4H3I3#-LnontgJt@fLzc<_EvI8<{d1I1sQV## zDE|UW&E!;d`~8kP-}LJ1UXKUn<@_VPxO#Ak9-E&vxTmMS+ew8`Q^Z2snp`yK{eYM!v46j!%SB~w=)BN>a z^sWZiJ7c3?G57zqc>Yo>%Gs24^=fT+wT`-flx5%c9kCo2KP?KmWcfIK)|EFrd*&`* zd2#!`w~OO*;!aDx;i)|1;WhJmX*{^CB=Tbe~T4okDc`G=X?34g9!!K z-#68XJ@FKCxMKLj`CqcwUDovOX4!1VsmpDco$JK<_Sa0CS>$jbOXJ&vze)n`PwM{O zvNzZ4*myoSd1b_nWBq@+4~XAyJiYeJLxEm#wrc(K>t3#kn*&+p$`)-8+xxtQc*);1_K%wyWRQe7#z~!=GKTaq{_HZ`D2aa5ep^v*o`V zo~mjmnD^{RNy+o8NkR*6Xs^|^^uPY7GVJH&q)%U7KJj$Fc-Aaod&UoLwdLH;lZtr^ zCwQvXCoo_0So`dnymzCSj|aQ(mv5UcdF*po!f^H5k#~yCmmYG|Zd~-iQZs7%ru4TK zHayO9X65z!eyRE1tmbfOZ+vs*-rBzZ$EBR~I4wgDO{v|l`SOPGuAMb6O7p%<_g7`S z8FxNC=aYJLIq$DY0q%y{jSXqN z)z;aQGjH&HXUw%a8@_n^2Db2w)%&`(*D5JAXUhCc2<)FOqOi2=)3lnxOY7gV@yutO zdra?pT6jR5m;Vj!%$H6HE3?}lE-`-iRrJfr7mlX?yFbXht`|w$*?w3=m}j4Jsqy}HXcAn-tU%T^X>gI)0=d0fNDBR|? z%UN7~mrTsHW`!iyx!)dci?>O5_wr?m-F>g4VTB@nKUZg62sf&34Bxb4?s<9R-#KFE z&+l2D^m$60|BtsXlj5F#>9cGN7oKnXv0q$#n?icc?^KEU^nca|cmJ;4zITuQAM4rs z>vtsD=ls%LZZK=wg9T^SFuP8h&CkD#ZFS`QqHcKPu_Vi*z|G70gcnKJCqdWyiL8jS)=1()BHh+YWG2*d z{JC&>?TP!(q6Kr#9uxhdS~uNg-lNTuZFP%!?%KXPFMsvcnV02xc9(cwtT(qj^8bbN z_EPz6rbkUg=Er5dGJYT3(d>M(?ZD%_e~CYMOA-}a<@UE~xK}a7p5K1?)XA2L08agi z^Tt!+9ef=A?p=4}iIULgqmMq;%ySRCB9(gmxq_|g6F&Y^&6zu&=WXU=Jv05pdUKm1 z%^NJ=FHR`^zi$2KJ1g}s?o9tt!+A9z#URN3!|#5d!kRk@(@hi4)^t1&>eNj2T*fTW z!@#oiUi8!#W$)w8>o{*$dlciZyEv4&{M)>k$?~V|T~aG=2Y*QU$9(^7mq>CJgJm7x zFL9nbiW}^}N2*@xOfE`)5~=9oF-n{&Gd zC-)Mj;*A$`V}sYkPmcVid*y8z>$S5voC-}&ysvbN8g5O!kSTodKbNw%_SPsLpX>`x z>XDw(vQAzS3px27zUVq9H)H#ksJ;W43%2hTv#p%jJjw1xW1y1sp{IAWXUR6+m(6W| z#6DxTgW**{m2|}i*XkOTzHrQB?y}A6VXm6rak*}B-z=$|d!}p8WnbvFyS8gWt^D7d zmd#&Yd1=eYXnfeTV6yi=l{DjP8*Oh&1@Vb|o^<)L`gh(b+crsSyqm1LE%$@D<$R}d z_47v;q)zvXV^5r)9{;UGyzcHwwp&tdRbNw`+WVA4J6>ikZ#49sky~V$qsgX};iGWq z$?@g$O($QzT(z#)j^*QvndbkOth9WyaEffUUbRvC3tR7fKF6NT{nEG2YLV#XrSp?+ zY!_)S`(1lT{%l>mf{oL1CA;3274ho4MaS>$xh%C{*-Cct3uZ}|I?w%75{=qd#kZbG zjqR<3|6hr@8zO(T<>iKbf4fy|MfmjvKi6gMzm@vqjhA?eVmALa5349SiS1MH+PI(`%o@vV1bNl7Dpt%Lv zr;2AL-k2RI^`P&^+=Z)+C3dcKTzT$KP)Nc3UD_odmwl{^SFhzgwY_jt|LV0yvW+|U z%F8dSR`8ly(Gqjfkva3XX4LGf%Z|T1y#B7eN#>%`6}^|Ve&%>hfAF^G&xG|~&Z|zo z9<_Grmc{zHRaY*WoP43QA#blcr^pfW7K<%`FaH$GDDg6`?%A?sqMP#NE0>S`&U@aL zud$_i$?bJb4?B+@+Qcp)rE7m_N1_7j{!-q{r-i$sp&knx}Yi6t|mHoM)tn{?Q$;B_0JMEmj?q>Q+$L>9Exi+(^De`BO{ZAA> z-e9)o@+X54~MScbM><6^dn!FN)os2JVXzO5OO=f6zB`KO+b`>YomBW~T>u=vg1 zFmY-ANN&Nc7nHQkdCyL04K5J)q#{r^fBsFyA9GJ`@IAYK7JHbb+U`>YnumRpX3p05 z{&$xB=E*1co(kSwzfv$%ZuySe3+wkd^JfM4Ep0WLxFJM6MchK=lZ^HI*IH)gDOrm$ zgcp8@Zc}TO(&|w6pGThCqZ zzac?wt{{)@K}Mc~B0o#dv|Y00x?J@06+?PkO-N*(%FUhOkv8w&*0Z($-XvG{B!AmA zQLC4?M2bFc5YN6R_bJ;`zDxFaQLswhTha8=`Sv^36g^~DxG%9d(B{LXnhVG4?tiU) z|Alwq!d>Qq72(XK(-wQ$5|ct%=WPSyg32^@4o@9~+lm4vuQ%3_YbCzU;h( z(VHhx(TbUj*VWp)*k+%ZCNfVgdskss{u&iS4GZsY6SlwYO`Pk>pZ26=vD6&4U)>9r zHn^r&>8<0uEAY54_ul(oH|k6xbzWJ$@Xvp~{HM+HAwj9pzv-*krVHszAdOw<)W0 zey}rL;9cKRxMBUQ0EwX3H`ZpAx|6a+#9r)*k=J{6>&g2G$qZjTy7e+Hp7&Yjl{)9{ zod$WM>}zgC3!a*|$O&IK>d^0aBVfwcJ-YL!@0ho~>av9552v)>DJIpi&zv&aTBkq9QUqJaQxw~=(YWokiqW-mmFr--YI`odY%8%b@vv*-8c40$GXP4u-_3} zCI7=wUt;_IzY3vG93=%7FMj#`(+A_@kL42At=(boaCR5hs#~VJ7rc)$5WRh@?`oWz zaG^5mJ2CFQTj%QMw%1PASvbFc)4}bPa!adyE~V}Cdl69bWc}@I-AO#HEE}~Af&?

vw^{=Hrkq)*oxJFgYy0w4$D{zCPb)oAzAmv(z0Y2} z-F49(&r@l#PM7w)&N9zj$7{VK<xobIEGU&>`Mf!ePvO$EwF{>!|11!fjj}$obbGFg zyX(`-OAoD7P`Fx@=05*^nBkZEXPqbfUmiIr=CkDg-bb=aXCC~AG`#-0^{QR|&cJOi=Oz9<))kijeR7T;N0&~o*#}3tnNh|M{l7lQ_3jsY z{6EgUQCuq~#eI9>-+7)VW4lDnVa07rzFN+HzI4;`pAwnX!IzJSX3XO7zTLd> zhQUoOOMB+^?3c6>7rtK2dvp&MkCCp_WL1kxH9p_fXE(adQB<72uhTSZfxtn%bD7M7 zRcST*cqf;77xsE;XPTCry}^CPxB8*QqWZZvrk;5D>7v!;zH>=ThcB&q!Ba0Jd->oR z@z1}+N@9&eSOlZC*KewDYHRoVc7|_m-|8Q69uDO`eH@c(Cv92p`v1qbzF+JouC0iP zN$w9=w`tRsQiFVlz&8_<3W8k{KU5mrxvzbCZF0)yz@5CO|2Et`;JaP$|BbQ>Q4{BP z`0;Po*Hr6YIA?vOr5NL+V_rqlmv#lO)p_sZ-(dXPTq`|lz2EYG%)BZ8p3YvKKf~v# zVV3_%Q&+xR^DT|j4cmXe%YUkS;5ODYkO|KCLFSGqfomWo85|csqNBr zN7=XaIUj!c{kNfc)X5V4Nz&b!;u3e?-PS!OnJ*;d+3Fv%fY0oZ4xsj-X|=$ znvwQu3;tP@UjNgeyh zc3yKabE}KPN?#K;mVKHBUk7eA?0P!y6hrmbwDTXg`?a2oSM^HvvpYA->`8P#-w{SP zEBOTr9lod5B=ROTGu`uWF~8tvW$+|(`9v+&$x*S>{Lj6}5LR3E;^nVtTPJTm%v*FL z``XVH9+zZmCP$uI>l+-FW|AX#cJA?EC(o|CwXMCf;T)x$eh>zQ<-Q8HFOeCu5eqdt7(< z`c@V18fOMphDmjGWpk%KuK&-RwmWg#vekDy&i35D;o}%mBzo#q&riQl_MD&U69V@C zoSwhW@%&{IPan-4kK41fS9K*gh=!i43|?5Mvm03((2hH zsTyB5v&K@cJ+t?<`-xkJW|#+j{n~vqJmve_hYNSk(0Mlb=;UsbNgo$Ydzhk_8UIG5 z+v(1Og+`MUi}bJc^H|9|`TD|Ar9WkcW8@M=?VzHyGMOgJerm7fO{vXnJaqH(rU^ca z{I6|2sg!ZivGr!ag!_@_IUaTXR5dwuVk&QX@a${Pik&LhiNyj4wBnCX`B8 zC4QZodRk@Y?>F)9+&ul`i@Y08=86^f-+8Vz+x1D<(^K#3mpGWNdRCilwfFopze1D! zbAx+kh2P#K_HV+3Q%4Hltu~Zz*7B`m*xRPTda>x!f~)Y%_@tR{t)}gmhm!m-F_Kg_i*j!M@p*> z|FSIm6U6;NQF*rN-HaBd*p=4Tep{9}HlK-@RXRuN>HQxGOAB@WeSO-u=sA-O`=;>O zp1pEk7j@|UsEog1XL&iG>P~<4*Ehzx$+z}YZp)gOxifS2q3-$;x$aw> z)7QGP?9FebgFL?S!A&*w@4nv=YEG-Dl=r!Do-MIsarDoB&rUj3O;(@$|I?Oxoxhz5 zzI}OlIZpK7nt3rB*eCCs;jgxR@`|pj%q!k*j4RroK1Y@_@b`4?hxgBk*X{Z6$oky< zEjQOa|8nuo{H{ms^ErNB6Y;-vXoraPHSQ@Z`n1ZWU6lMU7;m0gE?@d}^Pj(3(M_9I z{+b{+@4}q>ub!!_o1`(D{r5SQvx--~7+zU>l4FtgEkR2o)>=Ck6F$z1XB4t6CcK)Z z%tw%t!~DF+%JPF5za6?YxuUQ0l(6p2vC3SMd;ZYBYfgduFCS zI&87HVR_ZY+CW|nhI!w$3)D_YTd2AIi>sY-ZGq_u?MNND(?=hlY|-KT%POK)8h!in z?Y`QtPhPK|=eMuQtFJiLp#5BY;DeeL|D602VIK9z=Xjn!mmp!nF5qRi<@J64MSsKuUri`BO#JHdZuW`3$Dvir zpL-@7`|X~2dG|@becjc6KiGUvEqHBOS{r>oE~GT1{8Fc=#)jx6(`FlNnEWH7N4$)E-m@t({{fs{;shpbDjTEkATy9687urd=`A?ao}7ReK8=!Kzgy2>$>dVT2mG>h3&1h+uDqO1xq4VrF#CjwXBz;`Te1P)-SAIwZv3? zmDbQqEcIE~87u#J>$3by-(9lf@&%a^3w}qL-ZT+x44V^hnKwya_q5-}L^p@dbaz+p zXMXK#9rmU!(+{m=Fv?l+bImc2{{O`@C%xw~%K9zm@MPDQnP(z8+$!|MX8RWA{XbyV zntNG%%4W4Et#?e1PySaEZm{d`x1GPA_g#K^xn@Il?P<=ym9?U~RHxf55s;D3?)_+N zwa;e3<-IQE2VNZ6Atia4?V~@lp{_ucQ^^?*M$Ou*x+=dHCM=XZ#HJnAvi8~oox{pL z@(Mo=&P&{8E%p4wHnBHWH?u38mQ0*@^|iYHyb1rMOw8QYSlX7K*EP9+t)w?az?b!w z-ofyt#;Kb-F7#ei`K~4|d-F(Z@yqH7ca#*kRtMIbuH66Y6`$MO%O5XTMYOdPSvLH- zr}eBj+2VCcl?^$<;L1`Dd;j?yKxPn5*15EkNq}BQsTDxjm{W|;lqIBxr;ySx1P1`#U)3{EW*`{}>=WFcf z`hCgbKxeEJd!+i0pG$4`-01hYVC5Q9ZvSQ1giTUcQVh*f%*}F&{|V zl3>kb>s!bB>@LqbZNq3di%-#Lht#vnm%gw4n!NnxJkLw(PO`jiDm*`1xcjT8^ewi7 z=l2=wOq48IeCqj&`S|%P;m>*cD%YS2RZa(DgP|7tKE@MzEp!bLOC0jU0%_YVLXSi z$mi(ICxQQ;^vraWU02wdq3Iuzbv0f#-)w)*y9jR;=>xXgrp>fZBFfr(=g!;A zwJVl?UC=BM_2cTMNp{iY8w5mbzkbY^rMLOu@)>^8B^sIYBQjnr{-56x?_*xFQR>(= zn-krOq@QHodm4MEck7)#uN<*|Cw8QKIAwXK@cpLdh12U#Sa07g{rvv&kK5hL|DXC- z^_{;weCLZ}b6*%de0qXk&$jH@(WyBOLig^iUv%Kg*^Qas#8h|ov}a{S{^@?+E=p0u0if>9B3%q5w@H1^*tEacx`_r52y!+$c?^?Y0-xrfLGP|#yEdTW5 z{khn1IqzTc{w(^qTtm;xF6v_+0%uDR0k~$VMi)5Dkv?j_LCk89iJV7Ry(l zsCd(fD=ZA)JRlGI|O`Emp2=<8t0uQo$v9^^uI|4wkI4V?4$3Rfb+>Z|3@xz45!!3^!&sPueEM7zuz|gdD}#GZpN{s;Ccp84?1y7NbnZvsX%S7P~M6&ul3Prt(d z&)8T5b$L7*f;R}=+*Woy?ZR2xguXeNs`-!aE&0(JR#4M%pilO@$b+l1&x;-Zo@f3g z;Q6-Nb7o(5&fLJ+^C2Z~+rOuKZ>7|h`n{ITa*;6eRZrT)c4no9!nu00X$z~59J&)? zzix>N$D`}Dccz6N$V$w6wMR8Yk}dE_s{8S_T}vc(cfIzle1EcGq59{S%R{eU6WJg3 z_pg=IK8`;>or2$sx5WNhpRZniO;`N0z^|4kIo!7GKf>3w3;usGxp>Q|#J{D_MIx@x zezfC%Zq2F}Zrg{f$!5E(2B8tovurzgXpBHp#MM z!y4uN#us*7*gLP%dsC<0y7n~Tw}y`y7hXt}c>Zy_WBQ)>gDP@QE7vV6xzB%|BS^qt zv2JRL$j)oK1eu)rkDZ7(w#c};>PfDuoKv#UFAWLF{v&fZiu}!c6&shUr%qAejjT#* zt1JwxS>rlEdx=BN+`o?}8~-e?|9c6w`yg_>eM^gY_ zq{FAZ=Vu@4v%21WxLWqU@b~y4zXxYtPJRFVZJxQ zXJCYSaGfF^#BTNDy~-hKP3Aa?ONd%nOWh- zvmXQnNdD+mTAcCLo%7Mb_VXGZ9If8BkC%RFSmkkI!kPq`GujjM{I<-ios{7B=W395 z`WzooW%WxR^f|@;wRASO6lgSV$SPR;Tqn?`c7kRc%lqEi*BMb+rZ!LR zT`AcjFF9|YYw`uhOCE7ik>1xBXJ&pe70=P0_+#sq9R~}vMR%Us%MiHooAFYG^+soP zxPHdxSscBclAMzvsU5+;NpbeSZ#!=6tyU@gWHMQG`SN{@tYe}xbYfa8dt!;L0$Id*zS`+(W(uUth!_Vpa|Nkhz|JU&>qlFLHyx(1# zKB0Wi-oFkK*M&tUn0%UZ_u}mK@49kJ5awX@= zl#Yl=yq6|AF`wsrxKn60e_}S*_G#5Og+=TyDB4RIUYITF=&<(Ep_4^Tdl(5Ha5{q)4&n`4R8WeKmDp6(lUcgUE} zJA8Xz_{B%lQR4^m|CJWCBz@T*Qor(9@HUCV44W1`bvqTYf5z`U zGg*I5cN55*yT`%yM6;uP+ehnv3pLKw|62LuYfbUL5A~l`vTVL4@#DwTcFo2qk}m?1 zTVHXqnL0&ONbn{yNPf|pdi%-y_|#QCz9me{yZjVHj!8)0+8^k_pW4nMEE$mzS^EBZ zmEDb$d44~yo|*c5`gEPZ>u2{>EK}&!Q%vez=K4?})MEYT1-GjdcV0d9@wLsDBTHAf zzMbsL#d}>`+%f)ZHk0K0-}4^a=Q(v{&wkOCe-_qtC%TF!d!NiP|9-p9A>+t=sVp`J zPx1evT}BOjo8#)9^hdK<>V4gLhND%P$8N_=rpdt}r+VCi&Ci^D#;#W0W1Bzg1N{H~lR@+`YAb4H@Tld1FnL|7)=E@_D{ zpS`j6!^s5c?fON#xM#2PT2^!4_voZ|MlOdAK2c1Uj?Rnu=|8(Yd9r+4`{t$QY7wbN zGbXuIoz%HyHtFIciMNw4#JH&09~4!%?UjCOV&LAu-}{~)GI`4P*}Es;>TNcSgxbAo zF&7qXy&Q4rlS@q2Uyd*FY_@IA2W1u>^(u@vi@cSy=iv^Mn=_dH%r~pIvCr4J`h3C> z)5|6%(>CvFT3+6Abd8Yn#Z%3HL-?KNrP#!3EnMQ&^q}p`%?}D^rIc3|y=K_Cj%|J$ z)9U&K(QI~8BdrxCY0Q=La#*oo@wf8-mBn>3wwo^UILJ*~SM+&q%5*(jL#;&;NsSdt zIQ07i1h%I+yRX}75bB&BX1wA2OQFiCcNd8oF1i08a)Ea0L$RZ6g`3_^$_~AHcwL{x zec>0m$2<4VbnVyu#PfEtqk#26Q%B*h*y=MA^ zIJZ~bZn?ydZ}%T{#`}l~7tN@-ba}r=x@c`%zDRdv!STo(CicblFXyl5TA&l<$G>Tt z@`~I3a$n(aQHYMc{m&E(#oTx0{>5lvMYps=f z;!(ONWQ}$DOKbMye||_L>PJ)<>n+jwZqrs8-PT&kacS4e;Pkb3jW?e@^kJ@_RIzZ> zo5LIKmedrl`B69bqcrn^UccV=$9R-_CF_4)%9#{tpMP@U#a7emjJ*MWZaFE(zU?}^ z$RJ|lZ`1WxV7AqQ5UAY++BeAXL%zUrM-4eb!7u&C# z4R(Gip!h(0@#p+y66YBf@+y1xCNy!pQwiR=ct^QI;rmxYbMC*{6~BISwyoauo&&sD zdh^cyEEfHJVO9Q)dHil>M{<7Z?3^-huVu02t)wWf)N9{P@$6l^|E2EANpe#w_nb`* znOU{(?nv$0bGbXj-Y--= zW#qKOe!JF!4Vjr$h1kUESKUGXKX2% zV?68F!StEeoImsJGUF0cpEBnBdg%Uy<-Q>| z46m+@d#x4ZUCvOO)HZ4Q_pW<|dcW`dEOBoSz4ZFPF40Rid*@!?zI^-k3&JW7wp5D0 zv^zbOqvmkx_g?{)p?mlGzwbZ)uT3?hOTIl;p-QkurXl5w)3osD=Vv~I?flI2IlZ}W zPr(Q4ov-=#r>~vMwm0&XUSL)1$HHG-(qA4zbuO z%=j*Mxqj1Bt5u&qyqUCU(&<@E*S?C2=^i$Gwjn}b@>$zkDc5ADA9VGNztYXCk+<3H zWx#xgglRmCj>ls7yN^FeHj&wK?UKx%7d@(K&9V!Y_nhy!aat!vfumng%R6)PVySbc zYu0Qq^AkCG-t@!u3XcR;X8##E+H=EiEADm{OlWHB3BPb-$K~pPPhYK5yngT6Jmv9^ zy;Hv1FYVoVr0bfT#=6j{d-DIV&t3E0w0_+)zoU0t4R+4GbN<)@S%=8Qm1Z-WMfT3H zV5xtqdFtZdJDM>QRzE*DG4g5Y{9U&ng|2LV`DA9vjy*0@kEF0noVoH8i?U;Cb>xQA zksA6p)Q($a1fJhEcWQf~`ki@)-k7?DPCce`&d-Z0asOe4nMRTB;uBiVaU8uQ-75Sg zeQ%4Nn%70$^|vJ5_?&((Z*B2kwaUSm!zlJ=>$6{`KlyybHmqs(YcNUs_@qH;8FR>@ z{ACy7x96QQ;S7sXKNB&p$ALGv(f(?#qPf($v^T5wAAEk#~+U?X_zD)b#ar%raSdb^E#^H)X3PhWKF8viQxKDXBzOwulys1!v!Fr|g z=WX-OmQ_~Q+Ez+%Gs&U@*=X$v>-19d6Y>@d^ zdAMBhvah{XB2TJQSG8~Iw#6og&(%9x^QEb-O{iSUx2$T`@}*9nRKEnA+Fc_uv;Ix$ zi6?8>`@Ys0bY7aA_+r9_%H^z=(*CGQE!&Z2a%HFM(Wk=y=WINC>{!0Z=d1@E6Kd`@ zI5uo=x+PWn^^?}okBZr!lz(m%xN>>Y+UV%5FB=`zZB=fsh)Xm$qs=NJv54Oy)mwMz zpZm|haUC|jY{1I>D`lt6&R-JA5>+)7(;`HE&YyjJQubOo-@A*8uiw$oTyMU~V(o{E z4yRYO{)$$U&uQGB#r$JV-L{`Q@BAsL`@bl8OHu5kyT0o#?C+TIK&$z$c^b<>-x+l! zQ>XkckFeL@D)OlDWtLnEn_9<>mnXz(Q-p3=v|qd1_u;0S(~|ys{@33BDBbaVzoN9I zsYZf|chKb7)@%P4-KyqIUd6d^;`WWvK3oA&Yrfgb!PWxI={b2Yw?9U^ENb;c09#x%#DZ4{Ptf*)dh(?B0FHV}6CR%>A(ZqGiCsFWcNAgZ9+dKaV$i z)e^wm!d;)x(XMF|q;~VX<3{7n{?(T|>g{LDeOWn2-unLZ2RWjLzGQFPX<+}1`)u6v zt0uv{|6Uxib8TP$pL3S>b9>u2e>Z#lU0FNr3)_>$!KT05wmwf^!+ZGYq}>Wtsjo!; zedoD<>w@xy;Q8fGi&y7-kL=%C=l=bn>CF3P4;Oi!DDOQh>o@Vmtp)+EHP3$Sk_=`@ zZw=R+{wZ{>u-2Zq#U~`A&PIEmNVA>0ZKc*%27%gUDUvp37v{pt*S z@#4*$SvsGr6n|S*UcbdwJS$@zTeL7M|d;!-5ljeqs8pK;1Z zZ+GT2wQah&OOA6@J-)*^>3s9Qi`@G&jxD_7z&ZPG#_h)i?7P%-m8|zgEclcX<#wok zi?aUqCwrU?x~FMMsy%c&bx!c%jb#zqUzWW1vL&iYbgpzEmyLh^$Fv?9ab!z z^i}nNPnLn@v-XmL*9}`2a9TXcVPCW^?Q_EIM6EssZnH$Wv*cO7ZyRrRqvV>{p?UmEUw9)z1r@B zd~A(eJd5K~b5WP18M1r5*VGke{?k5c=G61GCh0wXyIdBoZxG0;uv_~LfXEGdkT4@S4=OMU}hwvX89_%<=?Ed^5tUw>iy!= z#XsA{9hs|a9HKF|rqp~=*{ooWZEIV?SIqF&%VC;zDR@yE3(uEpEsuTFm?Z7DM1|EZ znfLOGcf?O)>6EYjcBh$lE2+eWCdGC0eR_OJha~EA(BJsaQ zwSw_yRFS5Sz>iGrznOM*lZ@o@Vty8s$Nf2Su3T%*976*($D_SgikxbDn~I!wKi8kY zsAJXN#L;zr@#dyCXY`-^Q96B#`}g(tFGS5n2`=c_YCL7M!vUlfK z`<*%!{Ix6m>qV>c%+veMwtYQR+$TCW`#Iz9@R=rM+d1Vj{&frAzd2`qyxqhtYzsv8 zNi_ZC3XPnd(|pZstIph8K{wOzA_f-(IH2 znVp$xmzhu7T@K8?d_J>R^T4{f^P1eBw|-!+>uAZo{mpjnjG5<-Tu|N~b|pM$l6!#l z6x*|IF)=Yem^ZxsTbXZvY36^+8g3)oEk9U1Uf5sZesN3TtcCa*A+tq4ckQeBps;#Q z$8Yzo7XBO3KEFD@weZyq8D*be{mcE`g(RlL&9Yp3;F`IyV$Q|iy79@=7_;;@{4C*_ z`r+`TfJ0j61H843*WNj_dhf(NXSUZlmX}rEU-;t3;(bw8#jf>*KOdZVySLkI^^#7< z?t8*K|5v^F{op}~+ok#*)~|*>GWr`^t{**K^w~M)`~R2)Upa1?gqP^46noz-OI@Py z^i}Zgv>FrdC1D#&=KN}G-rXj2D**#^)G^Mt84s+M1?-JdayUA`@!6mhJ!xslGmp1=;7^QB! z*y`bhiwl&`TBUn0T%|fch^PMFhyBjxTg@iF-Wv7!tL*OADt{T&-m1Ji7{=JTt>anx zo_Y6g&G@zQrn0U~&}VKx#rZz-{Pwx!+w7eD_oFm%sEAUpXUjMKO>VI^IWnG zk4B%_=D92S`jd&hR_$99f32xsn415MD|w5Q=pw#D;8)&Vv)~XpO@Nq7R87!*gBhaIe-4FWdeWp{g|zKFvWLcp3vs9ElYB(oqz4V zap`|^)R%n%c?)bZBu;;NpcWk+`G|*M=hS`WUt*tzO#f{dYa3jW#}i_Gig`t_U+|Rk z8I^oOE1ECmyJzTyE;|{#a_XX488^B2&;D<`R`zpk*Z$i}c0Gvxc=6Ig-pg4F8#iA` zwzT>k|!E0@^rq;`_UupB5N zh3l%{Rcl*#luQ@QE`Ay&xc}Op@U9t?kF`j1McNcri%%AjwmrC%H#g(?#wP{Gxy|m0 zw$DDwY`rdD{j=PXpt%M+&;4%c)LoJq?#g18B%9K8i1G8oKWi#&>SOMod$VYE%$AZb zpE_^Y{MGlLSF^YB*HvM+w&cS;+xI)CpEnWCxX-Yup_A!O^zL1+=0>P8-V=*FUQx8~ z+2#}XCv0@7@kxBMzmw@{+>}j9ru^UjMn9Qj)K_%h$5c7lET{ixi*U^I3+{{Dxqp^+ ze{9*qEi{f9mbI#pbe3f^J%JRstqzQc!e~9c_e{oL#=jk6s@2$MUzi(No z1>dZ@r`?{pR{Lyk(L3ii?`!(Iy=y)iT(PaVXOJ83UU8eE8Bth<9m+-D&b`F^yvtp|| zTZ2x&NZ`uf?Z>giBwO@;-LCWdOoN{J|5_BWdh_ys^10tGx82-bTxI$!x8-ngdmp3z zooim#dgn}8>yxzKrKI=jtCH}A zo?0ap%i6p)>3lsu=lIu@b9(yy-37^7)=AUmmapF%s#El}x`A zQ(m0oS2gEJZ?4J_OZiWmJ@xlsK+a-lotSD+$Zwc=*dv@@;|I_`obGP3A-hF)X z&qsyYhEa*94n-chRdo17=>2=g)UP{RopvjAT)s!Au}mWE_l8I>>Dt=lg^s&Sg_bRy zIKxcS%v+`;@6{`h4~ujqvNj8JH>Fv&9iD2up=EjG6>I)EtCD7V-ac{LV3SgE>a6iTC(dZSjdTB^+OI2a^Us_2JGzu1IHuMTXwdv~_g2X`lXWexe-z}mR5xQD-%I~b(;oLHBdw`#>M&YLeaEADR$ zu{!*qbN|$(!QngOa=*Rier*4yQPCsu&%r}ir_W%0S0CHN|L%$6*Hzym{)?4`ZsACGA#a`n=-IP1&rya%PjAru_d< z+Go2^?O0#iOq=6-tz#u^5?H@3EO@)=<%Bo^xdCgC?K3(&@&hH~!vN_wU4c{?PWj zw=REvyF+<{SF*7A1A)ocidH4RS6V-z?q)$%?M7{(Id3^#UR7??RxdGjd>!`kA4lx| zUFjM!NBoza*>LVuZ}Pj<=M9>@gUX+4*Lnp4zF%2oB-ydtAG*a9 zWy5QMuhZLR3MqQbXpK<6mcD%RWu>2A^M1M?+MYb?=@XfTgU>?jzkfZec2n(*hpEBW zD(TzRx7io%ShPCtTl2K(f?C(@%f&jEhrL{2Eb*^I$3*4cjWXWGE&6pEC+rUTH|6yF zf5seZ6n=;@X#V^>IY_W*U%lC{zKI6^H+vp(|M-&ghih$e!~+(+uU1l%BpCSOclr6H z&SXBnIzUi;O2d7t?>a}OY=~N!@Tkei^TfCL4@v^0|0SuY7uhUac`JmWQMy{lPRsP$ z?n2XLpK_X7CC+?O)p)x(Oi9A`_7CAVMJ(@E`oD00!*yKpFq2Pu@Z+WyG1K=a*uuL4 zvu|y9els{-C(lZ1deStRIgf4@Dt(=`ror7Wd6tgGS@)K{gE|4X_&Qpo>%-EC$?BFjRqnr*%87LJMCMrEJ*N-g=Iw3`@F&~-`M>EFV20x?K}OjtF%V1 z__~PpWqTdoZ?E|HXw~-Ddn=ibZU6iutMKcikB=tg98IrV{Y^7B-|j*a>#}oVE3c*B zoE6M7F}B#dy^BAYYsbPhC*E}j%)cAynszwzv(g{C5QjCAezVQ~9=Ve>Dd~6qsmbp) zBxHTn+m`j|Oz`FM53H=do6a2aF?i6dT-=^?oA1MP(+?-(Rc@#&n}xaO#!N}O*|3Af zVO~n_DdP(EuH0SRZ`6*QF_MsGROol##%922f7ongi^8h-xVV@jo-e2SO%0D*{fW8x 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�bmgvttFXd?gOk7hdi6{F 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

%(=w9Nsf6Y7pxJAr9_I|_hg2|m> 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ð65Ixk-_A?@O^L!5o9f~)V>%=^_> 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

$@#zjiRc_21DXDCQ=+U|mst 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 a_G=!Slq2mHOkiMOVDNPHb6Mw<&;$UP2MNFc literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/back4.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/back4.png new file mode 100644 index 0000000000000000000000000000000000000000..f786a936003d5ac1ffd69b00d29a6625b474d4d6 GIT binary patch literal 2403 zcmeAS@N?(olHy`uVBq!ia0y~yU}RumU^vFX%)r3Fm9@^3fq`LBfKQ0)|Ns9ZA|fIq zBcr3ELqkKu!oosALV|*V0s{jB0s{Q~{r&v>e0_a=e0;pTygWTUJv=4nJaI=6gqx31QwG0dl>?NMQ zuI!h1*hIM`8m@1VV_@L0@^oyH_OdRH%ncTjHy1vfI3V;9C zuf28E>sIW^Z3mwJdb8`Uq}`UoHqP^QUSj%Qu%sYeXs-OB;J@;pBiY;8-M?DS^IN`o z^5n_E)%W(*et&oO=FOi!e;z&R8hP)3q>so7seqXxcRNp-zPjLSd2OY2KF^v(TX$^Q zv*z5@>HF`5H!jU`NHvO7Kj6U6FO~7O=$ga*IZ+w?RbQXJcD`7<(P9M(d+Z8*l{v^wAUg~Hdv?NV7Q zuDxnt5C~;{#p3fjdF!dHoyT4^FsOtwXR(I3v9Bq+^4T=`Y4qQ;h5HzELYcLW9+8s$ z9LKrhbH}ZH;Zcl}3-ect2beC{*AV!A>e*ybPKF@U1#S(JE5E*kTS%Axy`LxN&42sz=)COWyu35V&z@cXuI67%?Vqr@ z(dBYy+>7V!k7hioI%gH*)T48ct(0p#YG1I5Eu_v}`0Y;HD2)cw1)tij?dH{K{8_OPwp^J)pEc5IJxLuqn9butoxnjCt{z= ztq3txc0Fesu=3HqQi+duo1@+}dc9?Fxo`K*;Jd@pbs`%MgY;b#K5)V|V5LzK!$kC$DO)#xuDYR~#6$zdJ0Mw)6{o!t-G>TRK z?yz*9PlMmPMz5)jXFr;)_PjdPUM9+LX~y-V&2p2Xem-6p9&g6sk^PjvJ_V@0AF)0=$$;P{`57dkUdiu-wZ;l74U9fgBa?PYFp7C2A+aY~+V zEo%u_bwP$gf|+;SQ~vgCOm_m7?)%j4Y|VICk#YUsi8k|@THPFq*DnJJIx~K~e=etT zGatu+z=s#Y4w#5dcy>yjuav2cP2nWSV2&5O4vVzwO}=atHej}6{3)Wr!o*|rb*jD8 zuO}=%?JPMTtAFNjiC8gi4sckdU2k$l{DGx!`BVOOGp0lG%$H+-9$q-Np@1O>#5nKf zu*b!};wgW-72^YSg~d#*VFzA?Cj@ENTYTAhk9S`N!?#rq2f02>d$Dr;pNj#9MS8E+ zgt2l-t^T=&OJtE>)BmW(Lu*;OuPj;3XR=~)=aFJwF5F(zpyEsUBztibxr0($?q%| zR`XrB^6a3{|D{f+Yz z&FIX$VKXS**G*BlyNX%&)z`28S-JF^-X%9WiKr$#k*m1UrEyrZNky5Ti&g09-Zj30 zOGGOJ8ok^mvez`W*)GoEypdl2C7Acl~7%ko69vcWl-aV0`(i|7Q;CyabsnT)z@4lLZ) zAfv=zkfEXQ_XM-dEv^$PpBUP!m^O9T99Y=cz@x*YL61XR=`P(PYakt>)thb zZsiqvbBB4W!y}I$JK5!~ay@u1w}Mq@nPb!3>I5;58%(Ta?;0Z&Hbyx_h4OoaFi*W` z@9;LUu|+?jH>B!nv(i@ehKbb=0(k?E`CZ*7>fyp? zTX(6X!)K4+o`vf~CInq=HoGc5A?0ebS*V%E(s0|1;9ABdcbKPZB`?of&!u9OrTKb! zSKQYHzPg8nrh=2ego6M7f{w+m`5g{&M^-5Rst|vNSE2k;AwYU0C>wsbeR*UMSdS4e=ohHng(}>1R*4ahR#o`XSh(*Cz!& db6o29C_W)wu4KdFQ{kXCl&7no%Q~loCIIvf1fT!_ literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/back5.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/back5.png new file mode 100644 index 0000000000000000000000000000000000000000..52f346a21b03197e436cb055d44805e5733b1a15 GIT binary patch literal 100934 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 FCIIOpNN4~6 literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/bricks.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..c2dcbf432356db9a59ea1e292227611b4e2a7503 GIT binary patch literal 18628 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 Dkopdy literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/extras.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/extras.png new file mode 100644 index 0000000000000000000000000000000000000000..18d60d16031f288d56deac2e8217093fd0c87f4f GIT binary patch literal 26733 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 literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/fr_top.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/fr_top.png new file mode 100644 index 0000000000000000000000000000000000000000..e3adfea45b8272d4d12354141a380461bb7b1a33 GIT binary patch literal 2674 zcmeAS@N?(olHy`uVBq!ia0y~yU@~A}U=ZP8V_;yI9L%1^z`($k|H*Y zfq{Xuz$3Dlfq|PFgc);LTDCJVFtC?+`ns}T;+7OKW7>M}Xek2&=YLNZ$B>FSZ|~;& zh@{IM_^AI}UZh~U?5Qsw?(klnnO>j1 zPd*+wHUDuO01!AqBd4m~vZSW$EC#-m3`a+Oa6XU(4d{Pyz7ZWpCA!OPdLe_tJ+ zZ+2|&j7tB_n$e%Dw|Mr3Xt~Da$+`9^nZ)j1T-;hA;K`_b{gzMGjovn4{`~$$8q>@YUTJDBzsz~y!UciFix+P$yYRAPmVan(U!ReQ$rM51 zUbm0G|MKwio?XpQu={TDHfwpe=+7q~x>aSZdVlP!v__v2SD2Uwqw*1*W9!fV``;q) z=--lTs{?B_m&}&G2=TQ=E4<;>^a8w(dI zex9*v)sGsxPoFxABIAho?W8rn_y=9+`%J z|LQ({`m|#8>ctBd9QgC+Zux!Fc#x*p*xY%^5)u*%cJ7=xaiSm>7gt6`hQV!%!bdF3 z%*-L-;hPf=vw80}PM+(huD|C)lccec(II#F+9?qxPQO=?6Yp6p`uTpKK=2xZr{IO*~aZp zPfuUGN^81a?4r$^FAGHn1v!~WnI=!yjb`%^jp1uQtfRK*qQPzL+`1JNqbDA{J@4t>@AsIOEn8$G*S|FX`np(UsoqB)D_*>RZ+`pj>(|L&UtPVC zV|Kbw;qhOe)5X(2UU=2s!GBCra<5(X907hS&4iYSnv&XMQWCzGH?dXO$W1z_^7rrG zVzZ3RHyJ9v-Ap&Ovo3ox<7tg@+4*_4({@DYxM_$Oxr>y&yVH3#O<9EN;=Ox$$7+AS z-M;6~r_(?F*4h30k^Fhb$6cE?2{mloXjoNUy>iW(Ej_OetX0Z-e5`lMv}u!k)Hqw6 zB)dDx-`(MyF!6A|{l61^vep}Jzuj>+@7C?xmNh>N*!g5O^n}%Zy&4`87WU|4MaS{S zD^_)_T9u}A;NoKUv##g1Z?-A7OnrSP=EbW-m%ZQT&k;&eJQ?iaq+>U0S+sk?CQ*Z9 zA?I7U#dVaKT3cIlZg1N=k2bZtm7S z=3R3xT?!KFWXa$6Q|<8K!_y>`+ow&N*7G@drHHs*%z@{h4b9Blw5A&UHY?t8O5$jj zi_)|jMxo9lvieHrPM==oin}NYinu1;-&d>AfwCw)vb?eqyM;%Vue6!-+`tuiW-Rg1eVYyM!vo-*0`MQ--pBemX)8L%$b{+k>L+cmYuD{-W`K5{spRtwIDR%jq1Us(U7Z()o)&H-Z zHEY(7ce~%ec=6)E>#wtp_siS+DF`gsxN&0W>adyJ>DzN|CT;tDD|@{lU;A0t!?Vrv zm#tsl-_^y{bZ|lCS_g##!Tz?c!NJ1S-`}Z9@Gu2)XC8iNP`7`6f`LbJvT|>4Z(5ui zU!z0A-{0RaU%A3^U|a6(4^?|x4kzBLd@j3rznkEXN8S2Hc6NTQuB^Pgyw9Gy@j1Ai zbGzSjXI{-G&(nKtik@T~vwv{rkPk=V)OizJ_c-ae?J~<%zxVOu%6zSU+ix?T_Uk45 z3!MAz&(F^`f4^Lwc0TRc*6rJi-`p^CS}3r)?5z{68f~){N91bA0K?JI%~$p&Mqk?CDE$XGC53{q1&s^f}{C8hUzZ@9*tRo40lA)-*o1dVYDkITJS* zp1)W1dTmeU()0HJZ63>UC_Xb=c$%X}pnDRZrQLl0_LZ6a)uFMmbASH2v$L3ohv$rB z`Oiu|V_U&MA zUHAIQn&|C*>;__=xfG8i8SZ>k&ONtD;8FO3*O#vyxWm8ym`;np=Zzuf_ts7jc(iZJ zl?ugf$5w%E-+Pm8ALmef=Wp4t?}8_&J>_)fcs(QQ=i`4rmT&vXz`(%Z>FVdQ&MBb@ E0Et~NIRF3v literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/life.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/life.png new file mode 100644 index 0000000000000000000000000000000000000000..b66180e0b1e4929a22fce90490500b60fa254ff3 GIT binary patch literal 955 zcmeAS@N?(olHy`uVBq!ia0y~yV9;P-V6fp}W?*1YPUpD9z`(d6z$e6&k%8g=|NlRJ z{P^_oYAFGl$4Z8N(#HWy88P1($dnZs;Xwqnzd}%vUTg$c{y3d#l^L?wauG1&(6-y&(BXs zOG8RZN=;48%gZY$C`e9DPSH@qJkZJ1&mkp0Au%~XS%b;Z*}&P)UeCoMtTwG`PE+Zs zp3p3h@F?AkP=Ur3y}9$6T#^GDchBlQyP|$p`lPA8OS&}@dWs8|w0ECcHgR3)#%)PY zE+-`Ql|;AZR;-`Uy*PW*)`VC0Qnzi1pR_P5q$-}vy2LGNXv7a+UKxqzQxR5humBTn+Ojj1xZB%byYK+un7I`db4Xs0wt7X zxCQz6#f6HB!l(DgZJeZ6k#83mU^;jCz6T5p42((M?k)@+tg;>q3=EtF9+AZi3|#IY z%=qrPz7_)m1AB?5uPgf{Zb=a>vm)7?xeN@96FprVLn`LHy?8z7kb_7=V)~oC-|z7@ zEfEe|l`(-K>Pql%9uaAcTn=*ly2kuXK$W8apu&ylV?xsYv^d{ zY3gdPU$JJ@x|M5J=V#<(wa5C zf|;?}Vv!&*riMh}vza?xqWa8unH?fDG(&n34w6jKX-gCp%tx{WW z7RYSB>89B&+HCyO=tD&USDe5a9qkQkLIo<0Ue{Q<&Vcv7#4Xu#8$WVxIjOn)@I02~ zvBvLi?yTIh^Jc5-^({PAF>!%keonve$1d>8E}Nhodp2pUTgQ6sB2#w3woN*%2YJ6Q ztIn=w&n@RaXVw(7qrO0bOICLNg1Pfro!Z%d2UXNPzopr0NOi|F#rGn literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/menuback.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/menuback.png new file mode 100644 index 0000000000000000000000000000000000000000..abdffad33d658da677237900372fc5703f321ccd GIT binary patch literal 58674 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0_QP#K6Gd{q$!V0|NtFlDE4H0~q{t-d)eY zz`$AH5n0T@z%2m6jBAzmmNGCfu$OrHy0Ty5VG~s{E;M`mg@HkV!PCVtq+-sSz2yxl z?uGVocmLiy^XA^&d-s-cTfHnP-=#5^>6FkZ7SAUN0+!9L6FANOHTrJrH8h)%a7es4 zw}(-=h)wb366=>D0sH1GxqS4j^=|8zd*7|QFMsv@+1WdcH*c=q{CQbJa@n%@((B8A zmzIWyhi=whw}UBdl7Qj+`-@Wl%wMK+QsQ#dbj=Ch9kXM9te#>d*U!((yLIc<+*?~# zdd*z5n9cpcqHeuaK?`1KoOxuvjx!P|GB=X_d=BM zu_oJz-#r8(U7pMlUwitw@S5p%Pf9(NCQ3+2ok}sv&CN}1UET4_geg^Zb;lu{e{-ho zHT`kgD@<_fk@bJBy9w_XJhq>e!E0p#=l_|fuB#n9zC7lr$Umu=y%&lwPyV4UUuke zaBEGL_T>hSE60{>Gb#@Mvuw&<(;wN%LD4g({Sf`MQs4B)kMrRNO!ein>NW_8oHEuw z%*gCERZ8OtM~m;DYY+58^Fv!_GdBu!-Iw~m^wru`1)=w-nb4_3Weks@uE{p9!2s}73pU{{wdnxHJ; z^f7vJ{e(2$M$K~#=~YjSE~|CiiV9_(oaPEv^KI1(6Ky8lkFO)vOpuECb84m!J7e65 zMH6DTw(ZWUU%M^hsZ3V%wN{x%gKqh>o8D7-M45CyW@m(6?ug&=q({l%t7JiFNT~I) z_nlGm4zHPeApGBh7)OZ7L8Vup9^BdF;QeQ2MZvm`_$}*p*+hsmT2(k+Pu(2f@T)y_FUT|KH(;^!Y(TWIClQ1e0o@|`b719)w+An z13LNDIUBWt0;jECJSq3bn!ukN8+Ms*oe5HRHE8llxli}_cm6O9nA~aqn>isW?t-cE z?JkDw0+vHMbu&`ecX@7Bx*)W_?F^e z6e#+ry-;nM?UTLoMIW`7sEO5oV{dqB;iuUBa(zr%u5$dtS?g}Sa_WPad3D+xwf18! z3snDYxphTC^z77+@zpW~s?l#E%^c69G03#YLDEn&k8`(!_aDtlvyDFj>{+q`514WX zmkYa`UDn{0HNS47Q&s_slU|+bl_Q(l_k4HOt82Y-oj0e&W`Iu*`br|ua-(tCV z1RA@QC)L~*sQxoKeJ1mxwoarw%c^^f;rrg5_`P+a@_|*L3;@nAimO5SWxvxrUroC+ z3{2N9``gEct~H&$kf|j^)9{qRO5P(uNxRoY|46lwvoCz)a(3(aQkJMk;-dCEo19mF zkABo1QDafb5y8yN99+cD%*)3oXIEn}(PPe=wmC9co%eh=#WIp^N^khCtH`p}an;?1=}|j>)F>o~o!C74a+ktH z4<26LRHK=@zBpD2yWCsvnwq01AjHD8l)LkROX9n#MFz?OX*WBixEQmGiY|p8Xx%E7 z>$MV5psP*RT;rrU^?OL%QdjA)FB5}QyZ_yCQc&R#*=DcOH2vXaFgv&2BSru4^AyE^ zOaJ2b{qoXSzwea%9JR@_UaxBL=WaAm5QsW>`g118=0iHwl6J<84z+v-v=<&?`{~`b zN@!|mlM|?{U-HUNmqm)bk!$9aZYlQEnx-oqc~b58x2nTl?VxH>|>s%sO+}&40r0hi)~i})|m0>viRvSO}!pb z&bM}5zT$-w&HMF2P1d~Oz43eV#I8+$LQg(j*~YH@a&4rU;}(Go4VJXvZ*4+*(zab* zD8|Iw>M$d9{mi!|D{PpK{+-XAX(jz(F1$ImLZJmi~)X zU+hC>E-F5?>(!@(d+S4YJ`_#8=ag_x(Lu!NV07$#rvu9cPTkAcJAZvc_qKgnI;S-L z+zNBpysb#{@N!TR;8^?M>CY_!9Gpyv)AsVrmvl`y_P8NkWY(%v7uJ8x@_%~8X~9K- z8Kzk#V8as3R$ffWcVJl-cHrrC<+U6e#F&a@8)sFXD}_i~bmdy4QK-{Im-!v3CDfzT2Fry4Uoy zT89|ZLRWhB{;*0(LbHpu2g#YqM30!wBOhY@=O5a$y;inCl)%f zXqh^OFa4jm>c?`)S-h*0s*98lL~+b1VbK!bf0CvBLb+{=Tw~@vN0a5L?QXAX<5o2V z#fKf*awcklS=(j(FzNYXOo&f z0EaHqLQ$Lb_k!%V3S{JgvgL+*LH43I8KX>GCXls$OOG9W}b?eb6 zj*uT6*LLmsaaPMBaK`R=8fQ3sEPpIdu`W+l&suTsxvTbyX{WURoZ`M7Q#4B^ilarW z@dB5fwdhuX3{b`PTPMUsmFcUwqrW=S8n#tOP8eVd(kwxZbq%X;HC)f((r`82TeNaF z=c3jFbDS4A%{!}JvHEp1N65KtKS4QW{eQk4HO;TGn^v5@mELwOb?J=l0vR%(sO0rs zH6e=Qj3UTWTYXneSmnB)%O}FcSe!9TG!$I87b+cC=Bdk)<+gzBpG$EpBrmSzTC`IS zR5+DBIWf^@bE)LSEar_Ni({|r{xOp4pKnpP=-Dmpm@k4sOPAy+Ubw^YWGYYp15myT zh%mC*WS;OoT3K1y)L^cnl#Gl`&5r`5i553`EieF)$RIn;N97tnA(= z!x_yk0F912%f*-y-4xDjVrHnm$bLUS+-*+y!}C+`PGvXy8kL#A@Z#^R-S^#H)?WOt zTpvIG`0?#}uWF3BtN4R9UP-y+n;w=E#oY7sDo3c>l=HDH)7Dz*<~$OgzW168Q?Ykh z2JgRX57cj7U$&| zIp4f{!`wV8!q9KYad8_r<8E-@Py9zpl{b6v_E@ao5A}pnK|ua;G&yr zKjvqsu^;ex+H`LHy_(=X%zKhpjT0DG=WG;`4Y1t#^2~>c{~rJ5@1HBND)CIHOEF8M zK$m>l&4s2v4%;$p+H_vVbi29$S?Ba5*RNMNXsLxma01>f>@y!~E~0v)6xLkox0zbGe93 zz#7gY?QGKjgO@KdxjJPl&y$e(;j7ey9e?tzXemFQj@>0O%V)^3iOYI=C$`Q>jGmanYp-nMYn zF%wm$slmk^@zKn)oWEUrkk9+?med8AN9MPF=&x+xp89i&NX?PeE0xq*)jFKG%ytDF zGrI8L%eob7xZ0mNE6jPcoo)Yd%bvaR3DQ9yqaWXYZ1b3TK?jpwYSWBMe{59~Q~g7? zT+leS_lEoX*#{UMj{f;n$RP@GYWEZ#d8UP;`%V9KPnqM%V#7LTx6g`1)+gaXtCr-q)7>lU>H0HG7pDb6<@dVP>X}b(R|*2L7{D2jTgXOmsM-DnSRdPz$LwQ>$5r6U;nA} zTD6-~={)1!q&nAv6{{qte$esiZGdW1m6l{wpE^^fbN9+KPhMCsoQb|7*y$>+`}*ta zT;6|Nw=YQjU+Q&EhRHQ3@LFDzM)c&Lrs0#k!W?#<@pfsLy5N=a=J%GnuVc4LQMB{?53(rU`;ULmPkC-u zl~eHLM#BA5!PD|1IM*JGzxr*v=|67EX}{8{ID86a6&o+f2qs)!I6+y!?_+fH{1poY zUf5TBInl@5;qmjoz{Wi@nEhpadwSPfJwi#eWXKTzvt zm@O;p@>vmV!2QQ}I`+O_GUxH``F-;x`dpL*0`|TLd^r7!qM=n`%Jtyo^LMXf>s+N} zbDiBG`%m?p^n8XC(SnE9c6YRxc9v}Nd!Trs^|GO3ix!*SlSjW}qMG+Ftcp*&qul?l z`0~sQlc+^d5-;`vq zw0F^!tKc^=Cy**#-K!wSy?FW0$^p~!U z5Q@Fvw$_4G!FHmIwULFP#Vhf}law7VfmS(pvC62@#Y^*Q)};>dM0>k_43?{P4A|9tM~D-mu~Pn?X_z4hR~zh z=l*Ye$mXD0y7gGSsOs`|hcL!=4W>0~7A)jo)cNbJab&&uS=F1*A3R9Uocp{&H2UIE zow%%b$}G34t>!E|x!~3{Pxb{}2jxXp{h5}f$J>x}W!4|tbDM4dahDx%-F{E?+{sxw zOlwq*2i-R@gydLoYPu#6U{(M7cABBKdV8KG%Ple8fKHzeH$UkbvYy$`xUYlbO!%Rc zhdGBBFG&4w1rVEn9C!DUTK^qmam1h1^#`b9S-|L^45 zG3%>Suv^2_HJc<%b(s{!_cLXs-IQMQedf`P#KJh9EFmf-pso;tEp`z5Z zEIuIHWvPImz?7gbo5Kwaj!6_9lSp21afa33SI_=1WcdDDx=P3GtJ8uEy%!Fh3w)P( zSw*UU5O{HD*W3f`{EY=&_oe>0dd&-AnbL4)u9|c2RD}ZqO4E45%3iP0^$-tfmkP{w zap^rZb%khFNRVXh+rso7!*iDDJ;lc?9nR(LnDFccLq_j^CDn8xM($;gH^v@3>E-O+ zAZim+=_+?v4Kk)v_Wt21?N1VBCQO03u8Wm+{5{LTs_LZrTf^45 zTuD3Kb3!6{PT{$o4`Mj8e`)Dz8xo` z7OA{G*2%yvcED1UF>D>Dx?tmk?)YVoa+qg@e@lB=%UILc!FllSTYUzVNTD+a^UAVU z$E;i$;+3sAHzdk?>C|aKi>_t(Ts|PNc<=fREgN*yc5KiQiHTt7VPtn$!Sd&rEW_H9 z`$MK0+x+7$cD(+XrS27*?`@XAi1#s_46Ct48=u@V&1;v?)@xDBO1^8-*mW$#ooAAtN|<3~v z-g%wgW|*X?v`FhKGk!nPkKXmA zDLr<=_ow=GU%L-YntJM<)SuvOXBM+LCS=~9G&Oy$V94GM3n}^AKW|LFsV-Q{Vsx^n zL}q5;vG!wbeY{e8U;E#f@wt9U_RI%!W*<(_dr>gsrIU8aV!nns_vUZ9AN_cL&1sue zyo|43%v;Ww@ZZ_`7`yxOHH&9*eta=+`Qh%vGUET2&CdIEz5eg@V1HZF_rG&*Z>xR& z`u?m(4=weoWmiNBMC`5ln)*Cmreu%P5f`P6KhNzJ>U6p2J}2bXS&PNT+1mTRh|iop zd-klQ_m_LC^RvG`aM+qr;f(A7i|Kv0>pz@mY%hQIu;8+~H&(JN}2$&yT@rAI@7wZB9GOYkr4e=d^T}J9{dNHQ#bGymZmJXKz!Kqfl~7{K1QP z%V#gRzuZ~9_D{5|Z8t;1Kh;^kIA*;O3dl>2Gg_H;Q2Aflo+&#O-gi1hyQm(#zI2B1 zxy7Gv-6?6~zIbu-iQ|bcAF0~^zJGg~Ze-NFwf_41em?ED`Iqrwwi8QS$zSe$KbO|8 zpO83V-^aKAzn{&oe|@9#@t5?wf*K<7r}&%Mq#4fFKkQvP>*Md;dG9TAJvE=TZZbdk zAbwlP%g5jCo#yNB{`09=-**44gZ#y-zH>Ha>+R2ax>Ea7h`!Rj&jn>TCEz4?ny^4k2n*=_fs>T}Pf0}8X(td=O3+Wk-d=UN^cC-!sCd_Tx( zw#@EYsx~>#YID-%SxV1&Lw9i&oLjE<#QaizecWluKiAdw-?uL&5pO-)o=E z{vXBGcyHZ2`Pz@xQ;p9oUbt~${{K(EzuWzLFh%ustHa8P7aEci?sgg5)xSR8{qM`R z{r?{n)GT@7|K!=MT<6U^|F-XW@oaib<=+2Kz5o9@>&k8Jex14D?3$??_m#<=+-$>q zK+w{t@8z56Uf$uSdM10O8l4QOGJ3g0=H;#xA_i(YiLN<`kzq%~rX|cVKF1KK?W=ew z?^xmGzSkaCq$D=yobI}H@ms_aU9sH$sEHi{bGZH3kMi0vKKq()-20zvrQ@;vsPE@A>*Brv@bUpw(psuPcUcUJ?+kD^mwe#!#2XK}?3f?R5;lG~oxdn#D4$O1@{r}hL z`E@TtuQMNb`aDMDPi8^M3JoU5o3nF1eAjt%>gS{&Ewjw)`WtRt(}_qk<}M1=SCaFY zClT!Vq5gtKY`Ep6Qkj{Bb4uK-f;`2iGBKQA=@lUuePh}NT|EotWn0r?n3098=h!n|*-OVEy;mIe(^Sl_mGp%l$BmE-d`nBsGs~ z`igx;MVDtjRQ`MXyS$vW;gqNG>tncz+@BKtVq(T_zISW)wC$GP_5EG@JKg>R zeYLyU+t{_AM^3T(bL{)IPZ7QxBLBAr9tU~S{`=kab?GL}){=Q6SxxMG#7vn0ivZ*&&t_wCUQeJrQxWm0~6Pv@ocO*nD(`q$?=ahp@(!V6A&PYHZ?ZsPJ|cT+aJ7My6f z&T@Ikr81xFrHqZ7j8Vqt)^?=2FAh7hX_4URZ4ysw*c@1{c`{}q zPjWcp8D>=S!zIgRVmK4S34^$h3ge8XuhXJVv+(o;Z1DKV^JV8-{s$j!->!cj{$=9! zz4!muB~*Mcum7_)zW6DJPhX#X?T3|{ujO$}tABQ3;s3wyzB4R%zD0HVv7mq7FBR4o z{a(M$;{BwAs|*{eUUn@$-gl0V$x`TPP;y^m>&D81?sE4(J~{G1Ld01CoSJ^7Z(;p! zQ}g4)j|&~Zxq8(FKA71<`PVDaW zyTX5pe&36oTCCx+VEu0MhzH{Pe}>LHzTKwkzxVuG(syc{7fw9A`td1lz0-B#6Usj~ zNB_;Q+FiA7--l1V>1+1?T6CH*;rPG1*5BU#y7<1%&ccZ0sD_2muU*yWqBeh=<-PvJ z>sOZ9Z{2^nCdVYQJ*O}SoF~uiE zyLVTa&)IlSUZOm2clz;rvGu#kKR+lCJGQ7PKdS!Oqj`3}@?L!D6?RT$*zkPj-`3K# z@jI7o-#j~K){DKH88&==aPLi|o8$HUk1X|1Jubf5I$d1JEk5V|?#&_l4~J~_S2Yn{ z|G#Tq@Vc0K$Azz4k2pIYe|Pt{fk^dVM`dQO8)tS39CEtiaZ{D?z>^tUSpJ@1NuP6( z(ctO51uEfj!c0mcE20?^ChS$o)bndtd-DEcW9i5Hr-e)j-m>h9rjy>R%IpcNSXPIx zJIAGMn|=1!gZa0=zdQ43rCj6lxI*6#vlqMfPf2Dqu&~vv23dfWe;dOol2!@Z!hcExAg zqVNA$w`Z^Q#mH>)d0WNS?S8W=x}B~5$7=ci55n!$-Yty?+`GQ|iYkN4*qxbHOC)1NG(2;W^hcR z;2eWRR-S8)nq*WH;{?f>GAlLKh8|$?db9F)pfb~}=D16HdM>&iHqXA8&3LZv1xsvW_Wj}%zxt}*I6MVjPa+>?Lp`5cQUmmj>?@Uvyc_Gc>^+1i%dRcZJw;Sgkc z7AE}6@&C%lulK*35*j|g_T-<4>V;1$-%o5V&#zA~nriD6v-!=J*XQ?ZMZ8(P|4%+c z{AY!=(wyuRx9`ZIgAc_flKJUn>&c)seq zQVY{^2s%}H(QIw0(!>wiQc}`8-%n&`cyRRkJqAYaTa$N}XRVYl|F&hde%-g__x=Zd zn3nGt`A7A{*6Ct5CF9F~UR_`N(f9uUr@5|z8m;Fa9&VSf{Bv<$@N|bpV`GLddav$n zC_1}txz`de_J)|>#td)n?3dQ6zHj$$X}wNX+uPUgem+b8w|4t#c0o@6KK&ohAH4YR;6%V#s~^JgKXn#{m`?Pcd{c?Zp=|ZR21VyKOXf7I_5Vws z$JJfjRouMl`u~FCi=*XleXh87SvqV@r`zJXlgZBNMYk9aSTGn}(0VO-x`FY9gOAz* z&sx{%$`fCUy-ZM6OP^zyI8$3PLqA7C^fvSSJDeBF&#V(~P5-o>yWNN*WMRYdos8@E zEDDNQ_AgCJ{liipfl9du>pg3Oayc%Tb)>N`y>iU>+W+6;`zOuv*|qL;?#2!4y)~~I zu7CVx>1jrWC313dYOk-|c=E%(_V@iM+LF%?G!*mAx#)6S;`izLUnhQrW}l4t_GtCG z_}W)5`yOA2>;0CyMUkyR{?9Y@`W@f>vi>Gp%hkVsea};R$NHN0|7Gp#<~$QT_j9Uv z{J)F)e@vJX^ds*}&)*N%?RO^MzU#;m@cOmh?pN2$?@!vkxB9I2C((ieo|=cz@jo9} z-(zRkp1*T-{fhtV?C*V?oBxNMp+x`vXWfnZJ72YJ-}_{%Bj4WcsxFpv_FW6}1O5Cj z^8HxFt-t^2v+d7pO$>~_e3h?}W|$Ik`};esQjT9UzyFVoFJGS@SP=XD<6QrLFRt6) z{q&&r(!?muwI&LBZz3wrE)C!JVAu2Vk`e}nn~Q$$s*eA>D7^0H{(TR*{~i7Rt()Z{ z9Njnj*S?+4-L6^NxT5^c?YG=@)@baYw ztK&B8N!Juvaqq{IAGziKf1P;nagY0!W1`;E+?53Pr<^)#`ln)BMv7&x)6%ny>jVW% zclvm1#%juj?+V(bx7YpHJ0D36-CY8miV8Q^cRQ2^sUI*h$^Q2I)a;P1(^u}FIq+ou z=`1&a6X6GpQ<@Cgg5MV({qxED+H00NuTR>iJ|Ea+e0^QSvR8{Z=Ini_V{k2P?UbnP zS!cUamtR_@HPtKCNb-8=)S$nA|6cLCw9o(D{jYoP-#I3+Si?DwQ{ceClr^qL8YeDn zoTwPJZU6t$_g(JwG)&Ek$){ zn3Q09TU*_q*Yjm9N%IIVz*`PKenu9Ki^#b?tbhHnPc*Qo?d_d^q!H6$&3u)mS&E7krvNml%F^8 z?6u?%{rxLHYU@K*@%Y^Zb?)J#U3u23f5uiFvv!?f2=1LN%S!f5I=^ZIL;3Yrg+4mKobQ^=`FYdlK*Jn!0+O zOkMeqjyTtU0WYlN+^!4`(pAXS`y6fHh?RP#N zcwE11TgB=cmIikDpP!xk|4BATzCCRz{%5Uz{o1o@PoDJLe0xU6{^ytLZ7n7le|@g_ zVd?)rzaq2ED;Uif7-nC~<|GYG1w-wA zc-!N0!&UEYR{H%3?$ur(Y33;M z;Uw2<_B}#xSLkr;5Mk=B{(V8&D%fXf(B#RJKUUbt_5Zet@bY|g`E*^?ea-wG|EAjS zd>pQ+?mY9umIpqX2~5nd#0Aes>@%9{r!Lg_@#DvhU?9x=_x}H@{p!M#JgeN*J!m=8DC-`e$atNuy0Pv0iJ7Go1w z(0I=0yxzN)i#?W{`^G9huikOO?Q6&77#dEW+jrr8$H9vam6Q!G%-d6Z!RBgrhxNDj z|Gr$evzIu-)+O;|0rUL)+Q++_`s*Kg|KIVmv6@#|)HK$d?oV7^CHV2dMd$m! zp8oIiJ<=Jtaa!{AL#`zZZ|tS#&za$r@MWpfF4dEzv73(-#TeOXhij?&%4`&vqBF}V z_!6H)&-+E^joSZu&SB7Ae(lNokD9jsv=^@uSdqzY)B9uj%L|^J4BTw{e+eE)6{z?h zeShzccD$v034a$&;L8pAwCi|#8{`lkB@9jDFwuNdx%?=jc{6agK z;X_TPL~_r^-sS6MWn`9cgde+c!{v|c`l`*c8(RfzHtf0HICG-K_tNhHvuh^`UJO6* z%%82H;M%TU`I_I==Wp)NywCIEMdwrXZ7DmLt*~I z{{J7k*Z+NBeX!9(UtKfyS^eP##+;bViW%Q->?^-&|) ztJ>j#k1d}sSt+>5Lg(Gf&&tym94S3ow|Td?-YND*DWCnu4Go%8ugTOsl>Pmw{9eb2 zKMSRIWb2o&Pbv6t^sLxtoh?yXzKWJXTJDoH=NUREX2|>KHOZJVw`CmAtg?vmkgt8b zwsqBXyEXAUpT+0>by*p|Ia%k!)5E*xop5IO6nF0cb5!QqEt9-1cCLTy<*s!-bls(> z#&jj2ZK^tnH_d7jnvDJOVvla$U#EI``7N~rPPQp-g3kkem%tf+t1sv9jfB$mt*R|+*)kn9g{fu{LUX=c3 z>9Glq0=+K!`@gxlaPRpO63i^;W-Pxck!;&tl((MC?}$3v@A@yh=P$l?leO90F?;2K zHQo#tZ*Z*J_u^B+?SJph?G5+s?Ww$|e&+H5oA)}*X1mWmu@jTmL9Gd?v=lmjlrw%m}#<9W99>f6PC_z zO`94o9#Itu4R=q!(71C?(b^~1JFldCoW)cS{DM(yZHE7QFZ0J<)6dmTog_5X&1G@z zOE0$DLW15Cgr_}VV9ER_<@bmsV%{z5XTChgPm6H;d@?`PVlqdHXn{6Uk4D7BNALD< zJh&tm(Q!St&NTDBl6@90!;{9R{`Y5Z&*jZy{3}|bHP=sNl6#+Q?6vJbCKc3ii;8>!?e_+NgKa?`}Xtm^WE#TmwpLdcJ0>pHQ(m0KFNRdh9aZD#}5~kqcrc^ zhiPBEefMwc{@-sd9reESa!YFDwA4H{-) zG`?K^t)JXud_mw!i?)BX<7)XsPx{u*-rOwTz_=!U>#;(a)0;R9@3XvJ&Fc^{WoyJs zQSWK~ettqa9TjW-?lxE5KA-cmW!Ely z=$N``n$Y>UN4mZZr?NKx4E6HTRJG(}R(d)seU5g1#H=IYv$EGpGJmOd$@!*^49e`k~z^&COAsk zNThAw&uh&%Ez>#sllrW!AL8e)GIP9c%%t;v`km7X(uz!PW_hpY_?Kz3!K>iLmb~PL z(;ZpN)>>cwUw5KgpDT_*NymFEzytIMk=uIWkgKbhHAcyI59?q5wy?5@>2c`n_m zrrdJh{lQD2FF8M=GJ{qxX|rX`ndCfEM3_y_rT0|f*;=-J>a#*RPFNZ-9JPGv?$$e} zIKjt|wWCd%`9sr`PfV>VYo){1owPpq)&9z|X8Ak+JmOT zejrM7ajoY4w%m!|o=y|k_Q2$d<>zY`jy|6=*^Y7AO%AnV%dBMeQ{91Z3E+h?e^9Czx|rYA(`y| z?(WO?t!Jmt;k+#rl(keq&@_FH|FX&4;(Bjhy;5SenIp3~=XCG^nTi7(ojV@(l$NCV z96$DZp5=>|oV_PJen$y%%@;5!S6Eaen(VWa=R(X&*QjfycNb1vxV+E)^2Li6uU%8q z;bxdJrSI{Q;LOKsb*H-VcFarG5T9dwZtFGwH@Ea;!?S&toi^Y1$24l?!-o&Qfq^jd z-~V5F_21pw&)y(=Z)g3J7YYnIQMZciX5aYqU~kl_`nvnaH8s4weqNdA>}SNgq`}g> zP=4A1mR~U+wrYoYYwDinc?OyYJGs~T{K@xjO{eC#%3VGE z+~-)?Q(atox416}4tl!lRO!;kK?Wv8Mn=Z3@{&^@>TF07=rMffdS3J{V}8WWbMIaF zXWZJp|LEb}7p#RTHfsFfa{_k1i&cpCvQSrI>TiaEpdRg`@-YO?2`}6Jmy7&GpDUC1Qy^@ocUv3`E z;i!Jc;aEZDCt0nfcT3!M6+M2L{rmUtzgwpJ%U8_`Q;gd(W5K;Er;?mvHaxsjVs%zR znfcf?`~1b9y}4pttqyHzc@T3$?7N#zR?zr9pN z-)iqoxi)|@9-X&QFQkKYrsxpoo96} zOE|ArAHHbKBqPIn&!_d??HRH&OCGJRx$6CV-=*lS6ILD-is3jdbVw+rcv-K0MP1Ip z-Tez1)ei*au2?1cR694~X7=nq+Dl(52KcJ2`Q_Fy_2?2or30UAHq5)TdovGHCFkV% zcQy-udUO8uc^ zZEpMe;@;aQZ+G&kO-(-2zoc2S-jq4vOti4U;)Yu7`#+sP(F-p=95^AMRQLP%|77Frzg<`BI>N2yzI*#(*SDth|8=KjL*|-ozaqJK-3FbW z7w+?F-u&5o{J9# z2kb7-UZ=9(Qi}bM(3YwPbBdpEB$(~Hr2Xc{#0#_77&I8-_ZChT?J`_uDXw85dq2C+ z#y)VV|98883VS(cE-5z;Np)`szV|=NY@gT6}4B#{~euio`We&Q_pn9>EiR}vU?b`Pj0+oZY;() z?RjIU9g~Is{(Bosi{+RcnN5@5_(z-1mJRuE_3NGLDzUF6A^__kVu2uKPUuY(38%p5$*nr%I<@iCQ_&^=|E5Tkl_D`q7(ol5XFY ztIfE7nf<^DtqW25bFNSHP|-QPC|4lY$RxR80dw~e?)jw$Kd;}BnE3loiIuIH*)!|J zqsNc;u9aqBut<*KC_270?f4swn{|u{&;QxFv3q=d`v2dr*YO3HGrRp4hN!Xy~S6guV*3@(XrfI2P^ZO-IiHTT~Q@qcyy4>HH)>90aQHNbk7QWBFn8jOk0O z_WsK#JDKu%!P|Y4p6$5q^2=-G9fu7Jk&!x%*|LwLIMQs4k4@k!P&ht!%|Z182VSXI zUlg7DKYH^1<5|a;7i6DdjoowWPyDHu|8JT*`gA@6jZmJd51I1sU$gx0-~4`e1(b{& zzn6XgbNPPFrWb3s_x~x=);;p~NT{>3v%23Li^4}oUcAV#n!7Ex`r)D0Cx2wRkE#WC z-oICEz4-Py35Ekx#bdsSoA0%(;8y&3N@(u3lAp)#|Gj>^UtV5L&QEP}&&F@x$~L9_ zFMIuVH{UzgV~h=HL0qAWj&$wjdt+OFdFRCp6S3~2NgF*>K5Yx%3z|dwGmriK-Hqw# zRujF{f=`}wF`D=yBc4I(_pU0B*U{6adMF5bF=C$t$9ED-p=n?4CZi`rXdQj~{osG>P=zf7!E9dVNLTwW_3|N9ED)J(f(8ny9@u z>E%lO%5%N3v9Wvi?wve&@)8}(=holee=~RP_%U~W&3jw({jy6xHs-t@@Jb(|6W}B=YLP^{+t5o>1}T|cG=&HJf}9X=CQW5 z@|<_C^TQ%%9h#o`R^#No356N*>z6EX>N)d%nm|hNH|5!k0)e~L#180Wd1h%yMqafL zPS{|$)l$jy?-Tn{RpVxdLe@FupU!l}>X|+L`MIQ5ajMk2X0?jqKfxE9cdB)K-}g^; zeci#+t25&*tCGI+9lKFq_b{vXG*=S%k=Z*Oa3V`pb)V{2<`b8~lBS67!k?&zY(qRDX1 za)z=AACEv}O;OFwM@#2?&M=Ycbg{Cs3Y$|Ub=2It&$;tJTYI~@y86jCJPaaBRQ8-@ z{~3`Rv-jQk+wxaC=6<%;yHVh0Bez^aH%iY%N$~V0Hn(<$Ge4D>_WYRjTKrtRftlHV z$y3i^YXRKSe%h>wxo-P+%4NB_Pa9LTI=L8UJj+Tc`O?1s*GcR6?_%}be$ADSC13yh zHMic<#-`@ckG3@mu9Rm^1rG(6bx&xGyC2I3*us^Do?#^G7E6 z*qc*(=14zDRy`xAIag%H?8X-bcX#kqf6PDdLSl!E@BgpnZd~@eml$ny>(h>Xxy<;| zL^ZFtY=;DfGuA)V9&es_rNF`EicfLwpL>B!+glDQUgx@-A)FBErO`6E{-fF%FNTu0 z*9C(@kJ?q;zw(!5-!i|o0v%Ra@w>h}vz#7pyY!pxm04dF{oWTc(c{U70~i1QJe&LR zii-H1`t$L1ce(${PTD_NA=h!up9Dpv^V^PPwyPNP8MsBqJ!V?-rnBc{{H1bnzzJ*mTrvbv1@pKM|*419OK^A)8_llJ65vJC+yd@ZQC+Tc0E0R z^GP4igIC?_C1honPMaL|dE)o-#+4Y+}oOa`mAm3M2{m9d-evH0e>|+0vnp%hKDfhM(A|e!jjyw);ol2{UXS1U{B=G4YMQFgg2sk7 z8@rc1$T=pF<;Q+ohQWkcagXraCN+~kEEdl1!VSbz*01%fywhF#W#3Ak#+9N5S!Z2J zUpg!=W{Q6}d*dDAbNBYUf7I^p?Y`3*v~tS)%~eH3ms~b2de>JP=(^9;I6<-4ES(c=kuD?`n#1XemP9>QCm7?rO&U2vHj(`udKeW*?jxSl>7F=nHp5=Y8^^p^UlG5ByT!}XieLK4?E<@*SxvhJ~ z;>UZfrMlSPUwQfU`?q}^UfM73s(b95D?9zlhWU%G=A3VRe#KX7%{(oia83`s=k%EWUs!#D&Jp5VQnyc$+T*DM^@#Egt zjo9 zRMfohTVL~ic7Darv*~m8NeOzkU-S*w^0WF;r#hc(oto@b>9BQ?^CIQ4yD#poE7^bU z#g8Adx6OV(zkmDtTQ3!1+qtoC7r$-(IPu@ch3^`Z=f-yT@yRXsyllVl&-(d)9~|m^ ze&bG&%<gPUrU)%qEe#NsB#>d%y8T++O5i>f*`uJwCi+FM&a@AAF3x-J$xy-DKnZ$8-{hp$<`jc6%+ zmfmXe_S%Z6|NgD7-}C;%LFsjM_hyN%_INMUu%&5ZZgoY@mlGF0GH?I?sNjEKm;R$U ziv?mbqhusvyHB)m-aGp&=JA1s#SZH%j{Yb**HFyz;qhtR+mEIlWqlmOz|h*;IQ?() z&-Nn@2lG?!pU>R)??vSU?X?=Q(;x3DSua>ypyANnG|y6EzgeCWn*=ih*YV|x3xzMV z9$+;nUb4pG)0}Imb7iD!nRFIc9k%=_p6O)z?fFZE1A5h0KcBkZdsOd;!u9?jT@EA7 zO^o~}>QkOKK2&CQn7(oUtDn!#Fe*&;a5R0$-dI)qHHq_j^B%hymsro)%bl)Fsp7cc z`EcS~cDFuW#sf|B&V`=8^9MY)02Vq0%3ffw#G+^pGi>WSs0DCQX@j3Fyu z@5sAV7$m7awd_*gq8y1WOF3N(t8PvI_8=;ox1pynky~4;^N7;Kh$~$;miVsU`Gkw% zg4fP}WYwZl@4 z{M6?9sZKiSl5~8rKcCEd_J$jKwk^#L=kT7eCn|eal-P_yj!$}>#alz7l#>;5PItL2 z%DtFTeWuSf^Y+}im3tM0cbT3~u~>L+;hNwn$*1mUaZLHpk+S{vA`u4N9PX|6He|&< zZ{icGv9Yrgl)t~ZyuYOPGhfBESo^Z0n{>643QsSR6`i}o=-ig+GhMVxbKWo9e0|=` zlPNoN@0d;VP;FIRL_!_VsRvbjE5i(|wEcBsBtk$Zem znTb-)>fM{Ok6sGCbn?rSBPm5j6Ft*^wg0;8cdW}zDfgm>P8L&*rL&9f)X9Z+wmeQV z5}DTA5yNqMo6^P(+3pCz+1%a7R(&dRwOqNy^C05`PU($G(>CbpSBfP*I_o~KSd4ku z)^FSQ8-MzB+2ZnxyJbpCA6u>5GP|%jQ%!S4&&79lj2y43x%WP}Qc_&>X4V&F5ube5 z9BZ+yO4DRFw&q@pvwXpO_lNL;`wfRG*PH$nw=)u+Y=3d$T=r9Ghd#|UO4DXqqb2O} z^yG1AL#8zarJWvzGFvXH&V3cl^inW+liKpsl}kbx4oEtC8?2Lj9Jk7KGwYITGjzKR z!UF8)T=aj--P6c&Yq~;g{N%G68yj}~Y+U;+jdkf%?bzd`L77F%9`-1T#~9>ADkVh< z-quJcI`;6+6U`4guF4-b{+6#i@wKNh@0jfT86O%P*P1+z(dO-07^Jp;Qlwr5H>ara4AKa`ckRCM{@HuD75Pe>HQpzDLK6}+OO&&8mVxsyM6lQE=5x*1iBzE0&-zg6(lYVC`bcz^ZG6a{_L>3VOCkBg;6{QUdw>3t3%UW?6T4lWm7#P52ls(Aiab@P5ZJ?~yKMz-gZPgQPL z`@c&$;j6q&l;ZT83P%=K&%5{kLf^-O7boAHa#QWI(E>SnDQR1?3G;mBz7df99W(ytCK&w~<=& zq)bYaDe*kO73;zD$WV|11@GafS?AnSgK|)*eXC?O( zE4I`JPmrI${9yin#Yx4QS66JB=Ci4@v!k`)&ZeZ#w{D4T`MuI?uiuw5&r zdoi~# zaDTZ~gW7%8xxyDz8@g(;TT5b&DVVLVy?2PU?ovHZPl3_iY-5Hg)1nqz@;$%9ullIR zFgQp{Q?<29IOt|}P0itb*Js~);`n*ZDUl1a_kM1FbNdv!G2PtB`nhjs?d-~l z;T@74P4U-%e*NCBxn-JBL7W5AqVj2iIqn9@;s3OI9+=;XX+F49fWaYu&i`xYmvS0h zFJI|%IBIhJMfF!5paVSO;=R9wG8Te%>;;P5bXdIg(vxM0b-EkwrZX;Gy!+1l;vW?| ze$*AV3IxN??+8v=5X$LY$@1sh1;csM>%w+r9`{W*TG=z%Yj>u5_E|~sZK=nVCPp0T zb8XGNm^nGj%j%LvahlBa!ocjJh^J2ll$>-9yiuCsk^I=8neiK*vj9b*Xe zT)WlFSH*glb?ouN%YBo$7+N>HiBP#E*S+QViH*~yG=_QYx>UZg>~h~C>kgguHM2GK zH9FTll{HTb-7#(56iM}|9?R5&U!F`+n>eX&_0py{Yge0TGQ_7ZdRbT;=e;lK;HP7! zIRht7F3|Gz>=T%1=;vwhVw=k;rp8%%_7h&ZXl+{%yR&PL?b;66-2S7_w!7ZGt&|(6 zofYiT8|G!TZt^*cl|E`Sm#KJl%=>TYx;EqevczL2CR$$-TP(L_@iFHaNhvRxl+5Rz zR0(>Sa?4YyKS^(gY;VLyk0rWU?m4Hoy*#H~rF=p#+-lt!3%^@|>sC);V@Tw*PP)CZ zL$)_UP+D;7CD1-ZKed_DB*V2?d0KLBUhH_gbL-_z%BB;~s04S5l~0b|`qKCIBGrVF zxacjqS+2@+iW!!yJFjwiri<2Ougggjqm_iZK^denH|&bq^DHitPkkW_8ayYhW5k^n zh|e$)UcZ0RDT_1SPt#;13+levK78rR!gi@pyrg{78s@mNvom%tdUWW~wA|>69!qqS zf*TrgfBus!&i?j!`M%Wb@Q{0Nj7+v4X^))$=d(sfL+GAm2VSh6m1$^qta7W)5rLS^ zQ(Pr&kvcsfn=Ytn( zuM1rCO;=-ce_pDm&>>OzIwCGaqqHStR^}D8g^jZdmp=Y6{ow?D?w4#`;zE~BsVxwg zvu^FzMLB^xPnE{rVoblg>A>xYm)CaOG3ifQ{b#;U|8F~$1f?Wjd8GzbX_p z`WWj@4Sd>@d4B52(m7XLl&seG#vGH(+N?Td-}yd;|5=kyHog-tTFSZK@ZSEW;x>*a z<+)WizKTo;ipqSstL%uFU^Itgoc*nsJ;`Q=PQ@Je-gtvSYN~SU+XBTN^^Mo!5~eP? zp`|SQ{qB(!yvK5jE=nE{2q2lF|~4EtPX+^Ny*;#~+i}ZgV$tlYZ8N zGxbaV>@$#EC|N0Go#~#ftMhVZ;tKtX_gDTXv^%!rP{e`9E7z^xpJ}$}Qk;qL;*h+k z%(XkyJsF>Rshi&1mN4&s#>VSb+2;kOxi(fd&G~0D`|_0cbdN!_-aWLGK#oUV5uPO;zXgZG9!J$(1+uZ@lAc zeW`ToPNPP~;4@S8(mNWwio=7JtlZYRL5IOR`$dl=gnHM#4hksFP>E)RxCw}aF_~Xz%J^gHU z<7=F`Z_adipUt?akg5MP+wNEcx1z?4>D(?$-YzcO8x|FKTw%erX@g-Dq!4W zB7SFci1*S=NyUSVE=#9OxY-b5bSr!5lGPgeN(u#eLgLZeo<_?GTr7Tjme0xMLXfsv z@3|*2JByMsa@N$}=ySCaFZZ1Oj_J~z;wvTYp#>M2_Z4yZl}0IhES)i>iLoiH>&@*r z`?RxH4s8mMj$W4<{Y>`U-0QD?{i@FU=@h}xu%Pu*>^@JPmsXt@kNkL$@#fIB2HssP z+WEph6K@{cG(+HEbFb2s1DogDf1O)-mG!D!w5I8X9|pT8*H^Nv$@wb5F>S?bwmH?D z72Hx&lC1=GaeaulSgIQ{l*cl3IJhV%JvKKs zQr>gh&()2AuZHjVd}cm|%{!|98r92H`^=whV>ro?w=DA9xu%w*KdgP%PG9?V+Q}Fj z*EgFM&96_{>@Jov?TTDV_qWS$Z-2jE|M^(dJk=c>W*aYW^-WstbtWlj?d6d7m)@*5 zeqpGrl%1fo+5Pr?jm1Y)4)JVIRT2y+vz^Vsu%@|p>h`y992}H48Sb+b{;1B-@YSxg zdqWvhTKHtfw@OdlR{AdLXqaHy*x@;Gijz?Se@#K`rny@rrLRjAe?QzVzpr}v_myu~ z9SqO9UM_8RtU+zJt(NtL!&X}wzW(tHN%}i)vI~pPs}i4X3B#L-3LYM(HUu5&nW3=I zYf9`+_IR5!OdM+>-*D}_R#w+}EcWw*u=<<2mv;%>CeOlohuuAOD~#&_1MD{`i%*YwV1eYS7vKb-?P?_Q*}E4_*V%zhiD+BK;~#Bz64R?jx>t9eFigU^053#+f$|J{b~ zZu(r0yW2LqWV)Wb$15UmF=K7;;=dtRfAl)#t?PUt_RYoR$-CdtySp-(85jh2&CSSM z_13m?r6bF=HCwOoSLgC?HsR@5(!z05Ap4TiHKzl&UOaM)P4QQ~{btR}OS)|8oo8FN z-d@fh#_?@~^SQobC-T3azR*28AWCp!VA7pJ;U626tDkjtm{u+4&wCrZJgVomQQG-_ zmlpYZdp5iBGi;mvg-JX;^WwG(oojj78n=4hm1SG$`L^|f6bnP}-ut_!{yP)#*7Sa# z;9axUwbB{^iv%`p)`?+V8M27+>ixHeix&Iab8Kz%UGDlmt~R}vciZ*bJ)P%bE*-pX zahyTmhC%kn@-k*77e3iJ^{>P8eqB3e-(leT_`Xi#tk)dg*FLHMLnBX3d`4hS|7wpvx=$0AOB)oWCgxY4E_=I+FIZvzf*Vhx#p?YU zo=$sv`Sa~4+vK1wj?hUfa-CYT9-GbJXxMR^`;N<{btwvhTq%q9-QnXY+xKqSBtFB< zPaa3IFod``X$77+d5n|Yv_Zl;g+U-O+5e5coYWlIgHNVE{iJK~OsC3X)qb75x6^~+pj^ADNLOEMV9% zW2@%WX3aZnc`gAA(kI_YvR%}>-EG@{YePU;o=8*6^0*sEzyA5+QvYHG!|lJm@8TMB zGH2#mR;hB7PI*!Ymz9z6)t#a2a*0SvB2$uqR`jk7-}@q1Z{#hq$+=ma!0y1ZEmS17Fl19L z=i2+XexwUNmU(^e%Or>GrVp0YKCGPO>*?n1V5@O%q20@XSxaq7PWi}lvgm0va42|m zFf8$CabS2`x%$+OvWs7B1gbtUFmR-F&+pJ+_$m3Ttb={qan=;2dOxugv#EQOc8Xn+ zf5I{Q_1djMt9_d~{^=>Flsg%v-xEKxMnN$t@KJQp{rL*JVt%GsS)aSm%ebeTOOb1l zSBTlp4TXF2r*d$J6}@t0{C7p&`n;deQjOhZo>Q2_JVTUn($(K>(E9MU<7r5a|F-Ml zc}boR;}oCn^=(-@M>r{ri-Bd0q~*=LJNMGczslV@lbrWb=)Z__& z%{zayh{fdBSCQ6^!+IU>RNB=zEp{*ZIxlgnCj$eg>&Dm;ovE!J3qQ9y^wuP|NB-{U zI3}SYWOU}#I+3=h=dcI`<7s1 zhr!9H4}Um(#M|D)Wp6io2jW@4j&SVlo{u^I&tPXx(_UwK0l^}t&Y*L2rHoE^;i(tq&yI!aLp3sNj z02i036YlfX3^T1q>O%r3iJu~u|x%}N9 zH`O*7M!xs!dJ|Weq^PvmMD?8zH%s~98aCe}>p288lY9JJj;s?)-WJ{$BVz8jMU0nW ztKgS#DUIZkRY$pRc8cC*=@Sv$`O;3)n#;k3De=Q%(~W6tt}`#jizqX0W=g+PX0CB# z{gM~2KJr#vmoa0jy}r)ul(YfEfvA{2AJ`f=di~za;QZs2Z5Fnn*5;SCLr4W%>ANc; z%az0b7g)`+B~@+#<5vrkIXiiLT~3mz7&nB4GI zyVb+NBVo7Vc7HF2BO>jM7Z(O!d#-4;KK@MZ?g!KPkE*>(4~UG}zNzD2?wUyLJ$rW+ zEkC1vYKhe5$-idKy(!Q*!((EyF2kYLmnC-o1!<4Z{P1}fBwNDT$ZeJp+ds$%x* zW3S#beVUZ4yduEjd9|(qPPHI+pW&l9J-? z9xbJu8Iy!ob19{5h@LrT{?gqcR~KzQCw4EGy~aDc_*IWV?Sk zEhc5{gKf+GPt5wnz;#Fa!^PXb45Ig+`NetSm%Tc#ihx3*r&*^)wyv0f;^D@vGHd09 ze$6wz&-B=cx9+{gf~^N`SuXqf`^&e$*FibgA25De+`a93xSg!gOSwA?tef|mF*tYy z{0=>sGj0COtBesXLaFM@&af!uoMPtKT`BqIllrcjj<0*&M3hw2#IpU^^&j(CFWQ^X zmE-?XUc>(8-M@`T_w2p*>)!46V(yz*-*@RsCkR9wPw|=1 zF{kw4E3tH&CLy&m?;d>OnvmTQJbPyN|A(dfCqCn@&;9dyl1wPmQ@$Oywiy`<_HO-G zGr`T=@y4@-!E%cf+r1bBXWTW~aCg4efpK(xUU+%J8<})cWHTPc#Gbu==Z9O^1M`@A9iUmK;POiKh9aVqslG`R*W=5_? z4&!9jee+{>|J{+mfACv=KulLsbcK+UcAV4es)IaTIdU6j)J@85aurD|nYYDn)wS(c zCBmeiGNf3Z^k$eS>2M*xosD6M%(~Z~FV566IMI06K|{eIqbG36k9+3w&O0Am>zd!| znlmr()T#c4rn2bich9-4I8eUd?qd$G#MQFNjZFLF`d)~M9C)jrd?Y7XK~rSoyeOT0 zZI(+}T=}K5h>4W@)%-z97SzQ-$f|_eU;UF0ko6 z(|zo@q~`FP?>;&F42+Hr3Mw3FdP3RG+V~G8A@}FDvPYa3yzoM;V~?kh{ba761wW@wb=bI5zd)Of zU$0h5c}rt!n$|8!LHYr z-ky7K>F+mIOK*jQ+p(R67eBw$Oc1eF>XL0@X)DRjE!$huu-7E0(C3ZC(x$s|T%p!K zH<#sD8x=qLAaJKML9W{8N1*49hZ5HAGMZKYp4{C0YqIprx%~n~F53bwu*gevb_Q1({Xs!OHv3g41CMNr>oQr(r_*CO%gLOTbPPgpWs*j!2J?TKw z!}Y)7r#~?fTCw-UhGyRdM}K{O$Rm55c};E6^jFN+jdpgo)Ele~{b}8@Cx$ad<&RnB z+F$n-pBQkmm^a2uV~%N^M=7OyjH%{ik(&m$|r3MN>1JokNef#y5HH>I@wdv8PbwQCeyslI z?&PP*$RzQAE3^9Fv&{O+Iq{xud$F;0G_~bIBbsZ@BgU9z7H<{ePE= zdRW7&$P3Bq4#=OokRa@0dbju^!|Pc~r+Mn1W!^OFoyE83`y@M-S)1%E^IU&wzt;bZ zZ_oEtcBt8c1m-XP7u>(Hy!7u*GkI5);%^MERoc0y9GLV_UvhW<9lK<44N#~_*URs$ zJ$7uWL(1jtwvLPYo*CU6bILXrz0BEsbD>&9bhGnZ(Yo^Q0cYPb zTFNZ?Jng`w2iuSC)B1mKPNh{orw(Twr!-0 z>1hmG;G3r6mmL#U?a1Bm`}XcHiQm)fzfPa{wXN?qOGnoG@>N0e{s*0V{d9xZgCvy$ zXCj?ee|jDn<#2KL6>*(LpKkLYD|02BCe{;U?9qr5=ACwsHCuHt*yOa8X;pO3X zZ^PGXc+T13eN@11yGH-B9Aje+lWvJwAmfx&1d`&X+MoG$RQ#`2qtLg||A%wrcYc}7 zv^&D+;**)J9Iq$k`@cN=?yP)V-QS;|kDs6CV74`X`}=jet*j63necv@^<;zB10|J! zqx-b>^Orqz<=;@k>9TSCulLQeyT43M+0Dpcwx-LOnRV5q#u_F+r87RAT=vg@eiklB zbbNY9LGXtlqvoc>x{A;5UZ0lQwr)Y^2}Evsf}^PMSfLQ1WN zz2fZuKl}H$J&1#0L)%AyCzkn z_L%TANGQav37%5-{CC6avMEQIy?@9Yywm5|=p8II@7$wJFZ6uEIA#2qR)4Ct>(>6o zHDA>$;cET)=MqcrC*F>@edkDvP@2-Lg?=iaACUx1#rFaTSg#UcFX2bF3Gt0ibv{37q z=4ql9FB|CMUhs6fv7zIZlZO{R3FrJW#X)xMsrO28c_7Ocg#M2`a(QZ9C7aDe&P7}P z?lRq9bYf%J1O7`d)H*_$)TcXS%3YXT+%58)ZBJwR6utE?q$}KBeo`q2_<7qXf8vWf z8_YlSTr%|D-_IF!Y_HbNiN9tjFf3Ti`RK@WSMy6+je#l(I)C>FYT2CUsd)1GP?z1O z(nO&St$KUoH#ZaeYvu;O6t{Z7c7FNBKl9tx9Js#h;Y%Hx17VypkxaUop>^k<7j@N5 zb*PT|djGR!*30j+7~PA5_3so;W7Ip!oWrqJ=!JUYi4Xhp>&|gkn5uhg|H|^4rq*cn z^!;=8nz$RQEoVl*l-Fo}#j)a4?pKCrRfA|wo`s=5WeX)O|WvqFln+{F66`nn1+~)OQhY*MH<>j@O(GRjOt`}-ZJQXkf zT4uxfJzpNn7L-2S`TEyq0sak6huUA%*dE}!tkw8YWy00Nez*O@o~}QAPOH&)l0)^= z_R#;vZSI=2R-K@BUVwh^F&oVDszpzW`-%1VNJxunyIFqIxsPt^$bywY>wLiUdqbq;+bcea04zK!exmtN@ z-Tcoxluu6EuXB!h&8&A?jh`nunD0^md-a8nc+1}{OYc_*O*`T%aJjOf)W~s*eND|g zxrEY*x6^Z`I^=W8ED8N-`#F?px>}>zmRI}J?bfnP(y#m3fA;cQqjskU+YYa`;=OU# zHl*p)Z1MGV-}(Q?9A44dxHPLnil zTm5R!oF*2BCr9mTf8O5z`>R%Cs%OH+1I|K~A7|^^|34bE+FmD`sr$&hIabVl6EyC= zjj#LI4svL>R>K^D%Xj}>-T&udcl^Kl)hyFg8;>%5Z*i%bzwgf@{{4S{xAxgj(`i&q z_W$=Q|Nk@b|JVOBf4!U{=%91{)N138%+>3)H##{jT7BI7<=;LJ+n*OVtJ_ySQ#O&h zlY4H#$&`TVH5sa2bwNE>PA&XUT*7Iy>*jrXg^QErYyUiPmrtKR%g-%V^+Gh0(gnUx zhEwX59+b{ca_whesMxfq9#m7qYxW|Jd_`v2eZ zvx2277IZ#8d`5vmqGW|DuYjO{q0Th{b)_?GD*T~B44ZEx$VH?$+Br+F+tsc*>)p5f z{Z+17KlT4Fua9MmTXe7Jgo?seA&$*+vwJ)utGyoH^wjzhnZUYM^~3sq)Bo$ua`Bta zVc)bjWd8A>e?Jqp>#{O1EZP0HTt6;w(x27;f9_{wVQ`u4eWrZkj`oL3}jh9{R+@EzpR;&3hHELPR=c;T-7&R6H=HlZJ<|9_0v z=dF{e*8DetEyM1{;e}Sl3|+D{HGkipuCM&~<8gn4w1U%?$NY}wB90Cd6w|r3t@x)n zRYf2*wOKGR_V?|1Ilq5@eSZG4-wLaX(oV*0@dxY#&q~;_2vz)f<7xNFu9fM}{r|`R z&wL`d>D0B2*91*}8chs(cwWaj^0tan29Kto@-Yb&5i_reqFXq+40fBb3m&-f&E&k! zv>DwZ`HRY=@7-V%JIwIm@a*^T|4w(e-~K&Yz2A3L@s))#Zj%~LYg=U+Z2m1cZF|Js zQ{0_RIUX5)N7lHXOw+QQEhiMA@WT`}paITUAe?{54pz%JW^w4BSN^3C)8WrI0aZXD#3 zJD2&EdBWK|<>nGb21B+tF%B*)HzX3XtIGDSGdwo)rVGoR4*L&z>pq|5IxBc|4r?IG zle69V@_Fxbzr|?tFfcsaJlWZ9Er&2y+|)}aRRbDgCNWI;9G@l{`~SrB7fW<*+!KnB z`qO-adqwRXuW9EPtbg6R9JW^HSGj(i?VWo!zq?7RY?>Ts|(F+M@=6x)p~Zv$tP=!CB;M|LKhXEqd#j&o2D( zu!HMDB5%c-%?ICnxxTMq&E(X?w8XSDGq)LsEe#vuXKwfP-LWb4|F4DaKa9=<-FU&k z@Y`mC;mf@Ft){nFKA!5;Z0C*VSs|^;a?$(Xk{L7q)D}ue+}|&?L{9%r94O(iy-B@N zaqPy$aQEwp>B5omr;>U+w`w?TD(&@TG+^xF=f9csA>-=)>g8%YXtrN0C%dL05 zjxyA|e$rrhhhzC`?*})Zef*nV&QS3A$;I<_zdgn50y>J4wOF6pG8ovgH#v1ad*AI9 zF;^utzE7i(_0am`a_=4WnRmbS{QtB({+YC*tIsU1)o;{qom?Ny?B?hocHracdRf=l z0Io-Cr!;+ER)Ks7di@D$Pk`YU$ScIjeBB&ErJsTB3KwX4Kvp8?^fBm^55Iux=E%2 z-OHcK-T~zH?y0C>UCVXPjd+YV~zYUuVb+%0{$Ug9>I{xsi zx2rb1Zp#%diT>&Il*1xSu6BmUw>^FyQg4o&3{^3&yl$ka7I@Ze>-p{{>ra_Z3h3A_ zl)ivPjAOr8HEU_^G`^ICxEqJ}UCxj-Gbwv5siYvtr7&^Bj?4|RVN=#zSRC?SCu#0q z%hv&{Z)P&^*<61U*?qQAWq(mu8@_&Mo@T{le~sC7*W@hm zP?G~;-|j!PPHrlZ>9Y7E^v&%7Ys1nhUh(Hy>m=fig)^-1QYg0h^0>PEl?>Aqs|Q(s z)6GSx@_4+QAsQHGR@0c}n{+7=EdU^++ z$(&rKDJ%ld_D>6pouSk|OJw0(7BLR{uDuszDy~$VyKyo7ewfj1?qUn(ZFwFYJ}zyn zjV&_+1#c-^2RLlFyJc(X*Zc(=%+Jm$PT#+wKEg{&>r88r-j<_garag|n_sh|=5n+7 z{~G~`ldEq0RLN+1WE*gHO~>iq@A+~VrmbN2Tez()^Vq}b8_k*Y&Hp{;muKSSIPrq( z!LIE|>~Gwd1+F;nzr4|g`CWc}+0E=V?XLb_X?(Az-!46RFmFvx<&Ezb`f5FAzPh|7 zd*Q0d3=9o9hpUdRE8oF-^2vP}BfDnKn@46p%yMe|z^t;t;YZ<{gPg&U8_eAIoD-|Q z7Obe$V4$G1!7#D-7!>lG<2MjcqThdF)Mo>ly*D(|E!n!H-6tLQ!I8*Nj$u- zcm0;0$SEIKkEl5~{+3whIAbr{`~*eg#K|{q{JS<={_TCIyrpaZXJ5M(DtjX<{lA?T zOPyr3a)H_&gCDH(bc8h+rY+i`)xxpOE;3u#dQT;L&4n|uvupDC4L+W2U!8D`_BsphC)yrFAg%~pOm^87)G=C%_OW?dXJC0jRrw*K=o;~s}?-dFw4nmMZC zyMG3yyMHm*yumQhI$)E1_>+m&4Pn<6-Z<~$mAm-n@`7UiCDXV6-ni(g%?6fw?!=s* z?!WtG>Ut_K{#a-w|e z4wyYuu4vd9xnEv0^~f2=_phtkA2~2`Id$5*#kDxgBs1Nged(nC#c9S&3%XXsN?*Cq zcI?mklrum43CgNo;NW3o+H3vz0VDGF`9B zt*~0NQi9=7$JP(0Z~SIDUtAjY;qa2yN-kE8NyVYZ-Z+a}Jy?0SURy9X z^wS}(s<>{g+cTfaHf?TnYuIkM^%tAZC;puskJFcJ$qH&#TEQE8&dF7C_G6c4Ny;7x z6F=}L=ilx>^fSS|d(#GU9tdQqtCK(6I;+0s2fi|#kc=2e<$ zF>2dq-M{wSJL5@I$LFf&5y!2t2JHFD-Y|Q0c8w0hf`FedIu?AIkoWd?!okk%B3Gs)nw4qBRz*(v^iXa^ zmeI;g{@P<%51-#S_>Hl);djV6emfSS9s738^J2WSOTR;KuXpZy@6MoeVy!L--=jjV zHM|ZudawWC|LMGPUi=65Uz;Jow@mAHN%zbZyZS>oYd?or<=O;Y^UYED6~T3Ro#*Qd zb8o~ednR;#P`=@<{DygEqw#@vr!QTt{I7QCblA$8wcBUOcisuM-1mF^c|oSGyC2@j zD)pEhRNQ*zoTTRahRtqv;tto6LMDHhf9dYMTDJ)W)lr5KzHZv5g2O9Mi2E|T~g zr*Si>q4@*zn=r^b2=)lR&-Nt*R2!VS+{Pz$K$tRrXzSdg!@gc zv2psFeeAjir>|jW(~xRzi1g^)@b{I1sF|_%wVEn#A_XyW*-(R zFs99OVk|l>+;nfb)m4{svoHR-!>si4Z}U24yG6hA=l+lXApU2K`SW-Vv9A5cY65>B zE_;A-S`zXML{NAey&$>(+<-o(C=qJ-D7YebS_>%j13*rrpS{smOMh z<+)I@y~4Ta@ap=R3*UAgJ=@r8Ke_$p56=R-+kI;B_Kch6-1XFnN*7)bbnKRHfysB_ zi8?Najx6?kd)!QUht&_ovezv4nJdoyy7R!Qg#0C|M4rpTeZVQC-oYJO1w*@lSulCe7zPaLl1>%9<(a&Zg1HryF!c-`&@lmtB$Y zMp7{7bX|7E@=&>nt^Mo|pWoQaAE*3b7FWTx4~MTS32QMZ-MYNB$7}+FluJ^Y+cKZU zidju^*ZD<&j)UNe&o!OD+{;u1^r#S z)$-2IGw-Ul{J65cHa+0Xyq0t+`MyZL(96CdaobNuWz5L@BXu_1`$wa74)X`8u;={u zTj%>QzL|IYO+l)PT3TY;n(w;h2Vy_jzWqACms_aWT)x-e^wc$(DvzSilMYOJ7%%m0 z+v;t>VfD|>IK9~Pm~a24>iM6YKW5FoRU;I9d0~p$DTUidmFxMR7}jU;ReH>uTh+bo z;p~Uu8_F5u_)6+N9FFPqS+4H%f5g9a zPbmBm`bM@P+-a`tpAXGG%Nf2sxn8rr^K7-jqAydvtcbOHI*UtyO){s!O75%J;T1bA zBy}bKP1+d!>LQ0v{NIbb7nuE@7KyETtob5DhuM3>SDy{RD>9hgGI@Lrt-mL0F-P&w zG|er&ay?~l{R_YATND@D=}&L!wbneozG%$_mw)w<|7Ptwx9#HV4W%1|Z@=o!SX`VH zW%Q@}U|g!k#EU1FT$Q)Dw2U=h<(t{>?J5hae!HK}{h+JvG%;c040i4>0aN<81x!C^ z->7ELZ?V$<5isSz4K4w5Lrx9`wm9KA{M; zKgkQrR-Wamc6c23&(>t2-<3^&-yTY>uzSVayOzQEVgJvZj3maWvE+#*xUXCej-3Z=%yq4g_siso(j^?gyM=mMdq4NN@c_OCs- z+xgiIr(Sn|bWm8J^7Ess@BclVpS|CJJ}POP7eCpr(^6 z19*yW{{Khe@AubQN8Nh+BKhlzhpSWCryhyxvlkP)@Vlh`zre3l{f=oo^^7+T$6m-R z_%=_u@qK*l_h&y(|CYC#qfqR6%f9;9_TMU+)#)9(J(ce1@OTw5atSOy%A|jhrRc<# zlK&fS-?cSq@u~a$eZO7Zdux56i`9E$Tw_2JiR=z6W`F*Dz5RZFW$pjNcUNvM=8D?D zv}UjVftR8RmA`JP``iCk`CVI)?($6hM(XSmIq@}?@piv2&yR@SvY~Dy-f# za#j^@EnNOYFlf>SGmnz5KQ5lV-0vZ%>FUB1WZ?K*=GcmVt>XK%eg`wmx2yg1=CQxX z#Mo&@$7U|L8R5Of_MF0I+tUYFSE_2;%kWps`F--C|BWAu|2E&Ay;{3AcY5iYUwx}n zyF4zwzF$B2&+Pi|`3LhRIxuM7^9fSfZ87_=M)_4ok=+j$mALqYWxh!jvH$<^{F|Mx zzHcvo`S;!B`F|(gdtI{s`tFeTmrLf)3X#tJBdU@2Q~h<%;!Ur%2+42q*fu4{eB%3w zQy*D8S*9Y@#L3Vgdg57@wB^YakDoQw33;sGlGlr7dNf&2tX8JzgYNG_u>*IlZ}&4X z2-W>LK3_>QXo;EUCeKN4pFKPI*uVbQ&1Y4s&1Rpys&+HaLvyOe_8`|OuJQ|iv3Kt? zyYcsJ?5_>KH}C)D&B!p#{rYwJSbH|XxmkO!zsy@-{`>D?ySr~M-;H}8w0P@9wfkyJ z?WdKzyu<4@yp3D!wqD@$UyJZJt#1y7^x7+NF(}2=e>owr!ewQzm)YzmS-WqloxECB zyfxJG)35LMRjTIS+I2Bxcao=3yL+`r4dZLA*?-f_qcU?_RBLbC-S< zk6a6`Hk-FQYkF^@vzn>Ll3*qmYjJ~&4$g_6DhnKJSJz)WHqGwMy}GYmlaBbNo_f98 z_phTgr%c6et$LFaOJDqN+#Wo&u2ds&yQr{ncVhAk9_i#eYC6&?Z)&qAak=f#aft~3 zdu#H&_xJZ!{eE_I`}O|(qJMk+pLJcD!1UtCzWW9-N0vmr4_0Do+@Zv`B$R1x)qS~` zbZ#4e9qa7N_Sa_Y*tGoB_BBa;p?@#8-<@s0=g+Ut&->@wYHo{vd~wyE*y{UoJ?Gh~ zKa{a8U0+_!;4$fK8}I5xeL3h180^{!izxo}C$>Bf%qo z_sNlr#oslh)s*HZ6`z}(G1bAEv*JzAFS&M^n$vZ2I6utboOPnoMZvP1Bj}W#*Gd&n zGcV1hlU!6?mKX__yqIFW;urG-CFy7F=I{6Y`}6bfZ~p%IwjX_L_*@vygk6d{rBK9i zan+yFQ~cZ){!gB|&-_Kz=5^(7omE1*1SU?%+h5PlaB_F}{m|Mc(%X`rx>tA~y}oZ# zU5u2Z#rk*wft~+f9R99<|Bc<0Z5iFsDtdqP-zna&5!|^=>6U%D^pcR{f6wl%oBhF; z=g5-G$RB2VrdWouZQ3a5Q!E$G>7sf;wCH!lX2!k;x0qb6RQI|pnbDh=+hgXIJvT38 zlFIDZO?OxLE)sI}Vq_9*yxa5Cl4tF|%96^ze`f#wF7Ktt;Idqb)n`@jwMf3V#?pt6 z-Q~*pp2=i#c7OO&d!0ts7ymzc-@h)AlG}6bolAyTVq)^7wT4mk|3C4%_#eu;{CnF% zfvxu^Ui@jWhIvx9;*Fv(E0w$IVVy@~z#-gI_TWlS!}rc3LMvCPulUzocIw!sOLmt& zO_A3N{_h|1OSR7Q)SaIir{<(~_eLGn531sOclcF^@$=wq&KV3{fl*5@UrtgrV1Cg2 zbIz(?=ifS<+GoNnYayvCSnc>fw?4;q!L9ihqby9;DYY-FEPnH6mfn@%7mp^-SD9G1 zYDN$rSTtI=xK-oLpTTXlY#vGdK@_Un6o zXZX|g%THhbZ>;gxiQQ)6-oZO))cSCf zaedv|lK#6hc5$*~G*czJ%vz6an|h!Azh3-1)b!Gh zZ_kb1@9e9uzM$1uX7c@EJ^!oFFTA}D{VCPq^_oR1>)y|qdTomXXj*o&M{vp}L-o7q z2bll-Z@b`Q`h7;pHoJnwf%cp+4R_j{3uM|pSw?={-{2(U(H&a1Lqxs7<*%l9Ae z`u|PkT)yHl%wB&~Cs5z6%Vk|bk(<(unAZm(y%IsdoRg7ByL!WZWru<3bUv+?}G zFSiZLj~c{(kAEpqE^+oc!&a|^(*JX3RD6)hp7JVwi+y>w^#rjMpsDC-=UA5B4>4z0 zu$r^V=l}jo(?4AmK74Hda}V*?%-3fvn{XgfVtrrm7hzfZNN49&_2(BJSoLS^)cOlO z*(JM9EL%VK>+)^P>%z80?)blLiRBChKkwBnZg>80K4+_060p4N|5~HWl~-4P>R+4h7ekHMR3d}k2cYEz3ckSoO(hGL&aGAGJaM{D#GAac^zi$^dZhzC?|LWiE zg}>IHsxSQZd}f0F6630u-Uk_Cxn}1UX4DE@+wrfyH=)1e-yIt_hqsevsXfwa+~;#% zw&MAu_|^Z9zC0kXFTMZomZkD8OCQdw*XwFIFJ$yGa&c9EZP@?)p-j4GHyGcqyVU$k zv{vUD=brzsEzDS7OK&`rRtQeX6OZZEuKXLc)GpnTJwJP<`TPAZlIrKZ_Bw1ZYoXw? z6I&uU&s_LdGvoBiRrU6Vf4s@uc#8k@F+K)`)?0!v8&+HE`#tz~JNDC~$@5$O3-%i9 z&7A6B&bcL}yzs#DH~*q%r`SY1Ee!p4(OfQ0?whA~{H=HO+pc`Ja%y0@<@c}N_Itcf zH|H}D}^Ese4Bjn*W-*WHx}0$dwqRhD^cPewcyiXr7!zqttL;|ccoVQY6r7y zLI36jyMO)HcxO`^cm+Cs98Exkne!PgDGX2HB+h7qZ1If9J z-#&Wp-;h;x;2)2#dZOo@e>QXf-=FyA{NnxwwV4e1V#=HG@-<%h! zeIvFp{>SF)jf^tq<$h;++l!h0e0%?|7JorUfBybT z-7{x&lny+)!{zG2!pI;cJ~Qd1_++*ZQ)^!sWPdQwEqdDBaM7yQBaLINkcKxyVZ^=j zJUjC53B0TS(a_Ps(c$6Y;?csfgrl>A<4wBLZw3aA49T9*zq)VV$!R%0-MxPQ-w#)# zl{V=zNQgpM5 z%d6%yIehxmEq>VO(qy~pKb}wL?)m@i?d$vXn|D`tSQ)42>whZ>VBG8f{X4(g?BMjL zE?XiveK>7an|AEjf4}!!y^K)hNB{V`-~RPCy1XVW`4sr(+q#U+1#5Ktd_aYQ$(xze zUd7(BSt9YE%|uRd;>Bmbr{~}M^Ds3fW{-f-P8HEN&fQZFBsDTKFbKV@{dG0J?)y>w z{~y1d-5s3%++|COY=ptLC+hVdi&vNnyY`lbdS79@-yE@~zy6PAM+1X`%I&o`mxCL~ z-=59lHQv0{QPlUsxhZB9XRH&-9a?5?&*pj1HRACd2Ht&+dtLqiBUBdhGFSW~Re*NNpex6O`uQ!kT zMTIs?Eaq0r5Zf5`;ttE)=L@;lp5ou2@mK#spx6D`3ns5V`>aaZ)KU53?(q8$;+G2LO)T^+uC^}f=k0u|RK z+>gKOGBfT_e3-xg2NUPph;J|DYbV9zn%#c;ENk=5dwJ`&&0d{bv^8|LORmt;jwze| znk2ksTkUt%{{CT6hQz}S3OYGIE`B}he!V}yVR_W@mAS&-_;;6V2Q}}5=e|lXyzx#* z*XzZC1z}IOe^_reeck`9ipz5T#9q%{eP;Xm`1&3DgQd6L%$v0O?X#@idw1Tt7n8q! z`|a1O|NoKy9~|^<@8RcVa|>&dmpngwrfe2B)5CpQlV7c2PD`6CmE5zTV|B$~wFlNRDj)lO>)zzg8-D%Faa%qA_l(}e+qoGwCX=jYSR1aq_Ipb3++vBEx?IEF zU)$M3HwgcZOP%7G(D)(ubnd1_$EDuXme!xU!RQci>2BTkhjz6bWy!qudv{K7+y3gj z?&|ub-@c!{yXp_)pQSJV3rhW0So^?IPVMCOrH6lfdtNhzm!a+vKhq(%T%i=VB*8#w zK|!;&wfZeeK`LjQRCLO$^4&$sWOvLseMnz3@#u$(eSQbPE#$J9(-m$+xXqZgeNwH~ zw08b?S4FfJe3EBU{QYWKzzYS&`7y=YX1{pz;C8QE)%-ZyU6CAR&wW@L7~Edpy~~_E zImi4d%Nqxq|Mpx<9Aa13a~#=gvPQt+&Z8+_A)7oea5=a1I;CD%=OfJY3j-CAV&DogcEw6yJYxc^<0s{b;3L&>aHwOQ8#?(AB1t!n-<{@;JEGGE!L zD7zx(Y}pc>koBj1vc8#=C0PtG`(|?Ef>-r(q`Tm)a{e z4sd2Z{16>{TefE{Utz9DRmq>*?QESD4o?KPy*=OfYx}9iX^%s$a3B4dH2oESXN{$c z@v48#8KM8`K2GD6cbnMY^7BgBfr*O`z3Sw?zWm0lYg)fJM5{L$`seT4*P4BNLAFtB zuUT#8$q)K0zZ=%7y07}T%=K%2%2usy?*UqPQMA8&8NE$)>i6C{5!N^{)S)M_iL}TTRQK)RHdFbqZY^!%ceHG zZ|Jr@Wz}0REBZbDNb{T<|L%AkeR=4D;DwtPCq0bU`u0syEA+pd?zzBK|3h>iF4c1I zj1XppJd0Eh@0WNZ9RA{~VdMzt(?y{!r&vZT6F$IX?_` zvM3opu=|$I@FJt()m*Q01>3Yg2&)#aF?=uyv|4>BSSsr8?VSBwi=87mgzq}-C}54S z_!ANI*hMEZJ56;_k^*PF%mYS-4?;nf#(!1S&RpWTH87LgNj33q%PHsXa~O9__xHwV&|s?_^Y{CC*~f}CYIi6=ob&g1 zYoYL$oO;vyNHs z9@{NF&c^1=S1s@Vi(d4OX@kjb#YlT_>~Fu~%yj(YzxP)}zUdxc3XX(MRe>`N=@0(h zu2FvI@_l}f!*ZiTXI$jG+v*K(JP-KWY`6Q=mX*Ke2MFuAK@xm5=aJ^n^G$Kv{>N`$ z(46r|wU_nAf>}4G*Tv8HyK`pk%ktM(qVAroJ@o4Sf#|II1FQaM|JfGUpH z;2i(!p5&dZi%WlPkUzA|NtKh~$JK8OlRFP4Pu#>ZjitWx#$API0fS58Ts1%bwZD(w zr|9a^;^NWa($Udj7FKM1b?qS+j5ce1?{8FLU})&zx4(1u?mZ?Y!AU_LDcO?X0pW%d-S=yL{?xDg`tSDk#m^Ts z+J*H??d#$QTlVbc>51uwnX2Z$doSN(mb}SUJj&=#YQp&}UZrUhx%Slm{r2|ydilKf zev@}9y`69S_;&3im8IX!K9`<#`u}CxLWZqd3Vs+&WiisdYyYOKoS#>5viSa=pSIWk zf35s|pRtnQ-s`7B52_xHH!5RbNqBa9`}_O#zwaJ?`*$U1On4iUj;!4oCniqKuU|I% z&#U|9`E6BZeai{QV5ha^`FRd(j6dJ_*FWk#e{Iu|Lx&E=3;w>&U$|FM>ab|i5k)sn zl}*(ant@YRD6HNaX?D5cE~8+YGN=*}Z?QFS%wK2L(9tnP!;DREz1-cH`Y$s?CMpGS zF>tA6WY?X``upM4{QU*_Mb2AH9qa#eDhUai&54}%*SMR*Bdz*fa??5E4Kl19pCZiu zWJ=d>sV}H5E?v4lH&@B^9Lrh}O{YWV=i}Av|8~#+|3$x!uWT_3Q^)%T?bQ~QSA{go zFF7XcJ`rN2q`p4q*bTj}`+qE+&-MB5+uC0rJ}kEX*?BSQ{kNBPR}n+O5z@&%+f?S1 z9t$ljjq>GxtRC&PZT5-pCz2dxih_mOYt-MY`u;5IwYwN&=^cd&{!E;q4-X&pc1YlK zeIIwbPK05?hsXB+L^?e*w|Y+UE&BW8;%52(8O2*Yw}D1vcivi|5;)sM)g@&%r;|(L zfeY44e*Nx19t3s}NfW3jsr`HLYqG$_l^1`T+)ivo!SQTl?wj{`cN&=2T5MzOtj@??q+j1wu>Bv~K21dYe|f)pOmpZ$Hm|p5A$H z`Gaha(|XrhzXS(0Jo-D=bn03A-F!1UFMGLn1=gyj4HVY@R>Gqyd5Gn}$S9U7Cu5jj!=Iz4M>t>`1 zin%3jx_VYZ?eLrr{~j{l(aT`a__lBA5)~e|meQ;1ZD0QVcX##sdwVJ>|Nc;GxO98I zf}1nf0^#3r(*y*;t=A3*g>@awnNuBPSGV2UE_~gRS$|gV>`vDZv5k}Nu8Bh*^*y=y z#$%6tY*AD9&;4Z1VsqxlnGNTcemQHmxAwOjgOD|2`r%a>^DoplDYEH=!F7Nj3ul@Vy>AS;+zdoLA)U!rz+qwxK3rzD>e}{<7<$uS$ zaz<5Y&6N6e@6NOcE&6crtWS?w)%;C~N}n{%p6}@lZ(;m23WjwkO9HSE56`vOaE zM_%Xj2~DCaQx=Cz(s0!Z^wQiKIFnO~;YPl_T-0CDn+EoKD!+eye*XRadeD00&Q5X7 zH0?~?)CSXAFP7zvZMePNU8}Z0l%GN1q|~$t6Q3WwIb&o7tvs@7+9SmS#p|MVwoeW&dSC*1FUWt;lw zv|00%6Du|thQUUC-BU<+CcHl(lsx0?@BI6>-mO1e zdtk0#IDg>x{W4o3OLSSH&v~^^`F%ud;|%V#LNB(>d@!lud#B0lSMo(KWvmY^sa?{2 zsWC4y(x^=QWrt8l`GNMI?yG}sZyow*o+tIX{qWsu6P`iFdL4g%e-7%(%QWymHFo-X zKJ9Sr@2|znEMFX0nKARm(l1k1+B)`kdubJA6v+0;#TBy%&99k$A$DiG{<5IHf6n#a z&uca2U0YJ-b69*c>pi`K*}U`BS1pRl`374H@NcjG&Zw#T*Ro9O*&A=P*h|5P`CWCO z=j5xlG5=nk)Bl!s>fnWm`rYpiee*~@aMUYd;{oGYo?rD(c*9T_Q8l^zrO$<} zPpYSBY5bb8z&f(`4d=SI&Ei6@w7Wl>hE6ei&nwG3PgysN$(_+|kM!&fzr>%P+WTiV z!?}$wjHA|kI_$LZ@)gjAN$#CnDuO51`2UkV>|e9@DMOTM!M1PD7hc)+V)<74?WYbm zKKXs^f9TKiH~-m8Ik)7?Y2ybMc>`3xH(%r7-#4QxO!-WbYQf0^w+m-@eqG-d^Y;Ae zzdt!lPF5^3{Cw93Jk(oq>TUSs7Q0sxA3WS<9Q8`*JivW__qVL$YyNGWZY8rQ^k+1G zaoZ=`%6;>S3ckFG=hzwc z|DK8d_xq8_ryjU@Ykqr>_wVA_2I+x+l`r>&{=B_LuOum=w(#7I z#7CFjAG%X|!2R3*?D=;tdi^@#HbYPCXDE|+YQ3G_hiTuQ$8pLo{Po?qr+j($wMJ)6 z9f{rE>0X>i+B$yj4pVzE@$Y}BgWu+V_mlXwBKd%_WTKc}Bi~wwuSYGJ-`~3{xB1ul zcl$pF{fl_;`Pe<>nd^iy?$w3%cp1olzt41BET1oJsdJXQEHh}3IqduWyopL1{bK*B zZ?m6%Qzx8#TF+fqsc@#Cs?vta-I5Ed2Y^V0v)q z|9jgF&&(EE{bz%~8+M;Pt>-`TRqXw{-SQ95cZD@V8QP39SN`2;UaI}ejHh|tdzP#F zbpgjs6q)c1-@ebJzbQ4c8f4w&>0|0U4t$Ncnz$GxI&AkQYCVyI;vay|sN} z#MJ%VhhKFYAGh0o>3x}Gv;S7Jn;-xDKX;tv;+cJ4ek=7FfQD+*l^c&T$oWglzQnn4}>yCf*?nVy2dztK8`jT5BRWD3`8Pt$|W@!!Iv6xl+UF3JW zz7el;v?{2)kskT$r1<_n$J1sP|63`rCO2$RwujQE<@UcPzk0p9eEa>{uU)*{#>U+o z8!XN{2?{zgG#o2k#&tev7sI|y{IY4ha?4!L$p{!kE$9E;IOnv_VfpUq4*#~5e>=}_ zk@o-I{|}6UjDms_Cv@CtR#I_NQTcwdjgf(cMP~Ca<^%8EEffm5x2NLkx6{+-*Zk?} z$l-o4i|OzhUSsafH`osTRd0`K4*hvN?BBwPjMFZBx!KjcG^U0PKWR2|IScY-}dHd>MwTg7qz?g*BjiLW2LRW z=%`mh(u2sgjz|9f&FfNWn{*<4|IfS6>%VJzrT%}JJ4t2g`=s&;*V(PfPm8=j#TjeT z`7I&uFFy-(U2pmzkdrfV_WONxf8V~}zj5z-AkJ#Xg>J^GPtouSIZ)$pY*xlYp%XLp zSa+;8Yv{N=d-WZKG~RPA*S^iUdE7~OONX)J?wa1fzn^OaV{P|&%9ky~nBU~L&TRJU z+^a0UE*@XrT`m7{z5ciP(;u?modrv0xJf5FIJDG%TP%N@D{afQ-67d)%QJV~eqEdO z-+ZOntqo?!u34pV{(9uV^;G3fxAVV_vfj$#t*mPdUhdFb5M0n{6T0tuW05`I)^hgd zN=}vAXCFP#=h)pmUGm6;58LBw8dG+MR{V0GuM$4{Y}xLew{q5PpA8x}ogI^VRV{F~ zi>A`j9DCk~-N#o2e?7mwkk#RafdU7&bX`g9=ZjyJMJ}womYH?CTrB>eB>(@Ctd9W~*PPOUU&{&fkEYB0`Ct!H@ZSE!3 zR~9<2L}Zlxr@lWsgMVsZHRp@kT^2tA-@N$$-edD|IsWxRtzCKhtHrhd<{h=)^J{X^ z)%&$;6L@B~HoM2JJ9S@#NBexlpZ&^nC2LN2|2OHapJwa%52zhW23?CwHK1M+g3FP8+c`9d+MB-cGx3n3)_(xK~=fc zy>VtdFCXP6&)+qx-EAUxOjzcR(YLGz*LpAZZ1kR{pmgJwvXaJ$V=rR8IzOF?cgfbC z9r3K4_2Rx?yC(!SX)`47G#_Xax)#+VvDWuh6q}h^HfxOY1NrVVd>&`Onh3e|>rbQ-g+rl8(x8 z^32a?)mOWxA>S|TEX%yI-*!dQ+#CF$%{uNI`n`>h@iCm)v;Y3x`}f|ymuHGwELMN~ z)%@Q}L-t?W+Ee;4`e|P1zb)BE^gtR-Yb^X8%d3bj;|_3}{p6w6=Eu{n?BQ_nYPH{N zny}S#g5*iP{~K;;B&Hdy;NYF4lqjZ@AgJQNwndqHOMR2hv|{Z5of%F6)((t|d+#mJ zxshro^P*h8ldak7>)Mq0U8)b8*^8$&tWrL5K`Y#A@nn{oqO&*i7Hw{h@7`;6dn;(K z+@&wuY*`#!_WGC0zw0%Vw*Ifp^WgB+6=A-P%U{KBXIt|}YQrs+B_g-HG?nITNW60J zn!#hE%-Gcof))pMYuT3s{?qY`=bR&3Gh@$3_vzEtmb|EW-PtikX{kow6csJcHS1%O zHb+Ydbb8zjk7DuKwrtnLoNewG+q7~gCWtYZJ=2Uc?lzE4J`*RswlvFUmG7#z|G2Lm zlTdEES$$vJZ>RRtbyi(jQqrBC-C8qR`wR43dwpSp!UtAr=N>AbbfD?M@eR{^7JaOE z-exNu_}n`=W6MqZH>dREl^Bw?EUfMNw%kCt@xCsvLWhOZ*X{A%&tLEC3t(x;|Muku zNB2d?Y=N9JDamhsP1*YPX2t4H+fRu(NLG74c+f0+&imujHxCXMO8w6f-{Kd%*Z=K2 z$8FxL+rHZQ%5VF585gd&Xo zSSCz=wYtn^$vgM6vp=q?e==jqERpO?zNP%10~&-c9eTKZahx6t?-h+NFMe$2=N0Q_78jELw=G{cQ|C0|MGX~4*fT=p2?d-TkbjIXnMt|5w)Wwna$e ze8cbC^BET`W?a>8>*ck7nb6sZIRVA8%zDEA0^jBvAC?pPo?B=Y`akUQeWU-6&WHYV zUmE&9dyw6X)WL4RF-IZkz)n>*^BJ&I>7Or^nPk@^6vj` ztLn`s-;nW=f3}iA`;T(a^eeOeG#uY*f4=;ALT(n9|F2Z?lt zHiZ7y?Nw>CGHd1gG2`9-wU?|eep|gzt;6_!^9G+Ek8j*RCtU3@_s#j^#s7OjvF8)@ zb-x;DM49VAxbSsG`44}%@0FhmyZu+Z*wj&{hX0V!L;3Ot_QK#1?HS$sK8mgUvmxMb zzw6u>zMni5@80ddd@(7OL04C@?xEbYekyQQW3a?4Sd1Iz<*N zEDO2T(Es?~?L!QqGX3HE&TYGJ9zM`~{>)$VNk43^tLZ~WH={XQt}c0}^WvKFwZK3B z`(FRMt+1{q|$`OAj0``TzFu|L}j7 zQ#1NfnrFS1D0ukc_r;?L@At0Fy!0xc_s-Sw#g~(&{$KI!`Okyv{j=6|w7y@uZkq-3 zI%8YkSO3LJ|J%C%w|`-oG3&it%epNoKg65&&fQxc_5J?CXd~O@6Mt;+d=(_JKwekI z?#mR1BP_P-{{Fmjy`JxZ+4<6C2Tja{@9fE#xkB4S{`>t|pDU}1rOodgz39qppY`~D zpYsLA^T+<{Z^>|d_N3UzKB`DE>XlrJ>f!w+Z|=@zJHGy(<9yryZ^NfAW01{!_+jB< zmQ`1mREd=w{haUhf4^XkZ>*1i@f`5@v(dx&Z{H?=i#Z%+S^WKe=+Ef-=pWw>OPc*- za9Db}!TQ3^-T$Yp*e>CA_UK9Im~Ow@gEe>Sy|+ZLzTm!d>E_|{8A_}f3-{Ks-8uL9 z{H2d~>Q~37N54QCb5{O#&tnB>JUqc}p;}B2)0f4qhui;sOJ6aEwKnGa{fpnMjui*~ zv$YpKa^!I*>x>7eBhO*q?_b<37C-rK%$CznRwLSlS z?f0wOU0{RI4Gl#*CcX;z+x>O>hUYUMzPzk{eqQaOjvVd-`!o%XvE(*o_bz>}cQN#* z?P|@2>T3`CZysoWZ1Rso0X7t^v}kSc5)n-$rJ$BB28Bw<`3dXq)&DNrvgP*0L?UChoG%;HO?t@%@6 z^PupZdb@q%o__DW-QSz?FZcR=uioqZ)z0_(O3$qq z+qQB}uitdeLTk0(>X(Y$Dc&c`gn!CK>U22gc`Z_$!N3sFn6qx%!3T$ekMlD9RhbYV zY8SJO<%oK$&M%8652C+4)@j&XzD=H$LFLbnetXxTB_6qxQYNe1K6`fZ@%jJ0Y(D!n zEZ1!IYTr$FCj@B)<}K~g=(cnE$}d)nd^!{pgHHdt_4d2!c$BQJR;>rEQ2zG2y>{2_ z<-7OZTk4j**ms{V3*U6tDbv>dNw~c?tT#?^+V8@3H@I&$uav5H5n*uI^Y6t(#emKr z>8UwpC$E-m_60A%SUu^<*Z2E9zu0XpUA(gF=%kcsImsdp2T!hCx9Mhn+2X0!+#)Wu z-+ep#J>v!bjo#mt(`}-!Zmd|)wtb`j+%Ibc_E~Od>1U0UTzhbPVXEsJi+vHQ7yOt~ z-^40TPd+PT@l1E^f1PdfHVNF)^~;$t$QCP~`7HiFBKgs&d8_Vk>aq;`>MviG|L?=6 z*XQTk*L_=ZqpsI|^{4W;wbcf8(r*slmYlNh-djcm&u!9XYr4Lrv#t`c+G0PM!&toc zndA32ya9)rPPIBJZBR}U3`yCdxM+9z_WZa#ckbK9*zeO+ESge&tle8Jt}y!^*Aw3$ zogMm19%U@BvO8rTZl3P6F~OjwWU?^0;XR|Hrt7R_{vyz#?*|*bUsgkwyQ>{YR?AR& zF4*|wj-rR=ZjGgrRBmc4o#G`lRbb*Np9?}?&NZ*HXTUgH>->?&4lD<9RM#%$F}T!l z#ChGR_nRfyc3S+kk9=9(yw3b})pa`;r==W%oG-uqE(ecW$6j^cm#7_<7ACav$F1;d z{ocyV&%bgrDSel({qgVV?7Quk*g^`skF@?jYWrli{vl~)um96-Tuo8!Tl;GfV&s~( z>y_JX{z!9_SdjT|uh#!WP92B;{qeu{9aG3o-m>l7>qAO9IX;_A-CnRancXVCp_&k=g#ck&3)nv^ZYHr*QQVX;PElEZpZmw^-C|6|0oT4 zcF;ZWnhvvBmg)WtpJVvj+qa&1JLRp&tcE19wI#J(VNB8tb~Dd!o%O%z`Nef!(kqz5 z7fWn3f3^Q*e=mE;56QKE#Z$kZon8CU+D=)nt`Twruhb7uxyQbG4ko(ZKeMMdN|4GdYr|Ngh z9V%ODn9w2=arECd*9UyPAxxjm>$h)QZ}z`)!zbre|3j_3r|tWkx`eZ8!qpQpkEG

e9VzbS^?5~^_40G3CUijpXo;%P&DoP58b9FtS09|Q*tFbtSET%on;COh z-Z|u5Ruqw0_GxF-=l#u2b387F)$I@$v3vEp;r8YGrFZMyg{Gh6=d_)&`)|@}w;3vp zl`q>G*yVn2{qSwI=eOq@*w~ z%J=)NooeSdre*%~{r!2v4q?qhr}$U?3xBB-@T)eLnW1ggg6CiU7w_8;H*`4y*ngoLYaWC%bHy_f_$fp(;r^?U-rVE;HUeoe}8t{V18-l-Y+{78_Eua zMawk#ADVUj|9bH^UeC|xCbNi4yJ93bndO+#-qHun-gc({cdup+{&COd+v{ojL_>YP z|IuEw;qMu<$rE+6zT8m%`CpZjWmcm3zP~9fz1mgrYqTr=mlwX_HZxmvT5T6NI3_;R zt$p|B(lWzz$LM_Pncv^_Ny&ELJxQumP)yUin=7m5Gs*WP%@$@`$n*`(~#1eJo%LN~NN ze4X|G#>&rU#cN$xUv1>=%31xjUgF^fo}IEEIDQvb|37;5MU+~{+mJ?;Muq>^8hF@m z-OuB$P*Bf)RoVJX{?)(Rdb2}*rmy-_u>Wg)@>2V2EO&SRSF-wkzwX<)_q$CFec4=I zm+#MX`T{S*{MzoKo_G8IzL|Uf_G;$ti@XW*_kWRIy-fVg`3vPjV!z*>KmGIn+LZcv zwJaveYm-|%g(ObDd)CN*=HIM$`wzc4|E5+(tT5)s?DfpT7Lb_J&-!-!|L@;c2UMT= zGM8qA)hv(t^swdmEWDNhv8!LGKRN%$bsm3{~PYYhId9X48=VeI@bQ zlf+riPl>aw4S6^5jEI*|fog+=?t62#Jt6rV{Pz1CU0hgPL^N6)6a^eT8l5;457dZd z$T2W5@;2|BwSVE|+sWD*_1~{<&)-+0*y&jnxm;%k3@`We5^ zZm(_CT*+0_%d0IlnysEcZ(kht>sI7WAy@52)yD9(Y=Y)X{olN5J% zI`ch*^?1M*p$;(%28IO!ujbVMY`3rf)&Kv~ucQ3e&z+m9@ytrV@Y@^l{eMMEW_Rv6 zwriW}tETsj`q!%E|BB3LWE9x+H*S8h$fFNW=Kg)`zNE9Ghj&$Glb%oJj0xb_{52#cDCJU;onmsW$W9iY-dX3KxiyHNWfLg;|06*9NWhddLl;efUe{Zu zj?9bqx|r|%X}(GA$itJ5|5OMC+5Nrw`~AM(U;ci-H(8@2BKxX=qwwa9PS@35Sn)e+ zgw{2zcvasVrup|0%Us#A-R{-vIi*^EJe>XhL;k;a_FI$rloZ)~7H_?F;DC?(|2N8; zk1d`Wv^++0sb6KC)#~EBf3IRPmwIN#uK6nvUAs}0$-MLQ*KS6JGg6=5ZTMc1$2;ZV zf(LIZvufWnh5p&Gsbb9JM*YqaE%fCuvSe??elZG3Zi ze*Fa5vfY2{%5S`tdt2WA_uYo`eAPQoKhc{U#G&bH&wFF%!K{GK>%SL7I(P^x7#L<& zJ-_&PzD*UoWXQUZdD3$W?B;#C967hB^jzq=HAfRRdvDQP*xlqc_5K0-H}CfTD{qSk z`Y9f}KGW#FUH!jj57*u~dADx5?6=*A>;C`PQ2!_6f5!g$k{|Z}|JJAGz0b98FFp3J zccQAilF{Xugbm+AU&e&W8VJ6O$zD5i##YG>(~1+)o-KN9x>w)85?i2A-UMZ*68DG?^N`x@6sykP{20UfOxhYvQG=_q2tNrL33eGk1Gj zd&)YrPCJP6|GC%u|L&Od$=zVDhyt^Mk+88Lr_$z$0h2E+nG)ut$$3=DVA1~dvbL7n zXUEU<&Ht=z7nXcu18?tiw;=K2<5uCX<^-?H;+uSaeeSZ0f4?P(${eW+kqi~;5ZHI| z&MvL0HwWyty~~%hW-utMvzmX;=81c@`L!>XXG>@DWd9Sn@h5t1ea^d}r`sPK5Bnb; z@GmUt+Gcy7uzc_KpKs59)sSX5)oE{Fkh$}8^3%h=85k58JY5_^CUCGCZoXq^Jo#Em zjp7o4AOk_}gGbV=^4&zzWOvLweN4Y>!=k?#Zt4rBhCQESB04i&`$ml0jK1wLwOP~L zCHJgZc7rMOf5L{F+s#`KF>p>f`89oae;(hyn=clg`}uJ0@reogb2=FW9JEWTs#TV5 z{(H{%0MC)v`{NXNrEdMnRXFPHE5x`XV$P(QXUZg{5)CF#(=eSiHM5bS^xK(pc@8bN zSbA4}Vh{Ug@$j(JDf#XvUA`iR-fWo=#G%+SC2eJN+RU4;=7%2WiJrtdZSKU(!`H5u zPSO?6><&2hiO1MrcHWPb6+TCNmYnO_a?NXH% zQAe!wU(Xlbms(bQvts%CdnQ$jV^Rta{t*|do4}IPwEnZqnO%!zKk03}UcLU5Jjc(E zKIh_s*%GdKb;op`O78SfGS*eK)yw~Q|xjU zGsR3)YM1v}Xf4sqSNK+RSNR|7Hnq+Qrzeuz-sU$R%YGWUxlmWC^-|98fBI%o zvFx_sr@x|KS8UVnWendZZ8IbN$Oq-abw{7c*M$d_dnxb#`l)9%)0Rg^dF7`~b-2lB zUOt6a>c7~PJM|Cwi&B3V>zgj;4t94icQ-t|Km5%@$)Z{RIeIsHeUA4MzL(9)vE;7rdshKDmCL*Y^CDnJ$Kh_e;OwHvcd1`*W*YZSzw8@({*jflodt zib!R)m9g7=;(OchSDewtEVH5MMX!P3;r+sI9&g?l_1XX1^OriuYF|HVVWoT zLE^VD1CNPAuiw(N9XCaPv`&i5=8-V|Gh?H)RB}CA!@{%nDZi)6%El<_lyE0L5mhMq zv2V$<&KFm%o$^wd)p+AyVIw=knV0{ccbm@se}C7pF5O=T)@n4)czECF+wHRdZx@IB zyuRqfLw^6aP4XZ1{`l{^!1`mOw722meo1SFoK-*Lm+C03XP9`n{ie!=n|M|ZDe>{!-YFhXMaj&$sh6!grBp=JmSp07P9jp22vv02# z^HSSd`~7IH_Wx~DSC}%#UH^YxI{QY{6(i#YLy?{QF=sx!XZy`|r@noyWd6c05BszZ zSaiwQ^~j6=^1UGa>HqAhW*PNyGqFL`(UUv|nqdx!L5ZH@m7 zc4zr2ei(h)^lty#^|zxN^^HVc%eBmScwhRP!ME!r|KFZ`Wcupp-q40d5z8704aR)q zkMmgf&ia3U5mRpD$!+F;@4f&jKi(tDaOau5j(ciU<5~OM{j*Lf{fTapKU21g<|q8-9%}FYSQt)S{kAf>^JKDMIFsSQe!*(P6KO18zO?e>@B9Dpce;Ly zh!ckh6YC;@j*bqsu>JF-uKii-&pX?g*}$gu*Sp{E>lIoPlG4=H&YZDjnU}i6+k>XJ z7aDbLWSTN1`=LDfd>3y)kIMWYqJCL#tuBQak@?j{_^`KY#r4%eNcCcE2C- z*Z+EK|L60mz3L^LtY}XUterKlAMVrzf_VxGdi5 z)MIf}qtR)G?Hr}aN|VFF+&8~j&bgb}=1kfIhch3P59Q5VP~I-9ptR_ON@j0Id%2wb zuam-xtrMI)I2m|_w;0-oudS>4ygpteKg)TGq2vDVjUr7mJ%dv#_2$hyn9=rZ(v=J+ zmzk-XOdrbm&Rsp#IOp9)pYIF-nTI$F99kI>e&8bOICW zz8`NQzn#AS@747Ee?@2X3UM4rWxo@3bmeTZ&9^+2Ry4O(7YckZfY_;VZk=T_lSnL$z6vAUe$b2qZ?Sm3z&W!aw`{Y`(* zeZIRn;z9eJ=|@!Wb1n`mYu~%viT93zfgjV%jKl4_r!zS7xW?}>`>VmQ;K28Pcl`r7 z6qnvfy{T9I<;mRd_P=hv+i?2Z?l&9m%a$2|nz%Cs4z1v9?8y0E7Cft7@*+!h#a}b~ zd3B$!?`L*VV`?jxv;B2)vHH>m_$K-;nL% zx^PMJZ}KwkR%wd|O1@|I)Nk28;h_N6eZSjH@`B&e>cl2FOkH~Xz1>2dRuQAqoBrzE zPTzgFuKdR7*lBOe_3f&stt{qCwdH%0)IH(p6p;m$_37@(+Vi{lW^{ad{POs7ea6+g za=MCqnX&&C*yh*HXM1_m?Z>|ZIre5LOQ)_dXo-hgqDl{Z4ny31(t!9o<*72lu-U~K~?^wBA`KQp~Px8NuC3kLQ@141YjX`AY z^+V@e-<A&pz9=O)tHulitcw zRej$vW;@TGOtW|DNz+1)gq5u>vkd=yzJIy+eEZ+8CZC_T=YQVZqiJrh4{|OtoUN?H z)p&%1fr-&&!igRCq%K<~o5fa3a@a`icosG_B(XoAU87=}zSP{nnH&?(h1OYdYX+WK z_5D_e*8zTezBe0+UOMk=O3qp@d0c6Rxz_pnd;Tyo7$r9;`)_n(dNy$+AG1hv(P7E*J@e<=@9XF7tIMj2YrZ_$cz8)(`@uHW`W>KFbP=1I z>bytu(_X!m4EnosZ=$q}%eQ1h@-A zWNWZl{-;FES84L)^u|V^4#{fc{&_J6*9aN>T{mUsnI#i~W|Yp?F|P9f70NWAwlC7ElTDc6o4oDoITgkgy>7~X`@5DbBV|?!l-wO|ksWnnIU~q8I ze0#Gm+EB*sUgn(w&M(_~tdGkHq%C6MI&C~Vbe_@?$x~}vf3@fDH@-W+{`>VW-J9P2 z5wWXL=9~Zey(!Z#5p!+kAUWaFi5o?|ge11jd@!$}zthFV$>aIcs+G-ulQt|KHV|9W@5kYkRK; z?|hcs_f*KqOOvxq=*%%O#W%Va&hA@cx-r|ozc!M0_My_UsHfre4C;Y;AH%9oy;=L? z@7xPdWAE=3`f#Y9rP|tfUxhBiy({`&3|=L>ebRzvh{`{%ZP7UOk$nbV#Rpf_wNI*J z+IQL#{ZEoI~+wG+i9vdZ>&iFI+lgp7) zqFhnm4Yx0AsGYP&qtWb7#fE17ebe9a2x*j;cE(P7TQ*g`;3Z>BzRl+|4aeg`E=kqi zkYD?B{=+{t`P1H92;Zku#c_M;F~f^q3Q-S41t;d*oUeb`=WP6ByZPrC9HO#)qcmgn zn6=lQsgy}`_m~|W&ANN#R^Mx`-oaL@nCfT|MJJT&GQ)=jIShAW`!aU~t-Yo`IoNfT`Eg{lqW6C5CD*99KIwAKzc*lq`D9 zYgZO$*1L1Eyegg#zNu{BDoEQ`u=SAZztg7mM?U|Yqs@9IDs!!my3ds9cMB@brtQ3V zG;m|evm@WK>-pb4YiA1Cu-AUY-mGJ(m-eNcO*!|rC9dZCqp#)b86K$r`f~a5@ue&c zMWL-FLc1(XA9V|56n1d@-nBG8?I%l)*iLT#T}AoHd)f9h{r#!*-}@x{o|hhVD*qcF zitoEu#H7l3XU*SAEkkzQFKsvHYrA=y*C(+BopD$aT4+B@Ex|2;MJ(Z%=9zW;YJ$x< zyIKNHGv8X?IP=6#(Y>|mM#fh+rCj%%(y>b=)`zk78{^U`Ghb^jHP9|@NN^BSJZ?1D-<~h~y*Z&xJYL83B!}c$ zmUogC>~oJhx&-lkKRsvV&*VxOcH^167Z?;$79LkkYq~i{i2saVrs369_cmLeJ~gBI z@`l&`M|1!1ewWDeJ?B#w#VNXQt>xsoOTD-k3+#Sn;pXyKD$Z$zrBLAiiBEkB0+|ex z^_}&!8T}WXIa(;ws$5rkQT;%GaLI0t-_~!k^Y%xnd|6ez;9|{WmL{cR9Dg=#U90~o z>a4sVXN1Bg5uO7lEdva?e52e}@;F_5(Jt|inFWlC@;R99 zT;xpry1_bPZa`&<=+(Jyi`73bNh~@yUG;*&QnxnQYnrvkj~(FgNy|AIF#ly(YgWmD z?p^=;=KSjmcTG;pE9Wz5n#9uPp#Vy;zuW#Fe6D*~=B&J6ub7jISObd!OVUbv$pt%< z)+z=jO%rO!5<;&`huq7!?TH8D`M_YBfg~+p?RliarwPy-WG+D@E?bEuY zYDH|}nZ_Gwx30%*eq*gA(a@3lbEP{|*|X%se5a@H%blmE;vnTPZQt88O^G*K7dAp? zb^d04d8Xm15XE_h)#eP>-Qx*UpT(b@EhspFaiR%#BTvTxhgPeSHw_1J`XY2gbBmc$ zLKFl~J?mkY>ezE!=yrD9l9RM-S78T{+`c#S$39( z_Mfue37$-!%Wjmj+o*^Lhh}A7eHMT8@FC3|`xd*2+}Ao9ahE@E3HN~`FXl2>{#<|V z(YkwEik-HeOKp2Lg|mZmX+hOIE!W0Hij3}35%yPJzdQEooX-*0^~p&$Yn{DUxjwk$ zC7{))Hhaeg{jgsV%QRXNo-K2g%6-uG=Jo`$hyQM0vtR97vn{(NCi|24T9$WG7VSCh zWz&u~Ri3}|XZ3`RjJheieOB*IkI|XeZ9M1h`m41T?{dBSEH9?#l;5+E*-_Y<xg zud_e%S17#-T`v2q^7Ybw=jSKb7=OpCd)vsu)K#R^%F*#;$Ay>}3k{WqW|acV*560( z@tJLA*`V5Z%w}KRo7WBN-~O`>TY6{T*HSHLLBV=!KC{}sqL)|{HJzKq8`546e)m)!_@**)tn$15|3 zufPAds&AjQEczygOz@%=b;dwrWQe1fxhuhS%l6)Y8tzdgTb zvgU=eM3ix-Z_fTtf~H29A-NGpq<7S%X>v|j*8SnVXtiKr@>2b!FbL#(DFTg73D|^4mNfY~rkP z{J%f!&4(7Yg1w4T)-^stJ1RMIM1NGBtv~YQq)%;I&H+hBLvMw&H_8@06B?E?%b76d zuebMC<)7@Z`PI}l>u+ED>&f)lPv$*;g~N(tt(MUl|2F3xn0c3}vRG)xgdefV_Y+?7 z@Bc0QE9!U7yZz=VwQtkk|GBq7&?t=4g}Wxp>9qNO=^}>Q<<;6k9g@E<=&-8UIx*GC z8mxc8X!dK~v_!3xZzu2fZ0Qp;@=VaV9MKSdX7=^thtg)%S2O#i&yp@<$aUvCe?#4{e6s*S{oSwcpD)L7VE6pp zRh9Gq9prg6XTE%2)XVJjr(Pm!S;W}#;=PLNEOaLx2}$|~8b5gQzW)EK+taU~J2h1! zjnk#4_CT%&w;-3w(*3_*{oG#v^VXMrhC-XIR!jVz*R^P>!0ZzvE;-W>&WS|p1bQYR`X_Z z&A!bTXCm!za1g9{hu$vBFmy%m)rkW zuzpka`|rCAw{35|=lgv(alY)gqUk4N)s_kb&8m~yP~3lV!LxYnFm8@aBTL|wmoQ8ZTwU5 z>umi0ce_L%)c>3Q|C*6w_)gAq?e$xNJ}EA8I%|02_o|Y0tN3Pgl&sr&&F9RlGnJVs zWl4s{;<4)|uC??sC=t8-V&z+pHB*^%+Q0d!r`WT1EOejy>weYoWxev#(;YT@C|JK? zP-=RwS)Tvkf!U7SH%q@6{#Tf$lu&xERY(2KI)NR3stuJHm}l2ppLcU*)4HjovUzEQ zbm*>{n-{jdt$B9*@@f73npTSLthdiIT77u-K>Wtp2aA<&b8G%Lo1;B#--%63&!%b} z`2TPHe`dE|jPWYgKOgn(XXxq=WBl?t_s{hTsVUaib_PA4Q)KG&ylv^lzuy*d$sMVi z@^|wjhma3{pW0dH3RTN?TG-F^&zJkOc&l{wz0bGV&FWue{`)3!oaOa}{ST+e`|I1) zf4izazxPFcQ^w&B*>6r?YTXsT*{i2I;QJJOZJcB1zZfoMz z=cw-ibLJc$7cB_S4P7tIb*4H?HE(6R2aZKANKY^!?dyTfP3D{QX|cXI&JdQ9{`B zJABs-c1H{9$xX<8!+c=_+ZGhg;#D?TDvt!>$+9ARk+sq&~+Y}YfZD2 zl+?_!57ccFzjpRczSa5I%T@2$LzB`xCROvGJKA9V^ z*oQ^d`c&HnsmX7QOwM^&$R2Q05itIvn;?JsjZ^&Yl+W+4?^nEXX1DuO)`AX^e^;me z7xR+8ww7UG-GSn{=U)o4Tm3H&+W2s`w6u|}?6$KjRHuoZf0zGGd!1$bwRP)!?YM(C zusmvxXFK@r{k?GWj=cs-%G>R~rgGSBvryVqbMfVlXZ918-RZNl;^)rV-)Qo&=trUC z4*nm0a%`z-mYfwnH|F|<+%@@E_2lJ&st{@aThS(2e8DQ&f5j!LY;;u`Egtr}#j0k2 zxL!qjZ>V2TP%SXuzBoEZxpn`lPxs|&x<5;aGR)!Iahhf0t*<8<4<5TD^6X9R9NVu` z*T0Yy{@C`gfAQ>N=hn7+3r2Z8h|70>pCG3BXSMc!-6{K|iz+!&`gUd>;aK6d#9noW z!RzC%$>***My%2uS*|KGNrz5gDX&3pF!*s^rBV+;Rv2G6dKP;$0tkqHc8-CEy! zvC*8XUi*~2&cs$P`E`+uR@WMKOPt;H?@bzqcX;P3R;jy@tNC40vR6HrX>udG)OF9k zr@I@T9%A@(ti+wI?pxx*s-Sr)jVB)bcJ^JQo6OGeu6U!yF~#1%^?NlJTzz={)}QS; zjbE0FbN&gP^1tlica@z7*tYCq&ij7PMWrR;N7a)m?rEIQ<^{HF6?PRoAh)L2yg2+{ z*@jcIcUwN)*py(K&GIhbQCLQqTy3mv*q&V-2bXKi)p$6&+DSz~ye58U`C>i)6FWoS zT$MZ*8h-bZS47$FqYtjHW=XqQS2{6myMxs~^~5taAK0HNwk)5%j{CpYsr?gUJT}Z* zvV8hJ^Cy>tGR`y{pRK?Yw5i?r#geNz502_Cxmvn}DRTN=*X;1<2Oh`I&9qFrSEsSU zXt!nZf5*=*Z#b{ryx+grk=b@XOH$K&{qK2K`fQ(l+hBdSJh5*3J&q&KW=aRIn~-C}(dqmloUP#*zbt*4v#Ok{12PoG={OgmEY&lyK`1^=`NN>P49KTuZrCg zu=ujK^;mcA~ zZ~eIxl)qKY?X`{}OQ5FoZ+UO?pA*c4UYnY=%@(Llw7T*|h0}%Ye(<|6`PYuM?l%_B zc@uW?=&NT37u}u8_EJkrFw%L;x|+WHe-BMA{x6le+y4JGN0j@|_RFDO@?jGl?lQ(7 zX69KK^~Xt|gT>99OU;QzS1-1^ge3$$;{f6w`E?#}<~lI!QWGDV8+e8dvhvRENjz~$zd(|5x=m|7k5 z-m~e?5a4!kTV*=YQlL9F?Wp_ZjnQ7KO#iMn-8f-URa)rZor zAA3L^%hsb6|KIJGU9Vj9zjR;D0w$B|4c6Z0KG*H}ypq z%UE`a(Z+j~ihyWM{!V_^yJzlR+jv{7p-OvNWxIy4rm?1xrV;0vv|rJ=Cs#Z^bL-Fc zcMP|pWy0j%@%_^}RloZ~^`w{}rg^>*%sEWrA|>C$S&C1v840{jvR=lJBG$y%;CYIt zbAqSB^m4&zeIpdq-Pu6R&=IyQXz<86Vz9V{bviM|PtVptV>_85=CQh}gTK3S}b zZuP2en2~6rO;`4Ii^Yhb6 zOVZEl%1WzCnznb+qEqwAs@zKQjEdsK%Ho8|i_FTJ!m4Lg_HFEHTh>%JuPUi3DJaTq z)upAKt6C?_NuAc`G^1zVUbnDJueiLdra5s%U1d$v^17ClO?{^tF6h- z&xvc^EVpgzf{K#ly4&n_Z3^1AEo|;ox3)T~sxq^tIx9Xdw$;oVwlXj4nJa7_bY#`ViY{xL8xu$OrHy0TwpmEqUpXt|gg%D}++&eO#)q+-t6 z8MQIN*CmhpGle~MUEnFo?G$vhA!FHr04q%mpDnYuU0(GdNZXTbQKnPurQB^!2Vycl ztX-X?d?caa(6$pyC%h+pT=wWtcf!W5;7f`;hfTVI8duf7-D$4KYTrHE{O{a3cZ&Vr zU9T>(zw`Smr<03Dh8|xzs{9M`ghzd*ZPUF4!HrFWoJ{NBA+IJz1sB4pB_BeaKIw$NZK_q`67`|iL7~vx_mwT{QdpWU**>5 zB{JX3?N%1+Qh&HNv^)G5`>~@(4b7@|R!mwvVfy_4GHl9x{ztCm-rlaR=J(B|#(3tD zC2M7tax-jTuV1{w?)3Y}YbtJgDROoiz`k2jr^I+xuK*dxAsNBZMD-6@IIP1>(|3P#Y(QX z4?pgR=?@9a%KGL0yUgOmzW%!35AzCFu}{~Y$Z;~5gY)vGO9fNRzdyeJ_nzalzYo9u zonQ0oN$Nh#XwOkc}BoIW&4J7DVIr3l@pvRE8F{JPFYvI`D_#2 zC-+yTh)2q<`ppgb{%21ubF(Z?iXZoXGT&m}{Q31lZtDANDxak6b1HoGV`5X2exEZJ zpS&H*>xQQ?cF*Rl>=$_=uI0bFt1BekZ+_V75Z6_YCS5+7eomx0%lrI_D@TuJeVr-v zH2mn%GEmQ-|Fb= z2hTmXJZ}M=KMC(TlBSMibB|5q3Q>BrkyrxB$)A38N9E2Y zv&(9?zIwmOy?yG#_wCl-H!M2yH`Os0); zE3Rh2=MT?){WxTUS(wkBH<$IC=*>CR4F!6$va&2rYG$-5EEfLR<&-U=?x*>oVN(M8xoiBB&(F4+ zUZD3dS}(k<)1b!SWz52Wd5#v}5A-Kwt=+b1mDlRE>+I6Keb4TcdL1p=!ZiQtwQHFs zx3ZRN_HNr0x7=Jp>;JU|)1(OI>9=p(==kn-d)oDg*I|+Q8Ck0sZ&`Xp=Vs(t);~;I z{cqB@_k4@iUfjNIi^S~LtG7s{Yt)9;MpqyIdG2)Vv3K6#GD}b1_*z*cbanFLfXOR;)3bK|&^>bFcH!ppVz0f_ z+iPphe^*D{s@@gVb1ZD{ze}P;BA2#rdpT=%Z^f+JRlk-$Ikx5PTd`Pg=|7^cXK75m zrBx&{=S<3l*lbf?o*7@5W4E)fG32$Ge*5lO->MzW>#u}ouaY)-qS5l|b+#5S8}pr) zU)Sbt|HyM^+i|-+7uPl)4@|91?R8t{sqDRQmRIjKHYR_w*zo#%{XHFd_XXbnz56T6 zVp-Jf3l<%`la>ms%F0>OygV~DH#RtWKkotld0bz=l}Vdy-8w6(*R5~Pf`GX(=O&w* zWJpPA&we=jzS=L|MGtS+M?Rl*?xbPGj#E#aCpmr+acXX!a=^Hb0xa4mEwuk7vKXe`3URna2kYwJ8K2 zap^lGnm_lDcvoUUqd_HejH;5&frP@M1?T>0h)lX?$bb2rN4j%qjQv`hd6vc3dc5{n z?JNH9U_XD?((*aW_`KeS-4Qkrzbm_K+M&D)FTVLrIaQoKFlPCki# zXD`7iq@%Lxar*@^zi;jQ9}gZfzr^Y&R;IDP$xYnSnX^q>r$6ak|2_G{&$(AWZjqXK z(1ud1_0jvV>%Bjb`shL`IpgGeqzOaDb~$B!Lzb61z^QH$Vy z#QW{hji{i*2_?6Wyom6bqB`@ukJyA|lPph8n=xa_l3Y(^emB|cSCaeXj;pxZrnalS z=e;}Iudivct*>X@ry0zN#Yr7sBenmZoX=n;U@xVjQaI1YrFVm~b1+NOZqX+iDi7>^ zAAWXrzL{foU&u5vF#7akP1Vw*DXJ%uDi1wdZjkxxj8Bn>5KF7k`@7s;etvv+XWKm5 zVYTgpI46rw+ApP*8S6Y;`kY?mv7Vjtuh8nwOHoI$<5xdk-kY|$GI3X>1^4N5ir$L1 z?&@fs^;tag?3TUCe5)V7z0dvZQpOgal|Cv5RZ=ut+ESBNhFDFX=b9cRbL~o}*fYn8 z8rIP&LQ0C2T%N5?a%#ezM;Gm`aX00A$>@ZC>ak(H`f+pmB$tRzGc>TMqY0qN^-%P8(;@jtpu1rh4zU$qsZLw$Hf8f?| X;>ow=KD3>Ifq}u()z4*}Q$iB}89Ao% literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/AbsoluteB/weapon.png b/project/jni/application/lbreakout2/client/gfx/AbsoluteB/weapon.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0ce5ae0fda7dd0be7fbfcbbc24a0617a8fbe9b GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0y~yV6b3dU=ZS9W?*2j%zs(}qzz5DRt!{^VRzkdDtTLUxOVN@0|ySwojZ5o!iDqa&!0Ve_RN_xi;9XuLP8=U zBErJLY;0_nx8HSQU|?WO@^*J&=wOxgU|?Y2EbxddW?kxUuF8YY4hjq)3>gE_1#%gUH*ST zd_Yajs`UBsandi-R^Pp(Uvc?jXL{iiqlD%&O^MxV@)ew2 jf8rSCH~xIpzmGxldfiOBb6w613=9mOu6{1-oD!M literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Classic/ABOUT b/project/jni/application/lbreakout2/client/gfx/Classic/ABOUT new file mode 100644 index 000000000..eaa1754d7 --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/Classic/ABOUT @@ -0,0 +1,4 @@ +Classic v1.00 +Author: Michael Speck + +Original theme of LBreakout2 diff --git a/project/jni/application/lbreakout2/client/gfx/Classic/Makefile.am b/project/jni/application/lbreakout2/client/gfx/Classic/Makefile.am new file mode 100644 index 000000000..5a1a8d8fc --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/Classic/Makefile.am @@ -0,0 +1,12 @@ +EXTRA_DIST = ABOUT + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/Classic + @for file in $(EXTRA_DIST); do\ + $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/gfx/Classic/$$file;\ + done + +win32-install-script: + @for file in $(EXTRA_DIST); do \ + echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\\gfx\\Classic\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ + done diff --git a/project/jni/application/lbreakout2/client/gfx/Classic/Makefile.in b/project/jni/application/lbreakout2/client/gfx/Classic/Makefile.in new file mode 100644 index 000000000..a29f1e7f9 --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/Classic/Makefile.in @@ -0,0 +1,368 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = client/gfx/Classic +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longdouble.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +appname = @appname@ +arch_flag = @arch_flag@ +audio_flag = @audio_flag@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +doc_dir = @doc_dir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +hi_dir = @hi_dir@ +hi_inst_flag = @hi_inst_flag@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +inst_dir = @inst_dir@ +inst_flag = @inst_flag@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +locdir_flag = @locdir_flag@ +mandir = @mandir@ +mixer_flag = @mixer_flag@ +mkdir_p = @mkdir_p@ +netdebug_flag = @netdebug_flag@ +network_flag = @network_flag@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sdlnet_flag = @sdlnet_flag@ +sdlnet_lib_flag = @sdlnet_lib_flag@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +warp_flag = @warp_flag@ +win32_deps = @win32_deps@ +win32_inst_script = @win32_inst_script@ +EXTRA_DIST = ABOUT +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/gfx/Classic/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign client/gfx/Classic/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-data-local + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-info-am + + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/Classic + @for file in $(EXTRA_DIST); do\ + $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/gfx/Classic/$$file;\ + done + +win32-install-script: + @for file in $(EXTRA_DIST); do \ + echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\\gfx\\Classic\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ + done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/project/jni/application/lbreakout2/client/gfx/Makefile.am b/project/jni/application/lbreakout2/client/gfx/Makefile.am new file mode 100644 index 000000000..236358bd1 --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/Makefile.am @@ -0,0 +1,32 @@ +EXTRA_DIST = back0.png back1.png back2.png back3.png back4.png back5.png \ +ball.png bricks.png extras.png \ +f_small_red.png f_small_white.png f_small_yellow.png \ +f_white.png f_yellow.png \ +fr_left.png fr_right.png fr_top.png \ +fr_mp_left.png fr_mp_right.png \ +life.png menuback.png paddle.png shine.png shot.png weapon.png \ +sel_frame.png buttons.png explosions.png explosions_dark.png \ +f_tiny_black.png balloon.png balloon_peek.png \ +f_frame.png f_game.png \ +scroll_up.png scroll_down.png scroll_track.png \ +fr_hori.png fr_vert.png fr_luc.png \ +fr_llc.png fr_ruc.png fr_rlc.png confirm_buttons.png \ +win_icon.png cr_back.png warp.png nukeback.png \ +loading.png ammo.png + +SUBDIRS = AbsoluteB Oz Moiree Classic + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx + @for file in $(EXTRA_DIST); do\ + $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/gfx/$$file;\ + done + +win32-install-script: + @for file in $(EXTRA_DIST); do \ + echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\\gfx\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ + done + @list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir \ + && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); \ + done diff --git a/project/jni/application/lbreakout2/client/gfx/Makefile.in b/project/jni/application/lbreakout2/client/gfx/Makefile.in new file mode 100644 index 000000000..20d8d44ec --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/Makefile.in @@ -0,0 +1,545 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = client/gfx +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longdouble.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +appname = @appname@ +arch_flag = @arch_flag@ +audio_flag = @audio_flag@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +doc_dir = @doc_dir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +hi_dir = @hi_dir@ +hi_inst_flag = @hi_inst_flag@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +inst_dir = @inst_dir@ +inst_flag = @inst_flag@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +locdir_flag = @locdir_flag@ +mandir = @mandir@ +mixer_flag = @mixer_flag@ +mkdir_p = @mkdir_p@ +netdebug_flag = @netdebug_flag@ +network_flag = @network_flag@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sdlnet_flag = @sdlnet_flag@ +sdlnet_lib_flag = @sdlnet_lib_flag@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +warp_flag = @warp_flag@ +win32_deps = @win32_deps@ +win32_inst_script = @win32_inst_script@ +EXTRA_DIST = back0.png back1.png back2.png back3.png back4.png back5.png \ +ball.png bricks.png extras.png \ +f_small_red.png f_small_white.png f_small_yellow.png \ +f_white.png f_yellow.png \ +fr_left.png fr_right.png fr_top.png \ +fr_mp_left.png fr_mp_right.png \ +life.png menuback.png paddle.png shine.png shot.png weapon.png \ +sel_frame.png buttons.png explosions.png explosions_dark.png \ +f_tiny_black.png balloon.png balloon_peek.png \ +f_frame.png f_game.png \ +scroll_up.png scroll_down.png scroll_track.png \ +fr_hori.png fr_vert.png fr_luc.png \ +fr_llc.png fr_ruc.png fr_rlc.png confirm_buttons.png \ +win_icon.png cr_back.png warp.png nukeback.png \ +loading.png ammo.png + +SUBDIRS = AbsoluteB Oz Moiree Classic +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/gfx/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign client/gfx/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-data-local + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-recursive ctags ctags-recursive \ + distclean distclean-generic distclean-recursive distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-exec install-exec-am install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-info-am + + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx + @for file in $(EXTRA_DIST); do\ + $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/gfx/$$file;\ + done + +win32-install-script: + @for file in $(EXTRA_DIST); do \ + echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\\gfx\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ + done + @list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir \ + && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); \ + done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/ABOUT b/project/jni/application/lbreakout2/client/gfx/Moiree/ABOUT new file mode 100644 index 000000000..6f90b016f --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/Moiree/ABOUT @@ -0,0 +1,6 @@ +Theme: moiree +Version: 1.0 +Author: Astrid +Email: astrid-peters@t-online.de +Description: If you like ascii quake, you will like this one too. + diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/Makefile.am b/project/jni/application/lbreakout2/client/gfx/Moiree/Makefile.am new file mode 100644 index 000000000..46e5366a3 --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/Moiree/Makefile.am @@ -0,0 +1,16 @@ +EXTRA_DIST = back0.png back1.png back2.png back3.png back4.png back5.png \ +bricks.png extras.png fr_left.png fr_right.png fr_top.png \ +fr_mp_left.png fr_mp_right.png \ +life.png paddle.png \ +ABOUT + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/Moiree + @for file in $(EXTRA_DIST); do\ + $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/gfx/Moiree/$$file;\ + done + +win32-install-script: + @for file in $(EXTRA_DIST); do \ + echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\\gfx\\Moiree\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ + done diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/Makefile.in b/project/jni/application/lbreakout2/client/gfx/Moiree/Makefile.in new file mode 100644 index 000000000..56e8d0c8c --- /dev/null +++ b/project/jni/application/lbreakout2/client/gfx/Moiree/Makefile.in @@ -0,0 +1,373 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = client/gfx/Moiree +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longdouble.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +appname = @appname@ +arch_flag = @arch_flag@ +audio_flag = @audio_flag@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +doc_dir = @doc_dir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +hi_dir = @hi_dir@ +hi_inst_flag = @hi_inst_flag@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +inst_dir = @inst_dir@ +inst_flag = @inst_flag@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +locdir_flag = @locdir_flag@ +mandir = @mandir@ +mixer_flag = @mixer_flag@ +mkdir_p = @mkdir_p@ +netdebug_flag = @netdebug_flag@ +network_flag = @network_flag@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sdlnet_flag = @sdlnet_flag@ +sdlnet_lib_flag = @sdlnet_lib_flag@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +warp_flag = @warp_flag@ +win32_deps = @win32_deps@ +win32_inst_script = @win32_inst_script@ +EXTRA_DIST = back0.png back1.png back2.png back3.png back4.png back5.png \ +bricks.png extras.png fr_left.png fr_right.png fr_top.png \ +fr_mp_left.png fr_mp_right.png \ +life.png paddle.png \ +ABOUT + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/gfx/Moiree/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign client/gfx/Moiree/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-data-local + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-info-am + + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/Moiree + @for file in $(EXTRA_DIST); do\ + $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/gfx/Moiree/$$file;\ + done + +win32-install-script: + @for file in $(EXTRA_DIST); do \ + echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\\gfx\\Moiree\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ + done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/back0.png b/project/jni/application/lbreakout2/client/gfx/Moiree/back0.png new file mode 100644 index 0000000000000000000000000000000000000000..e80d93b903144bc0150ac627127fad361f544d9b GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0y~yU`PRBCT5UGPwjCA1_sUmpAc6D28RFt8UFwOzqWSq zBnAcs#w2fd7lsa2Sr3qk0*}aI1_rKYAk5gkJK-b)0|R@Br>`sfB@S6WQMRj@dvzEX z7@|B~978JRyuGxM_ke;3^F?9R#RjQvo}D(TOa8B8o+NE9;(vhAd9&P-?eo-ZpI%s6 z#g|s#bJ$S!IFF37%x3>PQww?udJ4{bw==H`u<~GksUW+gxnu%g-OB_@9(Q= RF)%PNc)I$ztaD0e0s!8EMwb8p literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/back1.png b/project/jni/application/lbreakout2/client/gfx/Moiree/back1.png new file mode 100644 index 0000000000000000000000000000000000000000..a106601ded7035cc21c0b786d579b160e700ee59 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0y~yU`PRBCT5UGPwjCA1_qu0pAgso|Nk>EF#P||@c;k+ zYm+?W85kHCOM?7@862M7NCR<_yxmpf-s{Rlj9Nw1_t&L zPhVH|OB}L%B9>Jm3j-J!7z#aI978JRyq&a>_kaP<;U7yb7%qQuYTl)d1#`Dfu={Z6 zXtTo1H&v?aVN;(R2rWI$7;0N|AWbI0m~Vq5`;8vvnwf0-e3;{xHR@khShKBr!>w1| zTuN(}?OUR7saou%t@umZBpV6-W6d8EAk>3){_Z0+&3znGPctwuFnGH9xvXEF#P||@c;k+ zYm+?W85kHCOM?7@862M7NCR<_yxmpf-s{Rlj9Nw1_t&L zPhVH|OB}L%B4QVh&f#QWV9@k*aSW-L^Y)~nAcKMc^9J*ql2=bWJk`f)lzKwNHuA2% iY;up`F^SI~V}7#ka5p=Xw3vZ`fx*+&&t;ucLK6U$RycbA literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/back3.png b/project/jni/application/lbreakout2/client/gfx/Moiree/back3.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ed969fe678bed49b2fd1ff20f9272ab5186988 GIT binary patch literal 447 zcmeAS@N?(olHy`uVBq!ia0y~yU`PRB4kiW$hW`yr%nS?+Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWo`Nu=8k6G^1_lQ95>H=O_DdYHd?I{@RrpfD|BLs5#Ig%6uld(F(RcT*9hsq`H36*hAqTa8NQZuKgmaW*?`&Dc zWw)YRzf-QFCQ%n1!<`XU|s(pKLny5 y%;_&Fyu1pe#coAY_y=>SelW)!x3{GKvYx)UQ>4o`uZMwwfx*+&&t;ucLK6TTPrIuC literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/back4.png b/project/jni/application/lbreakout2/client/gfx/Moiree/back4.png new file mode 100644 index 0000000000000000000000000000000000000000..47c000bf6bd9cf8544d22870804ea0c34ab54e37 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0y~yU`PRB4kiW$hW`yr%nS?+Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWo`Nu=8k6G^1_lQ95>H=O_DdYHd?I>3kE={)U|_WHba4!+nDh3EVHb;m z0JG!o|NY;ViN9Us@IuOJb-)>i`Nij|-|sCychP=N{DF@%^%;Ktv%R@Dy#Ay8FX;on zS!HgoIbe1=ZR(!*0~^nBmdKI;Vst0DR`f Ae*gdg literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/back5.png b/project/jni/application/lbreakout2/client/gfx/Moiree/back5.png new file mode 100644 index 0000000000000000000000000000000000000000..9c1a336175b5f8c3f149dea89e0a9d981781490f GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0y~yU`PRB4kiW$hW`yr%nS?+Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WW9)mFBGDcQ=1_lQ95>H=O_DdYHd?GALHE$gm7#Qt5T^vIy=DfXP$i?i) z;~Z%HegEd*ocX<6jV%Ao7grhNr>CX8%S$Vp{x`Y4?ce)%^YWAT=jnN8%vV3&`s8e? zrfS56O*?fI&m7VT<`mnKqvy@B+2C|Y6RYm*(?W-I&KONia6J8NQ;PxjW}jiGbYI@& X*C%`*w`(vkFfe$!`njxgN@xNA31+9T literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/bricks.png b/project/jni/application/lbreakout2/client/gfx/Moiree/bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..26ece7892458330adc839fc848848b546f2e4c8b GIT binary patch literal 15408 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 literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/extras.png b/project/jni/application/lbreakout2/client/gfx/Moiree/extras.png new file mode 100644 index 0000000000000000000000000000000000000000..31978b9aad3a24a3d34717e397fb10c70d4b7c8a GIT binary patch literal 10823 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 literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/fr_left.png b/project/jni/application/lbreakout2/client/gfx/Moiree/fr_left.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea4e23591026dba7ebf3c866f785577111fd31c GIT binary patch literal 2623 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 literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/fr_mp_left.png b/project/jni/application/lbreakout2/client/gfx/Moiree/fr_mp_left.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f67b95c6ea4b356a5fc425128b1ecfbc3dc420 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0y~yV9;P-V0^&Az`(%pDYD=W0|Nt7lDE4H!~gdFGy54B z7&r?&B8wRqxOqXC@h$rS9R>yl_7YEDSN2OBvV6j7J7TSp7#J9Kc)B=-RLpsMc_Hs% z0}b%V(9YuaZ9&UK;&* zqrHF)|M71T$M@bm_W61L=_QgMoC1s$W;mX0NMJK%Zj!vh!;wZ+f&cfi( z0|NtRfk$L90|S>U2s2KUe6yH=fq}im)7O>#5{E3GjB${}AvXpFhCiMzjv*Cu-kvq& zYH;9TIq>=4|Hr&fxEv2UZP}H!jU$nH=HlIxLyFF2dxqA&c>g;4f6b&b8#NOQBzV}G g4-RSS|0V|36P1&nNON9dU|?YIboFyt=akR{0P8eyV*mgE literal 0 HcmV?d00001 diff --git a/project/jni/application/lbreakout2/client/gfx/Moiree/fr_top.png b/project/jni/application/lbreakout2/client/gfx/Moiree/fr_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0da84e2a309abd3591757b3a734e951f0d47bdaf GIT binary patch literal 6605 zcmeAS@N?(olHy`uVBq!ia0y~yU@~A}U=ZP8Vqjp9F`Qt?z`($k|H*Y zfq{Xuz$3Dlfq|PBgc;wmAJAc7U|=ut^mS#w#39QkAgZ%~V><(bWR$0iV@SoEx3RCo z?zn9ZE%%-!nP$LJbNJ+Q9rg7S!_S_6!up9}=b9rGlD8$AdD)(+)!LVB*}Qv|=}F7< zx%KblqnP+#t-F0M^y=EeA0Lm)-`eJv#YsLdbe!%-MsC4E^aJL-WhZ6-o1Nw?)-SY zyZrsVeYL-zot?cs|Gr(-mlsc-Jb8I}xjGn}pJ)5{@5hfHwd7}?P1_sy_~#4}`>@cd zDMus}GcTK5zkXfd^X29K;o;#s;^N}M{lj`SbH_DnEUB zd0E|mo=x4Kij5I(-oE|$I>l(^U5~sY5|y9-{r!Ev{{P?Y_v?OtK5rk-w>bCqv_xJaY-&^(d)6>)8>*MCmn->=s_wN1s z;Azdx%}0|qM(BL|{=M?@ciX+I-&gOjJ<}y^C6PYIZ~5k%IaYJSLRoiyS=AID7w5P9 z@?kJInq)ZFZ~5hyDMmB>mRIoA=gd-@#>R7;zgV?k)w0aGzhAGWXzge*CzdUtUgL-oEb7kE7k<`f+5}cuF|@{`*Zd zp=)+?bMvZI8r)BQeRz2I_4W1l_f&3<(R=^y-3Jq%j0ex2v0a}%d$xSt561I>21m}` zyC=7j{bPjr;eZ?_J0aeOzdFAC{{4GfZeqBN(ozv827z{g0{N6962JF_U;SQt|GVu6 zzRlZnci+rWo6H%JlAq7NiiPEY`!P|mlbr>j%&$dauP5eqZP@d0@AU7FkN5w#HnXy@ zNI0W$r`Srb(`z-`K9lUlFuyfU_eeXk4y4s$ubX=)%V#Pc2`RCuie}Db;*PIlCJWbOt z=V#ns7<9&T_StEtRi8FZe!cjE%nlP9UZ$XA!(;1S_pI7m_3^pM(k{*g;e}UbX+_0e zzt<-cwsuW$@dDVxqAuxHqsjW=8y^a`j_Ui|5(w-M)Q$+zT0#D% zAo;bg?C%weut*5*N|O>)FXJ?~U1X7bYGtEpfegCVz)esVINXj74e3mdv^G zeeW^ONB{r*tJ@i)bbIN3DUHAu(;Sz6MgIaTQ#ma*jp+*3^Utr0e5L(FXGL)$mqu&f z(selxW}I%=WAGts>#kk9e$C%>@!`XTlN<$29e!RB(q5tznh|o@*yKstX33B(F?x>o zxR$YLZkVLxP<_T|f-l#R9u<}MSp}WO&L-L}58S2CSbu=%FLv5l|$S{AIhWa#wi zj+@UCY3B&p*z2tVfA$<%?{!I8|5?#a7DdV6SznsGmFBRX+#zZw!l+p)^GZFUcw)Mk}i=`yi8j_%e>k$p~PlCOVBm5xqdfOckSEv?|aUc{rmkDJ}XMKOj zoAyhMS602;T2)%M4STM?Ha&EsA=6ORFfdo`l7)Iz)&y-uQSC_rOvb)