├── Map Editor ├── presentation │ └── map.otmi ├── Hardhat │ └── map.otmi ├── Pen.bmp ├── Block.dcu ├── Unit1.dcu ├── buckit.bmp ├── fill.bmp ├── icon.ico ├── Pipette.bmp ├── Welcome.jpg ├── bmp │ ├── -1-0.bmp │ ├── 0-0.bmp │ ├── 1-0.bmp │ ├── 2-0.bmp │ ├── 20-0.bmp │ ├── 3-0.bmp │ ├── 30-0.bmp │ ├── 30-1.bmp │ ├── 30-2.bmp │ ├── 30-3.bmp │ ├── 30-4.bmp │ ├── 30-5.bmp │ ├── 30-6.bmp │ ├── 30-7.bmp │ ├── 32-0.bmp │ ├── 4-0.bmp │ ├── 5-0.bmp │ ├── 50-0.bmp │ ├── 50-1.bmp │ ├── 50-2.bmp │ ├── 50-3.bmp │ ├── 6-0.bmp │ ├── 7-0.bmp │ ├── 70-0.bmp │ └── 8-0.bmp ├── jpg │ ├── gras.jpg │ ├── stone.jpg │ └── trashcan.jpg ├── mMapinfo.dcu ├── mWelcome.dcu ├── mWelcome.ddp ├── mCreateMap.dcu ├── mWelcome.~ddp ├── SelectionTool.bmp ├── mLeveleditor.dcu ├── mLeveleditor.ddp ├── mLeveleditor.pas ├── mLeveleditor.~ddp ├── mLeveleditor.~pas ├── pLeveleditor.exe ├── pLeveleditor.res ├── pLeveleditor.~dpr ├── pLeveleditor.dpr ├── pLeveleditor.cfg ├── mWelcome.pas ├── mWelcome.~pas ├── mMapinfo.~pas ├── mCreateMap.pas ├── mCreateMap.~pas ├── mMapinfo.pas ├── pLeveleditor.dof ├── Block.pas ├── Block.~pas ├── mMapinfo.dfm ├── mMapinfo.~dfm ├── mCreateMap.~dfm └── mCreateMap.dfm ├── .gitignore ├── UML.png ├── map └── map.wem ├── com └── BombingGames │ ├── MainMenu │ ├── click2.wav │ ├── Images │ │ ├── Exit.png │ │ ├── Logo.png │ │ ├── load.png │ │ ├── Barrel.png │ │ ├── Lettering.png │ │ ├── MainMenu.png │ │ ├── generate.png │ │ ├── LetteringPoT.png │ │ ├── Bombing Games Logo Big.png │ │ ├── MainMenu.txt │ │ └── MainMenu.tps │ ├── MenuItem.java │ ├── MainMenuScreen.java │ ├── View.java │ └── Controller.java │ ├── EngineCore │ ├── arial.png │ ├── Gameobjects │ │ ├── Animatable.java │ │ ├── SimpleEntity.java │ │ ├── IsSelfAware.java │ │ ├── Player.java │ │ ├── CharacterShadow.java │ │ ├── Sea.java │ │ ├── AnimatedEntity.java │ │ ├── AnimatedBlock.java │ │ ├── EntitySpawner.java │ │ ├── ExplosiveBarrel.java │ │ └── AbstractEntity.java │ ├── Renderobject.java │ ├── Map │ │ └── Cell.java │ ├── GameplayScreen.java │ ├── WorkingDirectory.java │ ├── LightEngine │ │ ├── PseudoGrey.java │ │ └── GlobalLightSource.java │ ├── MsgSystem.java │ └── Controller.java │ ├── Game │ ├── Sounds │ │ ├── wind.ogg │ │ ├── jump_man.wav │ │ ├── landing.wav │ │ ├── splash.ogg │ │ ├── explosion2.ogg │ │ ├── landing-backup1.wav │ │ ├── victorcenusa_running.ogg │ │ └── Sources.txt │ ├── Blockimages │ │ ├── Spritesheet.png │ │ ├── sprites │ │ │ ├── b34-0.png │ │ │ ├── b35-0.png │ │ │ ├── b70-0.png │ │ │ ├── b71-0.png │ │ │ ├── b71-1.png │ │ │ ├── e40-0.png │ │ │ ├── e40-1.png │ │ │ ├── e40-2.png │ │ │ ├── e40-3.png │ │ │ ├── e40-4.png │ │ │ ├── e40-5.png │ │ │ ├── e40-6.png │ │ │ ├── e40-7.png │ │ │ ├── e41-0.png │ │ │ ├── e41-1.png │ │ │ ├── e42-0.png │ │ │ ├── error.png │ │ │ ├── b0-0-0.png │ │ │ ├── b0-0-1.png │ │ │ ├── b0-0-2.png │ │ │ ├── b1-0-0.png │ │ │ ├── b1-0-1.png │ │ │ ├── b1-0-2.png │ │ │ ├── b2-0-0.png │ │ │ ├── b2-0-1.png │ │ │ ├── b2-0-2.png │ │ │ ├── b20-0-0.png │ │ │ ├── b20-0-1.png │ │ │ ├── b20-0-2.png │ │ │ ├── b3-0-0.png │ │ │ ├── b3-0-1.png │ │ │ ├── b3-0-2.png │ │ │ ├── b4-0-0.png │ │ │ ├── b4-0-1.png │ │ │ ├── b4-0-2.png │ │ │ ├── b44-0-0.png │ │ │ ├── b44-0-1.png │ │ │ ├── b44-0-2.png │ │ │ ├── b44-1-0.png │ │ │ ├── b44-1-1.png │ │ │ ├── b44-1-2.png │ │ │ ├── b5-0-0.png │ │ │ ├── b5-0-1.png │ │ │ ├── b5-0-2.png │ │ │ ├── b6-0-0.png │ │ │ ├── b6-0-1.png │ │ │ ├── b6-0-2.png │ │ │ ├── b7-0-0.png │ │ │ ├── b7-0-1.png │ │ │ ├── b7-0-2.png │ │ │ ├── b8-0-0.png │ │ │ ├── b8-0-1.png │ │ │ ├── b8-0-2.png │ │ │ ├── b9-0-0.png │ │ │ ├── b9-0-1.png │ │ │ └── b9-0-2.png │ │ ├── sprites prelit │ │ │ ├── b34-0.png │ │ │ ├── b35-0.png │ │ │ ├── b70-0.png │ │ │ ├── b71-0.png │ │ │ ├── e40-0.png │ │ │ ├── e40-1.png │ │ │ ├── e40-2.png │ │ │ ├── e40-3.png │ │ │ ├── e40-4.png │ │ │ ├── e40-5.png │ │ │ ├── e40-6.png │ │ │ ├── e40-7.png │ │ │ ├── e41-0.png │ │ │ ├── e41-1.png │ │ │ ├── error.png │ │ │ ├── b0-0-0.png │ │ │ ├── b0-1-0.png │ │ │ ├── b0-2-0.png │ │ │ ├── b1-0-0.png │ │ │ ├── b1-0-1.png │ │ │ ├── b1-0-2.png │ │ │ ├── b2-0-0.png │ │ │ ├── b2-0-1.png │ │ │ ├── b2-0-2.png │ │ │ ├── b20-0-0.png │ │ │ ├── b20-0-1.png │ │ │ ├── b20-0-2.png │ │ │ ├── b3-0-0.png │ │ │ ├── b3-0-1.png │ │ │ ├── b3-0-2.png │ │ │ ├── b4-0-0.png │ │ │ ├── b4-0-1.png │ │ │ ├── b4-0-2.png │ │ │ ├── b5-0-0.png │ │ │ ├── b5-0-1.png │ │ │ ├── b5-0-2.png │ │ │ ├── b6-0-0.png │ │ │ ├── b6-0-1.png │ │ │ ├── b6-0-2.png │ │ │ ├── b7-0-0.png │ │ │ ├── b7-0-1.png │ │ │ ├── b7-0-2.png │ │ │ ├── b8-0-0.png │ │ │ ├── b8-0-1.png │ │ │ ├── b8-0-2.png │ │ │ ├── b9-0-0.png │ │ │ ├── b9-0-1.png │ │ │ └── b9-0-2.png │ │ ├── authors.txt │ │ ├── Spritesheet.txt │ │ └── Spritesheet prelit.tps │ ├── CustomGameView.java │ ├── CustomGameController.java │ └── ExplosivesDemoController.java │ ├── WurfelEngineDesktopLauncher.java │ └── WurfelEngine.java ├── README.md └── licence.txt /Map Editor/presentation/map.otmi: -------------------------------------------------------------------------------- 1 | Presentation 2 | 0.9 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .project 3 | *.class 4 | *.DS_Store 5 | -------------------------------------------------------------------------------- /Map Editor/Hardhat/map.otmi: -------------------------------------------------------------------------------- 1 |  Hardhat 2 | 3 | 0.10 4 | 0,0 5 | -------------------------------------------------------------------------------- /UML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/UML.png -------------------------------------------------------------------------------- /map/map.wem: -------------------------------------------------------------------------------- 1 |  mapname 2 | 0.11 3 | 10 4 | 40 5 | 10 6 | 0,0 7 | -------------------------------------------------------------------------------- /Map Editor/Pen.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/Pen.bmp -------------------------------------------------------------------------------- /Map Editor/Block.dcu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/Block.dcu -------------------------------------------------------------------------------- /Map Editor/Unit1.dcu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/Unit1.dcu -------------------------------------------------------------------------------- /Map Editor/buckit.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/buckit.bmp -------------------------------------------------------------------------------- /Map Editor/fill.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/fill.bmp -------------------------------------------------------------------------------- /Map Editor/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/icon.ico -------------------------------------------------------------------------------- /Map Editor/Pipette.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/Pipette.bmp -------------------------------------------------------------------------------- /Map Editor/Welcome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/Welcome.jpg -------------------------------------------------------------------------------- /Map Editor/bmp/-1-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/-1-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/0-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/0-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/1-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/1-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/2-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/2-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/20-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/20-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/3-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/3-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/30-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/30-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/30-1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/30-1.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/30-2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/30-2.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/30-3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/30-3.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/30-4.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/30-4.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/30-5.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/30-5.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/30-6.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/30-6.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/30-7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/30-7.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/32-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/32-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/4-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/4-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/5-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/5-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/50-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/50-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/50-1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/50-1.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/50-2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/50-2.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/50-3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/50-3.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/6-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/6-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/7-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/7-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/70-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/70-0.bmp -------------------------------------------------------------------------------- /Map Editor/bmp/8-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/bmp/8-0.bmp -------------------------------------------------------------------------------- /Map Editor/jpg/gras.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/jpg/gras.jpg -------------------------------------------------------------------------------- /Map Editor/mMapinfo.dcu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mMapinfo.dcu -------------------------------------------------------------------------------- /Map Editor/mWelcome.dcu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mWelcome.dcu -------------------------------------------------------------------------------- /Map Editor/mWelcome.ddp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mWelcome.ddp -------------------------------------------------------------------------------- /Map Editor/jpg/stone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/jpg/stone.jpg -------------------------------------------------------------------------------- /Map Editor/mCreateMap.dcu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mCreateMap.dcu -------------------------------------------------------------------------------- /Map Editor/mWelcome.~ddp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mWelcome.~ddp -------------------------------------------------------------------------------- /Map Editor/SelectionTool.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/SelectionTool.bmp -------------------------------------------------------------------------------- /Map Editor/jpg/trashcan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/jpg/trashcan.jpg -------------------------------------------------------------------------------- /Map Editor/mLeveleditor.dcu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mLeveleditor.dcu -------------------------------------------------------------------------------- /Map Editor/mLeveleditor.ddp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mLeveleditor.ddp -------------------------------------------------------------------------------- /Map Editor/mLeveleditor.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mLeveleditor.pas -------------------------------------------------------------------------------- /Map Editor/mLeveleditor.~ddp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mLeveleditor.~ddp -------------------------------------------------------------------------------- /Map Editor/mLeveleditor.~pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/mLeveleditor.~pas -------------------------------------------------------------------------------- /Map Editor/pLeveleditor.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/pLeveleditor.exe -------------------------------------------------------------------------------- /Map Editor/pLeveleditor.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/Map Editor/pLeveleditor.res -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/click2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/click2.wav -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/arial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/EngineCore/arial.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Sounds/wind.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Sounds/wind.ogg -------------------------------------------------------------------------------- /com/BombingGames/Game/Sounds/jump_man.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Sounds/jump_man.wav -------------------------------------------------------------------------------- /com/BombingGames/Game/Sounds/landing.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Sounds/landing.wav -------------------------------------------------------------------------------- /com/BombingGames/Game/Sounds/splash.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Sounds/splash.ogg -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/Exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/Exit.png -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/Logo.png -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/load.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Sounds/explosion2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Sounds/explosion2.ogg -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/Barrel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/Barrel.png -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/Lettering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/Lettering.png -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/MainMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/MainMenu.png -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/generate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/generate.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Sounds/landing-backup1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Sounds/landing-backup1.wav -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/Spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/Spritesheet.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b34-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b34-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b35-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b35-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b70-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b70-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b71-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b71-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b71-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b71-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e40-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e40-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e40-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e40-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e40-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e40-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e40-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e40-3.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e40-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e40-4.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e40-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e40-5.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e40-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e40-6.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e40-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e40-7.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e41-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e41-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e41-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e41-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/e42-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/e42-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/error.png -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/LetteringPoT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/LetteringPoT.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b0-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b0-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b0-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b0-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b0-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b0-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b1-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b1-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b1-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b1-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b1-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b1-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b2-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b2-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b2-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b2-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b2-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b2-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b20-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b20-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b20-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b20-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b20-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b20-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b3-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b3-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b3-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b3-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b3-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b3-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b4-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b4-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b4-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b4-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b4-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b4-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b44-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b44-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b44-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b44-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b44-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b44-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b44-1-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b44-1-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b44-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b44-1-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b44-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b44-1-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b5-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b5-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b5-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b5-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b5-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b5-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b6-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b6-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b6-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b6-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b6-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b6-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b7-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b7-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b7-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b7-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b7-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b7-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b8-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b8-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b8-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b8-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b8-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b8-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b9-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b9-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b9-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b9-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites/b9-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites/b9-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Sounds/victorcenusa_running.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Sounds/victorcenusa_running.ogg -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b34-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b34-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b35-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b35-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b70-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b70-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b71-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b71-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e40-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e40-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e40-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e40-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e40-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e40-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e40-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e40-3.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e40-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e40-4.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e40-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e40-5.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e40-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e40-6.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e40-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e40-7.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e41-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e41-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/e41-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/e41-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/error.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b0-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b0-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b0-1-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b0-1-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b0-2-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b0-2-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b1-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b1-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b1-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b1-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b1-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b1-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b2-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b2-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b2-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b2-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b2-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b2-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b20-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b20-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b20-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b20-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b20-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b20-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b3-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b3-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b3-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b3-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b3-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b3-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b4-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b4-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b4-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b4-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b4-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b4-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b5-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b5-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b5-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b5-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b5-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b5-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b6-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b6-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b6-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b6-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b6-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b6-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b7-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b7-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b7-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b7-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b7-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b7-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b8-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b8-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b8-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b8-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b8-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b8-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b9-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b9-0-0.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b9-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b9-0-1.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/sprites prelit/b9-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/Game/Blockimages/sprites prelit/b9-0-2.png -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/Bombing Games Logo Big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odaymichael/Wurfel-Engine/HEAD/com/BombingGames/MainMenu/Images/Bombing Games Logo Big.png -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/authors.txt: -------------------------------------------------------------------------------- 1 | Author of sprites, if not differently noted, by Benedikt Vogler. 2 | 3 | The 3D-player-model used for the player sprites is by Pia Lenßen. 4 | 5 | the photorealistic barrel by Jan-Niklas Rösch -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/Animatable.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | /** 4 | *An object wich is animatable. 5 | * @author Benedikt 6 | */ 7 | public interface Animatable { 8 | 9 | /** 10 | * Starts the animation. 11 | */ 12 | void start(); 13 | /** 14 | * Stops the animation. 15 | */ 16 | void stop(); 17 | } 18 | -------------------------------------------------------------------------------- /com/BombingGames/Game/Sounds/Sources.txt: -------------------------------------------------------------------------------- 1 | Sources of the sounds: 2 | 3 | "victorcenusa_running.wav"->converted to .ogg 4 | http://www.freesound.org/people/victorcenusa/sounds/22862/ 5 | 6 | edited file "wind-loud.wav"->converted to .ogg 7 | http://soundbible.com/1810-Wind.html 8 | 9 | "explosion2.wav" by steveygos93->converted to .ogg 10 | http://freesound.org/people/steveygos93/sounds/80401/ 11 | 12 | "jump_man.wav" by Benedikt Vogler -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/SimpleEntity.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | /** 4 | *A simple basic entity. You can use it for simple images like an effect. 5 | * @author Benedikt Vogler 6 | */ 7 | public class SimpleEntity extends AbstractEntity { 8 | public SimpleEntity(int id) { 9 | super(id); 10 | } 11 | 12 | @Override 13 | public void update(float delta) { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /com/BombingGames/Game/CustomGameView.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.Game; 2 | 3 | import com.BombingGames.EngineCore.View; 4 | 5 | 6 | /** 7 | * 8 | * @author Benedikt 9 | */ 10 | public class CustomGameView extends View{ 11 | 12 | /** 13 | * 14 | */ 15 | public CustomGameView() { 16 | super(); 17 | } 18 | 19 | 20 | @Override 21 | public void render(){ 22 | super.render(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Map Editor/pLeveleditor.~dpr: -------------------------------------------------------------------------------- 1 | program pLeveleditor; 2 | 3 | uses 4 | Forms, 5 | mLeveleditor in 'mLeveleditor.pas' {Mapeditor}, 6 | Block in 'Block.pas', 7 | mWelcome in 'mWelcome.pas' {Welcome}, 8 | mMapinfo in 'mMapinfo.pas' {Mapinfo}; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.Title := 'Out There Mapeditor'; 15 | Application.ShowHint := True; 16 | Application.HintPause := 0; 17 | Application.CreateForm(TWelcome, Welcome); 18 | Application.Run; 19 | end. 20 | -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/MainMenu.txt: -------------------------------------------------------------------------------- 1 | MainMenu.png 2 | format: RGBA8888 3 | filter: Linear,Linear 4 | repeat: none 5 | Barrel 6 | rotate: false 7 | xy: 2, 2 8 | size: 458, 42 9 | orig: 458, 42 10 | offset: 0, 0 11 | index: -1 12 | generate 13 | rotate: false 14 | xy: 144, 46 15 | size: 314, 42 16 | orig: 314, 42 17 | offset: 0, 0 18 | index: -1 19 | Exit 20 | rotate: false 21 | xy: 2, 46 22 | size: 140, 42 23 | orig: 140, 42 24 | offset: 0, 0 25 | index: -1 26 | load 27 | rotate: false 28 | xy: 2, 90 29 | size: 158, 42 30 | orig: 158, 42 31 | offset: 0, 0 32 | index: -1 33 | -------------------------------------------------------------------------------- /Map Editor/pLeveleditor.dpr: -------------------------------------------------------------------------------- 1 | program pLeveleditor; 2 | 3 | uses 4 | Forms, 5 | mLeveleditor in 'mLeveleditor.pas' {Mapeditor}, 6 | Block in 'Block.pas', 7 | mWelcome in 'mWelcome.pas' {Welcome}, 8 | mMapinfo in 'mMapinfo.pas' {Mapinfo}, 9 | mCreateMap in 'mCreateMap.pas' {CreateMap}; 10 | 11 | {$R *.res} 12 | 13 | begin 14 | Application.Initialize; 15 | Application.Title := 'Out There Mapeditor'; 16 | Application.ShowHint := True; 17 | Application.HintPause := 0; 18 | Application.CreateForm(TWelcome, Welcome); 19 | Application.CreateForm(TCreateMap, CreateMap); 20 | Application.Run; 21 | end. 22 | -------------------------------------------------------------------------------- /Map Editor/pLeveleditor.cfg: -------------------------------------------------------------------------------- 1 | -$A8 2 | -$B- 3 | -$C+ 4 | -$D+ 5 | -$E- 6 | -$F- 7 | -$G+ 8 | -$H+ 9 | -$I+ 10 | -$J- 11 | -$K- 12 | -$L+ 13 | -$M- 14 | -$N+ 15 | -$O+ 16 | -$P+ 17 | -$Q- 18 | -$R- 19 | -$S- 20 | -$T- 21 | -$U- 22 | -$V+ 23 | -$W- 24 | -$X+ 25 | -$YD 26 | -$Z1 27 | -cg 28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 29 | -H+ 30 | -W+ 31 | -M 32 | -$M16384,1048576 33 | -K$00400000 34 | -LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" 35 | -LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" 36 | -w-UNSAFE_TYPE 37 | -w-UNSAFE_CODE 38 | -w-UNSAFE_CAST 39 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/IsSelfAware.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | import com.BombingGames.EngineCore.Map.Coordinate; 4 | 5 | /** 6 | *An object that knows his own position IsSelfAware. 7 | * @author Benedikt 8 | */ 9 | public interface IsSelfAware{ 10 | /** 11 | * Return the coordinates of the SelfAware object. 12 | * @return the coordinates where the object is located 13 | */ 14 | public Coordinate getCoords(); 15 | 16 | /** 17 | * Set the coordinates without safety check. 18 | * @param coords the coordiantes you want to set 19 | */ 20 | public void setCoords(Coordinate coords); 21 | } -------------------------------------------------------------------------------- /com/BombingGames/WurfelEngineDesktopLauncher.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames; 2 | 3 | /** 4 | * The Launcher should contain a line where it creates the wurfelengine. You can show a box where you can set the resolution for example. 5 | * @author Benedikt Vogler 6 | */ 7 | public class WurfelEngineDesktopLauncher{ 8 | /** 9 | * Main method wich starts the game. For a detailed description of the arguments see WurfelEngine class. 10 | * @param args custom display resolution: [0] width, [1] height, [2] fullscreen 11 | * @see WurfelEngine 12 | */ 13 | public static void main(String[] args) { 14 | WurfelEngine.construct("Wurfelengine V" + WurfelEngine.VERSION, args); 15 | } 16 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Wurfelengine V1.1 2 | ============ 3 | 4 | Wurfelengine is a 2.5D isometric Java game engine build with the support of libGDX. 5 | The name comes from the german word for cube (Würfel). 6 | 7 | Version 1.1. tries to introduce many new features and bugfixes. 8 | 9 | ![Wurfelengine logo](http://wurfelengine.net/images/logo_medium.png) 10 | 11 | 12 | ### The Goal 13 | 14 | 1. Provide a "normal" open source game engine because open source games are always geek games (often in ASCII) 15 | 2. An easy engine for strategy or adventure games 16 | 3. Minecraft is hip, so are blocks. 17 | 18 | ### Features 19 | 20 | * Free: No licensing costs 21 | * Open Source: 22 | * Well documented 23 | * Clean code: no geeky code with strange indent and names 24 | * Cross-platform (Windows, Mac, Linux, Android (in work)) 25 | * Map Streaming: make maps as big as you want like in Minecraft or Skyrim 26 | * Three Dimensions: make maps with high buildings or deep dungeons 27 | * Map editor: free & included 28 | * Fast: Wurfelengine renders only what is visible 29 | * Easy: look at our examples (at wurfelengine.net) how easy it is to build a small game 30 | * Small: The engine is currently under 5 MB file size 31 | 32 | Visit the official website: 33 | http://www.wurfelengine.net 34 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Renderobject.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore; 2 | 3 | import com.BombingGames.EngineCore.Gameobjects.AbstractGameObject; 4 | import com.BombingGames.EngineCore.Map.Coordinate; 5 | 6 | /** 7 | *Saves the information for the rendering. This class is only used in the rendering process. 8 | * @author Benedikt 9 | */ 10 | public class Renderobject { 11 | private final Coordinate coords; 12 | private final int depth; 13 | private final AbstractGameObject content; 14 | 15 | /** 16 | * Create an Renderobject with a regular Block in the map 17 | * @param object 18 | * @param coords The coordinates where the object should be rendered 19 | */ 20 | protected Renderobject(AbstractGameObject object, Coordinate coords) { 21 | this.coords = coords; 22 | this.depth = object.getDepth(coords); 23 | content = object; 24 | } 25 | 26 | 27 | /** 28 | * 29 | * @return 30 | */ 31 | public int getDepth() { 32 | return depth; 33 | } 34 | 35 | /** 36 | * 37 | * @return 38 | */ 39 | public Coordinate getCoords() { 40 | return coords; 41 | } 42 | 43 | /** 44 | * 45 | * @return 46 | */ 47 | public AbstractGameObject getObject() { 48 | return content; 49 | } 50 | 51 | 52 | } -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/Player.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | import com.BombingGames.EngineCore.Map.Coordinate; 4 | import com.badlogic.gdx.Gdx; 5 | 6 | 7 | /** 8 | *The Player is a character who can walk. 9 | * @author Benedikt 10 | */ 11 | public class Player extends AbstractCharacter{ 12 | /** 13 | * Creates a player. The parameters are for the lower half of the player. The constructor automatically creates a block on top of it. 14 | * @param id 15 | * @param coord 16 | * @see com.BombingGames.Game.Gameobjects.Block#getInstance(int) 17 | */ 18 | public Player(int id, Coordinate coord) { 19 | super(id, 1, coord); 20 | setFallingSound(Gdx.audio.newSound(Gdx.files.internal("com/BombingGames/Game/Sounds/wind.ogg"))); 21 | setRunningSound(Gdx.audio.newSound(Gdx.files.internal("com/BombingGames/Game/Sounds/victorcenusa_running.ogg"))); 22 | setJumpingSound(Gdx.audio.newSound(Gdx.files.internal("com/BombingGames/Game/Sounds/jump_man.wav"))); 23 | setLandingSound(Gdx.audio.newSound(Gdx.files.internal("com/BombingGames/Game/Sounds/landing.wav"))); 24 | 25 | setTransparent(true); 26 | setObstacle(true); 27 | setDimensionZ(2); 28 | } 29 | 30 | /** 31 | * Jumps the player 32 | */ 33 | @Override 34 | public void jump() { 35 | super.jump(5); 36 | } 37 | } -------------------------------------------------------------------------------- /licence.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013, Benedikt Vogler 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | - Neither the name of Bombing Games nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 9 | 10 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/CharacterShadow.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | import com.BombingGames.EngineCore.LightEngine.PseudoGrey; 4 | import com.BombingGames.EngineCore.Map.Coordinate; 5 | import com.BombingGames.EngineCore.View; 6 | import com.BombingGames.EngineCore.WECamera; 7 | import com.badlogic.gdx.graphics.Color; 8 | 9 | /** 10 | * 11 | * @author Benedikt Vogler 12 | */ 13 | class CharacterShadow extends AbstractEntity { 14 | private AbstractCharacter character; 15 | 16 | protected CharacterShadow(int id) { 17 | super(id); 18 | } 19 | 20 | @Override 21 | public void update(float delta) { 22 | } 23 | 24 | public void update(float delta, AbstractCharacter character){ 25 | this.character = character; 26 | Coordinate tmpCoords = character.getCoords().cpy(); 27 | tmpCoords.setZ(tmpCoords.getZ()); 28 | while (tmpCoords.getZ() > 0 && tmpCoords.addVectorCpy(0, 0, -1).getBlock().isTransparent()) 29 | tmpCoords.addVector(0, 0, -1); 30 | this.setCoords(tmpCoords); 31 | this.setPositionX(character.getPositionX()); 32 | this.setPositionY(character.getPositionY()); 33 | } 34 | 35 | @Override 36 | public void render(View view, WECamera camera, Coordinate coords) { 37 | Color color = PseudoGrey.toColor( 38 | (character.getCoords().getHeight() - getCoords().getZ()*Block.GAMEDIMENSION)/Block.GAMEDIMENSION 39 | ); 40 | super.render(view, camera, coords,color); 41 | } 42 | 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/MenuItem.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.MainMenu; 2 | 3 | import com.badlogic.gdx.Gdx; 4 | import com.badlogic.gdx.Input.Buttons; 5 | import com.badlogic.gdx.graphics.Camera; 6 | import com.badlogic.gdx.graphics.g2d.Sprite; 7 | import com.badlogic.gdx.graphics.g2d.SpriteBatch; 8 | import com.badlogic.gdx.graphics.g2d.TextureRegion; 9 | 10 | 11 | /** 12 | *A menu item is an object wich can be placed on a menu. 13 | * @author Benedikt 14 | */ 15 | public class MenuItem extends Sprite { 16 | /** 17 | * Create a new menu Item and say which texture it should have. 18 | * @param index 19 | * @param texture 20 | */ 21 | public MenuItem(int index, TextureRegion texture) { 22 | super(texture); 23 | this.setX((Gdx.graphics.getWidth()-getWidth())/2); 24 | this.setY(Gdx.graphics.getHeight()/2-120+index*80); 25 | } 26 | 27 | 28 | /** 29 | * 30 | * @param spriteBatch 31 | * @param camera The camera rendering the MenuItem 32 | */ 33 | public void render(SpriteBatch spriteBatch, Camera camera) { 34 | super.draw(spriteBatch); 35 | } 36 | 37 | 38 | /** 39 | * Check if ithe mouse clicked the menuItem. 40 | * @return 41 | */ 42 | public boolean isClicked() { 43 | int mouseX = Gdx.input.getX(); 44 | int mouseY = Gdx.input.getY(); 45 | 46 | return ( 47 | Gdx.input.isButtonPressed(Buttons.LEFT) && 48 | (mouseX >= getX() && mouseX <= getX() + getWidth()) && 49 | (mouseY >= getY() && mouseY <= getY() + getHeight()) 50 | ); 51 | } 52 | } -------------------------------------------------------------------------------- /Map Editor/mWelcome.pas: -------------------------------------------------------------------------------- 1 | unit mWelcome; 2 | 3 | interface 4 | 5 | 6 | uses 7 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 8 | Dialogs, mLeveleditor, StdCtrls, ExtCtrls, jpeg, XPMan; 9 | 10 | const version = '0.11'; 11 | type 12 | TWelcome = class(TForm) 13 | btOeffnen: TButton; 14 | btNeu: TButton; 15 | laTitle: TLabel; 16 | laVersion: TLabel; 17 | shBackgroundColor: TShape; 18 | laBombingGames: TLabel; 19 | Image1: TImage; 20 | XPManifest1: TXPManifest; 21 | function getVersion:String; 22 | procedure btNeuClick(Sender: TObject); 23 | procedure FormCreate(Sender: TObject); 24 | procedure btOeffnenClick(Sender: TObject); 25 | procedure FormActivate(Sender: TObject); 26 | procedure FormClick(Sender: TObject); 27 | private 28 | public 29 | end; 30 | 31 | var 32 | Welcome: TWelcome; 33 | 34 | implementation 35 | 36 | uses mCreateMap; 37 | 38 | {$R *.dfm} 39 | 40 | procedure TWelcome.btNeuClick(Sender: TObject); 41 | begin 42 | AlphaBlend := True; 43 | CreateMap := TCreateMap.Create(Self); 44 | CreateMap.Show; 45 | end; 46 | 47 | procedure TWelcome.btOeffnenClick(Sender: TObject); 48 | begin 49 | AlphaBlend := True; 50 | Mapeditor := TMapeditor.Create(Self,'',''); 51 | Mapeditor.Show; 52 | 53 | end; 54 | 55 | procedure TWelcome.FormCreate(Sender: TObject); 56 | begin 57 | laVersion.Caption := 'Version: ' + version; 58 | end; 59 | 60 | function TWelcome.getVersion():String; 61 | begin 62 | Result := Version; 63 | end; 64 | 65 | 66 | procedure TWelcome.FormActivate(Sender: TObject); 67 | begin 68 | AlphaBlend := False; 69 | end; 70 | 71 | procedure TWelcome.FormClick(Sender: TObject); 72 | begin 73 | AlphaBlend := False; 74 | end; 75 | 76 | end. 77 | -------------------------------------------------------------------------------- /Map Editor/mWelcome.~pas: -------------------------------------------------------------------------------- 1 | unit mWelcome; 2 | 3 | interface 4 | 5 | 6 | uses 7 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 8 | Dialogs, mLeveleditor, StdCtrls, ExtCtrls, jpeg, XPMan; 9 | 10 | const version = '0.11'; 11 | type 12 | TWelcome = class(TForm) 13 | btOeffnen: TButton; 14 | btNeu: TButton; 15 | laTitle: TLabel; 16 | laVersion: TLabel; 17 | shBackgroundColor: TShape; 18 | laBombingGames: TLabel; 19 | Image1: TImage; 20 | XPManifest1: TXPManifest; 21 | function getVersion:String; 22 | procedure btNeuClick(Sender: TObject); 23 | procedure FormCreate(Sender: TObject); 24 | procedure btOeffnenClick(Sender: TObject); 25 | procedure FormActivate(Sender: TObject); 26 | procedure FormClick(Sender: TObject); 27 | private 28 | public 29 | end; 30 | 31 | var 32 | Welcome: TWelcome; 33 | 34 | implementation 35 | 36 | uses mCreateMap; 37 | 38 | {$R *.dfm} 39 | 40 | procedure TWelcome.btNeuClick(Sender: TObject); 41 | begin 42 | AlphaBlend := True; 43 | CreateMap := TCreateMap.Create(Self); 44 | CreateMap.ShowModal; 45 | end; 46 | 47 | procedure TWelcome.btOeffnenClick(Sender: TObject); 48 | begin 49 | AlphaBlend := True; 50 | Mapeditor := TMapeditor.Create(Self,'',''); 51 | Mapeditor.Show; 52 | 53 | end; 54 | 55 | procedure TWelcome.FormCreate(Sender: TObject); 56 | begin 57 | laVersion.Caption := 'Version: ' + version; 58 | end; 59 | 60 | function TWelcome.getVersion():String; 61 | begin 62 | Result := Version; 63 | end; 64 | 65 | 66 | procedure TWelcome.FormActivate(Sender: TObject); 67 | begin 68 | AlphaBlend := False; 69 | end; 70 | 71 | procedure TWelcome.FormClick(Sender: TObject); 72 | begin 73 | AlphaBlend := False; 74 | end; 75 | 76 | end. 77 | -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/MainMenuScreen.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.MainMenu; 2 | 3 | import com.badlogic.gdx.Screen; 4 | 5 | /** 6 | * The game state of the Main Menu. 7 | * @author Benedikt 8 | */ 9 | public class MainMenuScreen implements Screen{ 10 | private static boolean loadMap = false; 11 | 12 | private static View View; 13 | private static Controller Controller; 14 | 15 | /** 16 | * Creates the main Menu 17 | */ 18 | public MainMenuScreen() { 19 | Controller = new Controller(); 20 | View = new View(); 21 | } 22 | 23 | 24 | @Override 25 | public void render(float delta) { 26 | Controller.update((int) (delta*1000)); 27 | View.render(Controller); 28 | View.update(delta*1000); 29 | } 30 | 31 | @Override 32 | public void resize(int width, int height) { 33 | } 34 | 35 | @Override 36 | public void show() { 37 | } 38 | 39 | @Override 40 | public void hide() { 41 | } 42 | 43 | @Override 44 | public void pause() { 45 | } 46 | 47 | @Override 48 | public void resume() { 49 | } 50 | 51 | @Override 52 | public void dispose() { 53 | } 54 | 55 | /** 56 | * 57 | * @return 58 | */ 59 | public static com.BombingGames.MainMenu.Controller getController() { 60 | return Controller; 61 | } 62 | 63 | /** 64 | * 65 | * @return 66 | */ 67 | public static com.BombingGames.MainMenu.View getView() { 68 | return View; 69 | } 70 | 71 | /** 72 | * 73 | * @return 74 | */ 75 | public static boolean shouldLoadMap() { 76 | return loadMap; 77 | } 78 | 79 | /** 80 | * 81 | * @param loadmap 82 | */ 83 | public static void setLoadMap(boolean loadmap) { 84 | MainMenuScreen.loadMap = loadmap; 85 | } 86 | } -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/Sea.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | import com.BombingGames.EngineCore.Map.Coordinate; 4 | import com.BombingGames.EngineCore.Map.Map; 5 | 6 | /** 7 | *A Sea Block which has a "waves" effect. 8 | * @author Benedikt Vogler 9 | */ 10 | public class Sea extends Block implements IsSelfAware{ 11 | public static final int WAVE_AMPLITUDE = AbstractGameObject.SCREEN_HEIGHT-10; 12 | private static final float wavespeed = 1/700f; //the smaller the slower 13 | private static float currentX = 0; 14 | private final int waveWidth = Map.getBlocksX()/7; 15 | 16 | private float startvalue; 17 | 18 | private Coordinate coords; 19 | 20 | /** 21 | * 22 | * @param id 23 | * @param coords 24 | */ 25 | public Sea(int id, Coordinate coords) { 26 | super(id); 27 | setTransparent(true); 28 | 29 | if (coords == null) throw new NullPointerException("No coordinates given to Sea-Block during creation."); 30 | 31 | this.coords = coords; 32 | startvalue = (float) (coords.getCellOffset()[2] + Math.random()*WAVE_AMPLITUDE - WAVE_AMPLITUDE); 33 | 34 | } 35 | 36 | @Override 37 | public Coordinate getCoords() { 38 | return coords; 39 | } 40 | 41 | @Override 42 | public void setCoords(Coordinate coords) { 43 | this.coords = coords; 44 | } 45 | 46 | @Override 47 | public void update(float delta) { 48 | coords.setCellOffsetZ( 49 | startvalue + 50 | (float) (Math.sin( 51 | (currentX-coords.getRelX()-coords.getRelY()) 52 | * Math.PI/waveWidth 53 | )*WAVE_AMPLITUDE 54 | ) 55 | ); 56 | } 57 | 58 | /** 59 | * 60 | * @param delta 61 | */ 62 | public static void staticUpdate(float delta){ 63 | currentX += delta*wavespeed; 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/AnimatedEntity.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | /** 4 | *An entity wich is animated. 5 | * @author Benedikt 6 | */ 7 | public class AnimatedEntity extends AbstractEntity implements Animatable { 8 | private final int[] animationsduration; 9 | private int counter = 0; 10 | private boolean running; 11 | private final boolean loop; 12 | 13 | /** 14 | * Create an entity with an animation with an array wich has the time of every animation step in ms in it. 15 | * @param id The id of the object 16 | * @param value the starting value 17 | * @param autostart True when it should automatically start. 18 | * @param loop Set to true when it should loop, when false it stops after one time. 19 | * @param animationsinformation the time in ms for each animation step 20 | */ 21 | protected AnimatedEntity(int id, int value, int[] animationsinformation, boolean autostart, boolean loop){ 22 | super(id); 23 | this.animationsduration = animationsinformation; 24 | this.running = autostart; 25 | this.loop = loop; 26 | } 27 | 28 | /** 29 | * updates the entity and the animation. 30 | * @param delta the time wich has passed since last update 31 | */ 32 | @Override 33 | public void update(float delta) { 34 | if (running) { 35 | counter += delta; 36 | if (counter >= animationsduration[getValue()]){ 37 | setValue(getValue()+1); 38 | counter=0; 39 | if (getValue() >= animationsduration.length)//if over animation array 40 | if (loop) 41 | setValue(0); 42 | else{//delete 43 | setHidden(true); 44 | setValue(getValue()-1); 45 | destroy(); 46 | } 47 | } 48 | } 49 | } 50 | 51 | @Override 52 | public void start() { 53 | running = true; 54 | } 55 | 56 | @Override 57 | public void stop() { 58 | running = false; 59 | } 60 | } -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/AnimatedBlock.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | /** 4 | *A block who has an animation. 5 | * @author Benedikt 6 | */ 7 | public class AnimatedBlock extends Block implements Animatable{ 8 | private final int[] animationsduration; 9 | private int counter = 0; 10 | private boolean running; 11 | private final boolean loop; 12 | 13 | /** 14 | * Create this Block with an array wich has the time of every animation step in ms in it. 15 | * @param id the id of the block. 16 | * @param animationsinformation an array wich has the duraion of every animationstep inside 17 | * @param autostart True when it should automatically start. 18 | * @param loop Set to true when it should loop, when false it stops after one time. 19 | */ 20 | protected AnimatedBlock(int id, int[] animationsinformation, boolean autostart, boolean loop){ 21 | super(id); 22 | this.animationsduration = animationsinformation; 23 | this.running = autostart; 24 | this.loop = loop; 25 | } 26 | 27 | /** 28 | * updates the block and the animation. 29 | * @param delta the time wich has passed since last update 30 | */ 31 | @Override 32 | public void update(float delta) { 33 | if (running) { 34 | counter += delta; 35 | if (counter >= animationsduration[getValue()]){ 36 | setValue(getValue()+1); 37 | counter=0; 38 | if (getValue() >= animationsduration.length)//if over animation array 39 | if (loop) 40 | setValue(0); 41 | else{ 42 | running = false; 43 | setValue(getValue()-1); 44 | } 45 | } 46 | } 47 | } 48 | 49 | /** 50 | * Starts the animation. 51 | */ 52 | @Override 53 | public void start() { 54 | running = true; 55 | } 56 | 57 | /** 58 | * Stops the animation. 59 | */ 60 | @Override 61 | public void stop() { 62 | running = false; 63 | } 64 | } -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Map/Cell.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Map; 2 | 3 | import com.BombingGames.EngineCore.Gameobjects.Block; 4 | 5 | /** 6 | * A cell is field in the map containing a block. It can have an offset. 7 | * @author Benedikt Vogler 8 | */ 9 | public class Cell { 10 | private Block block; 11 | private float[] cellOffset = new float[]{0, 0,0}; 12 | 13 | /** 14 | *Create a new cell containing air. 15 | */ 16 | public Cell() { 17 | block = Block.getInstance(0); 18 | } 19 | 20 | /** 21 | *Create a new block in this cell. 22 | * @param id 23 | */ 24 | public Cell(int id){ 25 | block = Block.getInstance(id); 26 | } 27 | 28 | /** 29 | *Create a new block in this cell. 30 | * @param id 31 | * @param value 32 | */ 33 | public Cell(int id, int value){ 34 | this.block = Block.getInstance(id, value); 35 | } 36 | 37 | /** 38 | *Create a new block in this cell. 39 | * @param id 40 | * @param value 41 | * @param coords 42 | */ 43 | public Cell(int id, int value, Coordinate coords){ 44 | this.block = Block.getInstance(id, value, coords); 45 | } 46 | 47 | /** 48 | * 49 | * @return 50 | */ 51 | public Block getBlock() { 52 | return block; 53 | } 54 | 55 | /** 56 | *Set the block inside this cell. The offset stays the same. 57 | * @param block 58 | */ 59 | public void setBlock(Block block) { 60 | this.block = block; 61 | } 62 | 63 | /** 64 | *The cell offset has it's center in the top left corner. 65 | * @return 66 | */ 67 | public float[] getCellOffset() { 68 | return cellOffset; 69 | } 70 | 71 | /** 72 | *The cell offset has it's center in the top left corner. 73 | * @param cellOffset 74 | */ 75 | public void setCellOffset(float[] cellOffset) { 76 | this.cellOffset = cellOffset; 77 | } 78 | 79 | /** 80 | * 81 | * @param field 82 | * @param offset 83 | */ 84 | public void setCellOffset(int field, float offset) { 85 | this.cellOffset[field] = offset; 86 | } 87 | 88 | } 89 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/EntitySpawner.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | import com.BombingGames.EngineCore.Controller; 4 | import com.BombingGames.EngineCore.GameplayScreen; 5 | import com.BombingGames.EngineCore.Map.Coordinate; 6 | import java.util.ArrayList; 7 | import java.util.Arrays; 8 | 9 | /** 10 | *The entitty spawner spawns an entity when a character steps on it. 11 | * @author Benedikt Vogler 12 | */ 13 | public class EntitySpawner extends Block implements IsSelfAware { 14 | private Coordinate coords;//this field is needed because of it is selfAware 15 | private boolean up = true; 16 | 17 | /** 18 | * 19 | * @param id 20 | * @param coords 21 | */ 22 | protected EntitySpawner(int id, Coordinate coords){ 23 | super(id); 24 | if (coords == null) throw new NullPointerException("No coordinates given to EntitySpawner during creation."); 25 | this.coords = coords; 26 | setObstacle(true); 27 | } 28 | 29 | 30 | @Override 31 | public void update(float delta) { 32 | int[] coordsOnTop = coords.addVectorCpy(0, 0, 1).getRel(); 33 | 34 | //get every character 35 | ArrayList entitylist; 36 | entitylist = Controller.getMap().getAllEntitysOfType(AbstractCharacter.class); 37 | 38 | //check every character if standing on top 39 | int i = 0; 40 | while (i < entitylist.size() && !Arrays.equals( entitylist.get(i).getCoords().getRel(), coordsOnTop)){ 41 | i++; 42 | } 43 | 44 | if (i < entitylist.size() && Arrays.equals(entitylist.get(i).getCoords().getRel(), coordsOnTop)) { 45 | if (up) trigger(); 46 | up = false; 47 | } else { 48 | up = true; 49 | } 50 | } 51 | 52 | @Override 53 | public Coordinate getCoords() { 54 | return coords; 55 | } 56 | 57 | @Override 58 | public void setCoords(Coordinate coords) { 59 | this.coords = coords; 60 | } 61 | 62 | private void trigger() { 63 | GameplayScreen.msgSystem().add("You are standing on: " + coords.getRelX() +"," + coords.getRelY() +","+ coords.getZ(), "System"); 64 | AbstractEntity.getInstance(41, 0, coords.addVectorCpy(0, 2, 1)).exist(); 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/ExplosiveBarrel.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | import com.BombingGames.EngineCore.Controller; 4 | import com.BombingGames.EngineCore.Map.Coordinate; 5 | import com.badlogic.gdx.Gdx; 6 | import com.badlogic.gdx.audio.Sound; 7 | 8 | /** 9 | *An example for a special block: barrel block which can explode 10 | * @author Benedikt 11 | */ 12 | public class ExplosiveBarrel extends Block implements IsSelfAware { 13 | /**Defines the radius of the explosion.*/ 14 | public static final int RADIUS = 2; 15 | private Coordinate coords; 16 | private static Sound explosionsound; 17 | 18 | /** 19 | * Create a explosive barrel. 20 | * @param id the id of the explosive barrel 21 | * @param coords The coordinates where this object get's placed. 22 | */ 23 | protected ExplosiveBarrel(int id, Coordinate coords){ 24 | super(id); 25 | if (coords == null) throw new NullPointerException("No coordinates given to ExplosiveBarrel during creation."); 26 | this.coords = coords; 27 | setObstacle(true); 28 | if (explosionsound == null) explosionsound = Gdx.audio.newSound(Gdx.files.internal("com/BombingGames/Game/Sounds/explosion2.ogg")); 29 | } 30 | 31 | /** 32 | * Explodes the barrel. 33 | */ 34 | public void explode(){ 35 | for (int x=-RADIUS; x= RADIUS*RADIUS){ 45 | AbstractEntity.getInstance(41, 0, 46 | coords.addVectorCpy(x, y, z) 47 | ).exist(); 48 | } 49 | } 50 | explosionsound.play(); 51 | Controller.requestRecalc(); 52 | } 53 | 54 | @Override 55 | public Coordinate getCoords() { 56 | return coords; 57 | } 58 | 59 | @Override 60 | public void setCoords(Coordinate coords) { 61 | this.coords = coords; 62 | } 63 | } -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/GameplayScreen.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore; 2 | 3 | import com.BombingGames.WurfelEngine; 4 | import com.badlogic.gdx.Gdx; 5 | import com.badlogic.gdx.Screen; 6 | 7 | /** 8 | * The GameplayScreen State. This is state where the magic happens. 9 | * @author Benedikt 10 | */ 11 | public class GameplayScreen implements Screen{ 12 | /** 13 | * Contains the Message System 14 | */ 15 | private static MsgSystem msgSystem; 16 | 17 | private View view = null; 18 | private Controller controller = null; 19 | 20 | /** 21 | * Create the gameplay state. 22 | * @param controller The controller of this screen. 23 | * @param view The view of this screen. 24 | */ 25 | public GameplayScreen(Controller controller, View view) { 26 | msgSystem = new MsgSystem(Gdx.graphics.getWidth()/2, 3*Gdx.graphics.getHeight()/4); 27 | 28 | this.controller = controller; 29 | this.controller.init(); 30 | this.view = view; 31 | this.view.init(controller); 32 | this.controller.setView(view); 33 | } 34 | 35 | 36 | /** 37 | * Returns the Message System. Use .add() to add messages to the msgSystem. 38 | * @return The msgSystem. 39 | */ 40 | public static MsgSystem msgSystem() { 41 | return msgSystem; 42 | } 43 | 44 | /** 45 | * 46 | * @return 47 | */ 48 | public View getView() { 49 | return view; 50 | } 51 | 52 | /** 53 | * 54 | * @return 55 | */ 56 | public Controller getController() { 57 | return controller; 58 | } 59 | 60 | 61 | 62 | @Override 63 | public void render(float delta) { 64 | controller.update(delta*1000); 65 | view.render(); 66 | } 67 | 68 | @Override 69 | public void resize(int width, int height) { 70 | Gdx.graphics.setTitle("Wurfelengine V" + WurfelEngine.VERSION + " " + Gdx.graphics.getWidth() + "x"+Gdx.graphics.getHeight()); 71 | } 72 | 73 | @Override 74 | public void show() { 75 | 76 | } 77 | 78 | @Override 79 | public void hide() { 80 | } 81 | 82 | @Override 83 | public void pause() { 84 | } 85 | 86 | @Override 87 | public void resume() { 88 | } 89 | 90 | @Override 91 | public void dispose() { 92 | } 93 | 94 | } -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/WorkingDirectory.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore; 2 | 3 | import java.io.File; 4 | 5 | /** 6 | * A class which helps getting OS specific information 7 | * @author Martin Brunokowsky 8 | */ 9 | public class WorkingDirectory { 10 | /** 11 | * 12 | * @param applicationName 13 | * @return 14 | */ 15 | public static File getWorkingDirectory(String applicationName) { 16 | String userHome = System.getProperty("user.home", "."); 17 | File workingDirectory; 18 | switch (getPlatform()) { 19 | case linux: 20 | case solaris: 21 | workingDirectory = new File(userHome, '.' + applicationName + '/'); 22 | break; 23 | case windows: 24 | String applicationData = System.getenv("APPDATA"); 25 | if (applicationData != null) 26 | workingDirectory = new File(applicationData, applicationName + '/'); 27 | else 28 | workingDirectory = new File(userHome, '.' + applicationName + '/'); 29 | break; 30 | case macos: 31 | workingDirectory = new File(userHome, "Library/Application Support/" + applicationName); 32 | break; 33 | default: 34 | workingDirectory = new File(userHome, applicationName + '/'); 35 | } 36 | if ((!workingDirectory.exists()) && (!workingDirectory.mkdirs())) 37 | throw new RuntimeException("The working directory could not be created: " + workingDirectory); 38 | return workingDirectory; 39 | } 40 | 41 | private static OS getPlatform() { 42 | String osName = System.getProperty("os.name").toLowerCase(); 43 | if (osName.contains("win")) 44 | return OS.windows; 45 | if (osName.contains("mac")) 46 | return OS.macos; 47 | if (osName.contains("solaris")) 48 | return OS.solaris; 49 | if (osName.contains("sunos")) 50 | return OS.solaris; 51 | if (osName.contains("linux")) 52 | return OS.linux; 53 | if (osName.contains("unix")) 54 | return OS.linux; 55 | return OS.unknown; 56 | } 57 | 58 | private static enum OS { 59 | linux, solaris, windows, macos, unknown; 60 | } 61 | } -------------------------------------------------------------------------------- /Map Editor/mMapinfo.~pas: -------------------------------------------------------------------------------- 1 | unit mMapinfo; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, StdCtrls; 8 | 9 | type 10 | TMapinfo = class(TForm) 11 | edMapname: TEdit; 12 | btSaveNew: TButton; 13 | laMapname: TLabel; 14 | edVersion: TEdit; 15 | laEditorversion: TLabel; 16 | edChunksizeX: TEdit; 17 | edChunksizeY: TEdit; 18 | laChunksize: TLabel; 19 | laChunksizeX: TLabel; 20 | laChunksizeY: TLabel; 21 | edChunksizeZ: TEdit; 22 | laChunksizeZ: TLabel; 23 | procedure btSaveNewClick(Sender: TObject); 24 | procedure FormClose(Sender: TObject; var Action: TCloseAction); 25 | procedure FormCreate(Sender: TObject); 26 | procedure SaveInfo(); 27 | private 28 | 29 | public 30 | 31 | end; 32 | 33 | var Mapinfo: TMapinfo; 34 | 35 | implementation 36 | 37 | uses mLeveleditor, mWelcome; 38 | 39 | {$R *.dfm} 40 | 41 | procedure TMapinfo.btSaveNewClick(Sender: TObject); 42 | var i:integer; 43 | begin 44 | if Mapeditor.SaveDialog.Execute then begin 45 | Mapeditor.mappath := Mapeditor.SaveDialog.FileName; 46 | for i:=Length(Mapeditor.mappath) downto 1 do 47 | if Mapeditor.mappath[i] = '\' then begin 48 | Mapeditor.mappath := Copy(Mapeditor.mappath,1,i); 49 | break; 50 | end; 51 | SaveInfo(); 52 | end 53 | else ShowMessage('Du hast abgebrochen. Das war ein fataler Fehler. Festplatte wird formatiert!'+ 54 | #13#10+'-Ende der schlechten Witze..'); 55 | end; 56 | 57 | procedure TMapinfo.SaveInfo(); 58 | var Stream: TFilestream; 59 | Writer: TWriter; 60 | begin 61 | Stream := TFilestream.Create(Mapeditor.mappath,fmCreate); 62 | Writer := TWriter.Create(Stream,500); 63 | Writer.WriteString(edMapname.Text+#13#10); 64 | Writer.WriteString(edVersion.Text+#13#10); 65 | Writer.WriteString('0,0'+#13#10); 66 | Writer.Free; 67 | Stream.Free; 68 | end; 69 | 70 | procedure TMapinfo.FormClose(Sender: TObject; var Action: TCloseAction); 71 | begin 72 | SaveInfo(); 73 | end; 74 | 75 | procedure TMapinfo.FormCreate(Sender: TObject); 76 | begin 77 | edMapname.Text := Mapeditor.mapname; 78 | edVersion.Text := Welcome.getVersion; 79 | edChunksizeX.Text := IntToStr(Mapeditor.ChunkSizeX); 80 | edChunksizeY.Text := IntToStr(Mapeditor.ChunkSizeY); 81 | edChunksizeZ.Text := IntToStr(Mapeditor.ChunkSizeZ); 82 | end; 83 | 84 | end. 85 | -------------------------------------------------------------------------------- /Map Editor/mCreateMap.pas: -------------------------------------------------------------------------------- 1 | unit mCreateMap; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, StdCtrls, ComCtrls, XPMan, FileCtrl, ExtCtrls, Buttons; 8 | 9 | type 10 | TCreateMap = class(TForm) 11 | btPath: TButton; 12 | leMapname: TLabeledEdit; 13 | lePath: TLabeledEdit; 14 | leChunksizeX: TLabeledEdit; 15 | leChunksizeY: TLabeledEdit; 16 | leChunksizeZ: TLabeledEdit; 17 | bbOK: TBitBtn; 18 | bbClose: TBitBtn; 19 | procedure btPathClick(Sender: TObject); 20 | procedure FormCreate(Sender: TObject); 21 | procedure leMapnameChange(Sender: TObject); 22 | procedure bbOKClick(Sender: TObject); 23 | private 24 | fAOwner: TComponent; 25 | public 26 | constructor create(AOwner: TComponent); 27 | end; 28 | 29 | var 30 | CreateMap: TCreateMap; 31 | 32 | implementation 33 | 34 | uses mLeveleditor; 35 | 36 | {$R *.dfm} 37 | 38 | constructor TCreateMap.create(AOwner: TComponent); 39 | begin 40 | inherited create(AOwner); 41 | fAOwner := AOwner; 42 | end; 43 | 44 | procedure TCreateMap.btPathClick(Sender: TObject); 45 | const 46 | SELDIRHELP = 1000; 47 | var 48 | dir: String; 49 | begin 50 | dir := 'C:'; 51 | if SelectDirectory( 52 | dir, 53 | [sdAllowCreate, 54 | sdPerformCreate, 55 | sdPrompt], 56 | SELDIRHELP 57 | ) then 58 | lePath.Text := dir; 59 | end; 60 | 61 | 62 | procedure TCreateMap.FormCreate(Sender: TObject); 63 | begin 64 | lePath.Text := ExtractFilePath(Application.Exename); 65 | end; 66 | 67 | procedure TCreateMap.leMapnameChange(Sender: TObject); 68 | begin 69 | leMapname.Text := StringReplace(leMapname.Text, ' ', '', [rfReplaceAll]); 70 | end; 71 | 72 | procedure TCreateMap.bbOKClick(Sender: TObject); 73 | begin 74 | //if string name is ok 75 | if (leMapname.Text<>'') and (lePath.Text<>'') then begin 76 | if not DirectoryExists(lePath.Text+'\') then 77 | CreateDir(lePath.Text); 78 | if leMapname.Text[length(leMapname.Text)-1]<>'\' then 79 | Mapeditor := TMapeditor.Create(fAOwner,lePath.Text+'\', leMapname.Text) 80 | else Mapeditor := TMapeditor.Create(fAOwner,lePath.Text, leMapname.Text); 81 | Mapeditor.Show; 82 | inherited destroy; 83 | end else begin 84 | ShowMessage('You are a f*****g idiot! You are too stupid for this simple formula. Check your fields again!'); 85 | end; 86 | end; 87 | 88 | end. 89 | -------------------------------------------------------------------------------- /Map Editor/mCreateMap.~pas: -------------------------------------------------------------------------------- 1 | unit mCreateMap; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, StdCtrls, ComCtrls, XPMan, FileCtrl, ExtCtrls, Buttons; 8 | 9 | type 10 | TCreateMap = class(TForm) 11 | btPath: TButton; 12 | leMapname: TLabeledEdit; 13 | lePath: TLabeledEdit; 14 | leChunksizeX: TLabeledEdit; 15 | leChunksizeY: TLabeledEdit; 16 | leChunksizeZ: TLabeledEdit; 17 | bbOK: TBitBtn; 18 | bbClose: TBitBtn; 19 | procedure btPathClick(Sender: TObject); 20 | procedure FormCreate(Sender: TObject); 21 | procedure leMapnameChange(Sender: TObject); 22 | procedure bbOKClick(Sender: TObject); 23 | private 24 | fAOwner: TComponent; 25 | public 26 | constructor create(AOwner: TComponent); 27 | end; 28 | 29 | var 30 | CreateMap: TCreateMap; 31 | 32 | implementation 33 | 34 | uses mLeveleditor; 35 | 36 | {$R *.dfm} 37 | 38 | constructor TCreateMap.create(AOwner: TComponent); 39 | begin 40 | inherited create(AOwner); 41 | fAOwner := AOwner; 42 | end; 43 | 44 | procedure TCreateMap.btPathClick(Sender: TObject); 45 | const 46 | SELDIRHELP = 1000; 47 | var 48 | dir: String; 49 | begin 50 | dir := 'C:'; 51 | if SelectDirectory( 52 | dir, 53 | [sdAllowCreate, 54 | sdPerformCreate, 55 | sdPrompt], 56 | SELDIRHELP 57 | ) then 58 | lePath.Text := dir; 59 | end; 60 | 61 | 62 | procedure TCreateMap.FormCreate(Sender: TObject); 63 | begin 64 | lePath.Text := ExtractFilePath(Application.Exename); 65 | end; 66 | 67 | procedure TCreateMap.leMapnameChange(Sender: TObject); 68 | begin 69 | leMapname.Text := StringReplace(leMapname.Text, ' ', '', [rfReplaceAll]); 70 | end; 71 | 72 | procedure TCreateMap.bbOKClick(Sender: TObject); 73 | begin 74 | //if string name is ok 75 | if (leMapname.Text<>'') and (lePath.Text<>'') then begin 76 | if not DirectoryExists(lePath.Text+'\') then 77 | CreateDir(lePath.Text); 78 | if leMapname.Text[length(leMapname.Text)-1]<>'\' then 79 | Mapeditor := TMapeditor.Create(fAOwner,lePath.Text+'\', leMapname.Text) 80 | else Mapeditor := TMapeditor.Create(fAOwner,lePath.Text, leMapname.Text); 81 | Mapeditor.Show; 82 | inherited destroy; 83 | end else begin 84 | ShowMessage('You are a f*****g idiot! You are too stupid for this simple formula. Check your fields again!'); 85 | end; 86 | end; 87 | 88 | end. 89 | -------------------------------------------------------------------------------- /Map Editor/mMapinfo.pas: -------------------------------------------------------------------------------- 1 | unit mMapinfo; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, StdCtrls; 8 | 9 | type 10 | TMapinfo = class(TForm) 11 | edMapname: TEdit; 12 | btSaveNew: TButton; 13 | laMapname: TLabel; 14 | edVersion: TEdit; 15 | laEditorversion: TLabel; 16 | edChunksizeX: TEdit; 17 | edChunksizeY: TEdit; 18 | laChunksize: TLabel; 19 | laChunksizeX: TLabel; 20 | laChunksizeY: TLabel; 21 | edChunksizeZ: TEdit; 22 | laChunksizeZ: TLabel; 23 | procedure btSaveNewClick(Sender: TObject); 24 | procedure FormClose(Sender: TObject; var Action: TCloseAction); 25 | procedure FormCreate(Sender: TObject); 26 | procedure SaveInfo(); 27 | private 28 | 29 | public 30 | 31 | end; 32 | 33 | var Mapinfo: TMapinfo; 34 | 35 | implementation 36 | 37 | uses mLeveleditor, mWelcome; 38 | 39 | {$R *.dfm} 40 | 41 | procedure TMapinfo.btSaveNewClick(Sender: TObject); 42 | var i:integer; 43 | begin 44 | if Mapeditor.SaveDialog.Execute then begin 45 | Mapeditor.mappath := Mapeditor.SaveDialog.FileName; 46 | for i:=Length(Mapeditor.mappath) downto 1 do 47 | if Mapeditor.mappath[i] = '\' then begin 48 | Mapeditor.mappath := Copy(Mapeditor.mappath,1,i); 49 | break; 50 | end; 51 | SaveInfo(); 52 | end 53 | else ShowMessage('Du hast abgebrochen. Das war ein fataler Fehler. Festplatte wird formatiert!'+ 54 | #13#10+'-Ende der schlechten Witze..'); 55 | end; 56 | 57 | procedure TMapinfo.SaveInfo(); 58 | var Stream: TFilestream; 59 | Writer: TWriter; 60 | begin 61 | Stream := TFilestream.Create(Mapeditor.mappath+'map.otmi',fmCreate); 62 | Writer := TWriter.Create(Stream,500); 63 | Mapeditor.mapname := edMapname.Text; 64 | Writer.WriteString(edMapname.Text+#13#10); 65 | Writer.WriteString(edVersion.Text+#13#10); 66 | Writer.WriteString('0,0'+#13#10); 67 | Writer.Free; 68 | Stream.Free; 69 | end; 70 | 71 | procedure TMapinfo.FormClose(Sender: TObject; var Action: TCloseAction); 72 | begin 73 | SaveInfo(); 74 | end; 75 | 76 | procedure TMapinfo.FormCreate(Sender: TObject); 77 | begin 78 | edMapname.Text := Mapeditor.mapname; 79 | edVersion.Text := Welcome.getVersion; 80 | edChunksizeX.Text := IntToStr(Mapeditor.ChunkSizeX); 81 | edChunksizeY.Text := IntToStr(Mapeditor.ChunkSizeY); 82 | edChunksizeZ.Text := IntToStr(Mapeditor.ChunkSizeZ); 83 | end; 84 | 85 | end. 86 | -------------------------------------------------------------------------------- /Map Editor/pLeveleditor.dof: -------------------------------------------------------------------------------- 1 | [FileVersion] 2 | Version=7.0 3 | [Compiler] 4 | A=8 5 | B=0 6 | C=1 7 | D=1 8 | E=0 9 | F=0 10 | G=1 11 | H=1 12 | I=1 13 | J=0 14 | K=0 15 | L=1 16 | M=0 17 | N=1 18 | O=1 19 | P=1 20 | Q=0 21 | R=0 22 | S=0 23 | T=0 24 | U=0 25 | V=1 26 | W=0 27 | X=1 28 | Y=1 29 | Z=1 30 | ShowHints=1 31 | ShowWarnings=1 32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 33 | NamespacePrefix= 34 | SymbolDeprecated=1 35 | SymbolLibrary=1 36 | SymbolPlatform=1 37 | UnitLibrary=1 38 | UnitPlatform=1 39 | UnitDeprecated=1 40 | HResultCompat=1 41 | HidingMember=1 42 | HiddenVirtual=1 43 | Garbage=1 44 | BoundsError=1 45 | ZeroNilCompat=1 46 | StringConstTruncated=1 47 | ForLoopVarVarPar=1 48 | TypedConstVarPar=1 49 | AsgToTypedConst=1 50 | CaseLabelRange=1 51 | ForVariable=1 52 | ConstructingAbstract=1 53 | ComparisonFalse=1 54 | ComparisonTrue=1 55 | ComparingSignedUnsigned=1 56 | CombiningSignedUnsigned=1 57 | UnsupportedConstruct=1 58 | FileOpen=1 59 | FileOpenUnitSrc=1 60 | BadGlobalSymbol=1 61 | DuplicateConstructorDestructor=1 62 | InvalidDirective=1 63 | PackageNoLink=1 64 | PackageThreadVar=1 65 | ImplicitImport=1 66 | HPPEMITIgnored=1 67 | NoRetVal=1 68 | UseBeforeDef=1 69 | ForLoopVarUndef=1 70 | UnitNameMismatch=1 71 | NoCFGFileFound=1 72 | MessageDirective=1 73 | ImplicitVariants=1 74 | UnicodeToLocale=1 75 | LocaleToUnicode=1 76 | ImagebaseMultiple=1 77 | SuspiciousTypecast=1 78 | PrivatePropAccessor=1 79 | UnsafeType=0 80 | UnsafeCode=0 81 | UnsafeCast=0 82 | [Linker] 83 | MapFile=0 84 | OutputObjs=0 85 | ConsoleApp=1 86 | DebugInfo=0 87 | RemoteSymbols=0 88 | MinStackSize=16384 89 | MaxStackSize=1048576 90 | ImageBase=4194304 91 | ExeDescription= 92 | [Directories] 93 | OutputDir= 94 | UnitOutputDir= 95 | PackageDLLOutputDir= 96 | PackageDCPOutputDir= 97 | SearchPath= 98 | Packages=vcl;rtl;vclx;VclSmp;vclshlctrls 99 | Conditionals= 100 | DebugSourceDirs= 101 | UsePackages=0 102 | [Parameters] 103 | RunParams= 104 | HostApplication= 105 | Launcher= 106 | UseLauncher=0 107 | DebugCWD= 108 | [Version Info] 109 | IncludeVerInfo=1 110 | AutoIncBuild=1 111 | MajorVer=0 112 | MinorVer=1 113 | Release=0 114 | Build=0 115 | Debug=0 116 | PreRelease=0 117 | Special=0 118 | Private=0 119 | DLL=0 120 | Locale=1031 121 | CodePage=1252 122 | [Version Info Keys] 123 | CompanyName=Bombing Games 124 | FileDescription= 125 | FileVersion=0.1.0.0 126 | InternalName= 127 | LegalCopyright=Benedikt Vogler 128 | LegalTrademarks= 129 | OriginalFilename= 130 | ProductName= 131 | ProductVersion=0.1.0.0 132 | Comments= 133 | [HistoryLists\hlUnitAliases] 134 | Count=1 135 | Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 136 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/LightEngine/PseudoGrey.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.LightEngine; 2 | 3 | import com.badlogic.gdx.graphics.Color; 4 | 5 | /** 6 | * Algorithm by Rich Franzen, 22 July 1999 7 | *mailto:rich@r0k.us 8 | *(c) 1999, Rich Franzen 9 | * @author Rich Franzen, Benedikt Vogler 10 | */ 11 | public class PseudoGrey { 12 | /** 13 | * @param grey 14 | * @return 15 | */ 16 | public static Color toColor(float grey) { 17 | int i4k, boost, r, g, b; 18 | 19 | i4k = (int)(grey * 4095); 20 | if (i4k >= 4095) 21 | { // only one case of "infinity", 22 | // but the >= also protects against over-bounding (r,g,b) 23 | r = 255; 24 | g = 255; 25 | b = 255; 26 | } 27 | else if (i4k >= 0) 28 | { // normal case 29 | if (i4k < 0xfe0) 30 | { 31 | r = g = b = i4k >> 4; 32 | boost = i4k & 0x00f; // 16 possibilities 33 | } 34 | else 35 | { // accelerate rate near "infinity" 36 | r = g = b = 0xfe; // base level of 254 37 | boost = i4k & 0x01f; // 32 possibilities 38 | boost /= 2; // back down to 16 39 | } 40 | 41 | if (boost >= 14) 42 | { 43 | r += 1; 44 | g += 1; 45 | } 46 | else if (boost >= 11) 47 | { 48 | g += 1; 49 | b += 1; 50 | } 51 | else if (boost >= 9) 52 | g += 1; 53 | else if (boost >= 7) 54 | { 55 | r += 1; 56 | b += 1; 57 | } 58 | else if (boost >= 5) 59 | r += 1; 60 | else if (boost >= 2) 61 | b += 1; 62 | } 63 | else 64 | { // protect against error condition of negative grey 65 | r = 0; 66 | g = 0; 67 | b = 0; 68 | } 69 | return new Color(r/256f, g/256f, b/256f,1); 70 | } 71 | 72 | /** 73 | * 74 | * @param c 75 | * @return 76 | */ 77 | public static float toFloat(Color c) { 78 | int red, green, blue; 79 | int cMin, cMax; 80 | int base12; 81 | float grey; 82 | 83 | red = (int) (c.r*255); 84 | green = (int) (c.g*255); 85 | blue = (int) (c.b*255); 86 | cMin = Math.min(red, Math.min(green, blue)); 87 | cMax = Math.max(red, Math.max(green, blue)); 88 | 89 | if (cMin == 255) 90 | grey = 1.0f; 91 | else if (cMax == cMin) 92 | { // short-cut this common case 93 | base12 = cMin << 4; 94 | grey = base12 / 4095.0f; 95 | } 96 | else if ((cMax - cMin) < 2) 97 | { // pseudoGrey 98 | int delta = 0; // luma weights: 99 | if (cMax == blue) delta += 2; // .114 * 16 == 1.824 100 | if (cMax == red) delta += 5; // .299 * 16 == 4.784 101 | if (cMax == green) delta += 9; // .587 * 16 == 9.392 102 | if (cMin == 254) delta *= 2; // accelerate near "infinity" 103 | base12 = (cMin << 4) + delta; 104 | grey = base12 / 4095.0f; 105 | } 106 | else 107 | { // use luma conversion 108 | grey = (.299f*red + .587f*green + .114f*blue) / 255.0f; 109 | } 110 | 111 | return grey; 112 | } 113 | } -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/View.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.MainMenu; 2 | 3 | import com.BombingGames.WurfelEngine; 4 | import com.badlogic.gdx.Gdx; 5 | import com.badlogic.gdx.graphics.Color; 6 | import com.badlogic.gdx.graphics.GL10; 7 | import com.badlogic.gdx.graphics.OrthographicCamera; 8 | import com.badlogic.gdx.graphics.Texture; 9 | import com.badlogic.gdx.graphics.g2d.BitmapFont; 10 | import com.badlogic.gdx.graphics.g2d.Sprite; 11 | import com.badlogic.gdx.graphics.g2d.SpriteBatch; 12 | 13 | 14 | /** 15 | * The View manages ouput 16 | * @author Benedikt 17 | */ 18 | public class View { 19 | private final Sprite lettering; 20 | private final SpriteBatch batch; 21 | private final OrthographicCamera camera; 22 | private final BitmapFont font; 23 | private float a =0; 24 | 25 | /** 26 | * Creates a View. 27 | */ 28 | public View(){ 29 | //load textures 30 | lettering = new Sprite(new Texture(Gdx.files.internal("com/BombingGames/MainMenu/Images/Lettering.png"))); 31 | lettering.setX((Gdx.graphics.getWidth() - lettering.getWidth())/2); 32 | lettering.setY(50); 33 | lettering.flip(false, true); 34 | 35 | batch = new SpriteBatch(); 36 | 37 | //set the center to the top left 38 | camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 39 | camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 40 | 41 | font = new BitmapFont(Gdx.files.internal("com/BombingGames/EngineCore/arial.fnt"), true); 42 | font.setColor(Color.WHITE); 43 | } 44 | 45 | void update(float delta) { 46 | a += delta/1000f; 47 | if (a>1) a=1; 48 | } 49 | 50 | /** 51 | * renders the scene 52 | * @param pController 53 | */ 54 | public void render(Controller pController){ 55 | //clear & set background to black 56 | Gdx.gl11.glClearColor( 0f, 0f, 0f, 1f ); 57 | Gdx.gl11.glClear(GL10.GL_COLOR_BUFFER_BIT); 58 | 59 | //update camera and set the projection matrix 60 | camera.update(); 61 | batch.setProjectionMatrix(camera.combined); 62 | 63 | // render the lettering 64 | batch.begin(); 65 | lettering.setColor(1, 1, 1, a); 66 | lettering.draw(batch); 67 | batch.end(); 68 | 69 | // Draw the menu items 70 | batch.begin(); 71 | for (MenuItem mI : MainMenuScreen.getController().getMenuItems()) { 72 | mI.render(batch, camera); 73 | } 74 | batch.end(); 75 | 76 | batch.begin(); 77 | font.draw(batch, "FPS:"+ Gdx.graphics.getFramesPerSecond(), 20, 20); 78 | font.draw(batch, Gdx.input.getX()+ ","+Gdx.input.getY(), Gdx.input.getX(), Gdx.input.getY()); 79 | batch.end(); 80 | 81 | font.scale(-0.5f); 82 | batch.begin(); 83 | font.drawMultiLine(batch, WurfelEngine.getCredits(), 50, 100); 84 | batch.end(); 85 | font.scale(0.5f); 86 | } 87 | 88 | } 89 | 90 | -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Controller.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.MainMenu; 2 | 3 | import com.BombingGames.Game.CustomGameController; 4 | import com.BombingGames.Game.CustomGameView; 5 | import com.BombingGames.Game.ExplosivesDemoController; 6 | import com.BombingGames.WurfelEngine; 7 | import com.badlogic.gdx.Gdx; 8 | import com.badlogic.gdx.Input; 9 | import com.badlogic.gdx.InputProcessor; 10 | import com.badlogic.gdx.audio.Sound; 11 | import com.badlogic.gdx.graphics.g2d.TextureAtlas; 12 | 13 | 14 | /** 15 | * The controlelr of the main Menu manages the data. 16 | * @author Benedikt 17 | */ 18 | public class Controller { 19 | 20 | private final MenuItem[] menuItems = new MenuItem[4]; 21 | private final Sound fx; 22 | 23 | /** 24 | * Creates a new Controller 25 | */ 26 | public Controller() { 27 | TextureAtlas texture = new TextureAtlas(Gdx.files.internal("com/BombingGames/MainMenu/Images/MainMenu.txt"), true); 28 | 29 | menuItems[0] = new MenuItem(0, texture.getRegions().get(3)); 30 | menuItems[1] = new MenuItem(1, texture.getRegions().get(1)); 31 | menuItems[2] = new MenuItem(2, texture.getRegions().get(0)); 32 | menuItems[3] = new MenuItem(3, texture.getRegions().get(2)); 33 | 34 | fx = Gdx.audio.newSound(Gdx.files.internal("com/BombingGames/MainMenu/click2.wav")); 35 | Gdx.input.setInputProcessor(new InputListener()); 36 | } 37 | 38 | /** 39 | * updates game logic 40 | * @param delta 41 | */ 42 | public void update(int delta){ 43 | if (menuItems[0].isClicked()){ 44 | MainMenuScreen.setLoadMap(true); 45 | fx.play(); 46 | WurfelEngine.startGame(new CustomGameController(), new CustomGameView()); 47 | } else if (menuItems[1].isClicked()) { 48 | MainMenuScreen.setLoadMap(false); 49 | fx.play(); 50 | WurfelEngine.startGame(new CustomGameController(), new CustomGameView()); 51 | } else if (menuItems[2].isClicked()){ 52 | MainMenuScreen.setLoadMap(false); 53 | fx.play(); 54 | WurfelEngine.startGame(new ExplosivesDemoController(), new CustomGameView()); 55 | } else if (menuItems[3].isClicked()){ 56 | fx.play(); 57 | Gdx.app.exit(); 58 | } 59 | } 60 | 61 | /** 62 | * 63 | * @return 64 | */ 65 | public MenuItem[] getMenuItems() { 66 | return menuItems; 67 | } 68 | 69 | /** 70 | * 71 | */ 72 | public void dispose(){ 73 | fx.dispose(); 74 | } 75 | 76 | private class InputListener implements InputProcessor { 77 | 78 | @Override 79 | public boolean keyDown(int keycode) { 80 | if (keycode == Input.Keys.ESCAPE) 81 | Gdx.app.exit(); 82 | return true; 83 | } 84 | 85 | @Override 86 | public boolean keyUp(int keycode) { 87 | return true; 88 | } 89 | 90 | @Override 91 | public boolean keyTyped(char character) { 92 | return true; 93 | } 94 | 95 | @Override 96 | public boolean touchDown(int screenX, int screenY, int pointer, int button) { 97 | return true; 98 | } 99 | 100 | @Override 101 | public boolean touchUp(int screenX, int screenY, int pointer, int button) { 102 | return true; 103 | } 104 | 105 | @Override 106 | public boolean touchDragged(int screenX, int screenY, int pointer) { 107 | return true; 108 | } 109 | 110 | @Override 111 | public boolean mouseMoved(int screenX, int screenY) { 112 | return true; 113 | } 114 | 115 | @Override 116 | public boolean scrolled(int amount) { 117 | return true; 118 | } 119 | } 120 | } -------------------------------------------------------------------------------- /Map Editor/Block.pas: -------------------------------------------------------------------------------- 1 | unit Block; 2 | 3 | interface 4 | 5 | type TBlock = class(TObject) 6 | private 7 | public 8 | ID, Value, Health:integer; 9 | obstacle,transparent:boolean; 10 | name:String; 11 | constructor create(P_ID,P_Value:integer);overload; 12 | published 13 | constructor create(P_ID:integer);overload; 14 | 15 | end; 16 | 17 | implementation 18 | constructor TBlock.Create(P_ID,P_Value:integer); 19 | begin 20 | Health := 100; 21 | ID := P_ID; 22 | Value := P_Value; 23 | case ID of 24 | 0: begin 25 | name := 'air'; 26 | transparent := true; 27 | obstacle := false; 28 | end; 29 | 1: begin 30 | name := 'gras'; 31 | transparent := false; 32 | obstacle := true; 33 | end; 34 | 2: begin 35 | name := 'dirt'; 36 | transparent := false; 37 | obstacle := true; 38 | end; 39 | 3: begin 40 | name := 'stone'; 41 | transparent := false; 42 | obstacle := true; 43 | end; 44 | 4: begin 45 | name := 'asphalt'; 46 | transparent := false; 47 | obstacle := true; 48 | end; 49 | 5: begin 50 | name := 'cobblestone'; 51 | transparent := false; 52 | obstacle := true; 53 | end; 54 | 6: begin 55 | name := 'pavement'; 56 | transparent := false; 57 | obstacle := true; 58 | end; 59 | 7: begin 60 | name := 'concrete'; 61 | transparent := false; 62 | obstacle := true; 63 | end; 64 | 8: begin 65 | name := 'sand'; 66 | transparent := false; 67 | obstacle := true; 68 | end; 69 | 9: begin 70 | name := 'water'; 71 | transparent := false; 72 | obstacle := true; 73 | end; 74 | 20: begin 75 | name := 'red brick wall'; 76 | transparent := false; 77 | obstacle := true; 78 | end; 79 | 30: begin 80 | name := 'fence'; 81 | transparent := false; 82 | obstacle := true; 83 | end; 84 | 32: begin 85 | name := 'sandbags'; 86 | transparent := false; 87 | obstacle := true; 88 | end; 89 | 40: begin 90 | name := 'player'; 91 | transparent := true; 92 | obstacle := false; 93 | end; 94 | 50: begin 95 | name := 'strohbed' ; 96 | transparent := true; 97 | obstacle := false; 98 | end; 99 | 70: begin 100 | name := 'campfire'; 101 | transparent := true; 102 | obstacle := false; 103 | end; 104 | else begin 105 | name := 'undefined'; 106 | transparent := true; 107 | obstacle := false; 108 | end; 109 | end; 110 | end; 111 | 112 | constructor TBlock.Create(P_ID:integer); 113 | begin 114 | //hier soltle genau das gleiceh wie in der noramlen passieren, nur das p_Value := 0 ist; 115 | end; 116 | 117 | end. 118 | -------------------------------------------------------------------------------- /Map Editor/Block.~pas: -------------------------------------------------------------------------------- 1 | unit Block; 2 | 3 | interface 4 | 5 | type TBlock = class(TObject) 6 | private 7 | public 8 | ID, Value, Health:integer; 9 | obstacle,transparent:boolean; 10 | name:String; 11 | constructor create(P_ID,P_Value:integer);overload; 12 | published 13 | constructor create(P_ID:integer);overload; 14 | 15 | end; 16 | 17 | implementation 18 | constructor TBlock.Create(P_ID,P_Value:integer); 19 | begin 20 | Health := 100; 21 | ID := P_ID; 22 | Value := P_Value; 23 | case ID of 24 | 0: begin 25 | name := 'air'; 26 | transparent := true; 27 | obstacle := false; 28 | end; 29 | 1: begin 30 | name := 'gras'; 31 | transparent := false; 32 | obstacle := true; 33 | end; 34 | 2: begin 35 | name := 'dirt'; 36 | transparent := false; 37 | obstacle := true; 38 | end; 39 | 3: begin 40 | name := 'stone'; 41 | transparent := false; 42 | obstacle := true; 43 | end; 44 | 4: begin 45 | name := 'asphalt'; 46 | transparent := false; 47 | obstacle := true; 48 | end; 49 | 5: begin 50 | name := 'cobblestone'; 51 | transparent := false; 52 | obstacle := true; 53 | end; 54 | 6: begin 55 | name := 'pavement'; 56 | transparent := false; 57 | obstacle := true; 58 | end; 59 | 7: begin 60 | name := 'concrete'; 61 | transparent := false; 62 | obstacle := true; 63 | end; 64 | 8: begin 65 | name := 'sand'; 66 | transparent := false; 67 | obstacle := true; 68 | end; 69 | 9: begin 70 | name := 'water'; 71 | transparent := false; 72 | obstacle := true; 73 | end; 74 | 20: begin 75 | name := 'red brick wall'; 76 | transparent := false; 77 | obstacle := true; 78 | end; 79 | 30: begin 80 | name := 'fence'; 81 | transparent := false; 82 | obstacle := true; 83 | end; 84 | 32: begin 85 | name := 'sandbags'; 86 | transparent := false; 87 | obstacle := true; 88 | end; 89 | 40: begin 90 | name := 'player'; 91 | transparent := true; 92 | obstacle := false; 93 | end 94 | 50: begin 95 | name := 'strohbed' ; 96 | transparent := true; 97 | obstacle := false; 98 | end; 99 | 70: begin 100 | name := 'campfire'; 101 | transparent := true; 102 | obstacle := false; 103 | end; 104 | else begin 105 | name := 'undefined'; 106 | transparent := true; 107 | obstacle := false; 108 | end; 109 | end; 110 | end; 111 | 112 | constructor TBlock.Create(P_ID:integer); 113 | begin 114 | //hier soltle genau das gleiceh wie in der noramlen passieren, nur das p_Value := 0 ist; 115 | end; 116 | 117 | end. 118 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/LightEngine/GlobalLightSource.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.LightEngine; 2 | 3 | import com.BombingGames.EngineCore.Controller; 4 | import com.badlogic.gdx.graphics.Color; 5 | 6 | /** 7 | * 8 | * @author Benedikt Vogler 9 | */ 10 | public class GlobalLightSource { 11 | /** 12 | *The higher the value the faster/shorter is the day. 13 | */ 14 | protected final float AZIMUTH_SPEED = 1/64f; 15 | private float power; 16 | private Color tone; //the color of the light 17 | private float height; 18 | private float azimuth; 19 | private final int amplitude; //the max possible angle (from horizon) the sun can has 20 | 21 | /** 22 | * A GlobalLightSource can be the moon, the sun or even something new. 23 | * @param azimuth The starting position. 24 | * @param height The starting position. 25 | * @param color the starting color of the light. With this parameter you controll its brightness. 26 | * @param amplitudeHeight the maximum degree during a day the LightSource rises 27 | */ 28 | public GlobalLightSource(float azimuth, float height, Color color, int amplitudeHeight) { 29 | this.azimuth = azimuth; 30 | this.height = height; 31 | this.tone = color; 32 | this.amplitude = amplitudeHeight; 33 | } 34 | 35 | /** 36 | * A light source shines can shine brighter and darker. This amplitude is called power. What it real emits says the brightness. 37 | * @return a value between 0 and 1 38 | */ 39 | public float getPower() { 40 | return power; 41 | } 42 | 43 | /** 44 | * 45 | * @return 46 | */ 47 | public Color getTone() { 48 | return tone; 49 | } 50 | 51 | /** 52 | * 53 | * @return 54 | */ 55 | public float getHeight() { 56 | return height; 57 | } 58 | 59 | /** 60 | * 61 | * @return 62 | */ 63 | public float getAzimuth() { 64 | return azimuth; 65 | } 66 | 67 | /** 68 | * 69 | * @return 70 | */ 71 | public float getAzimuthSpeed() { 72 | return AZIMUTH_SPEED; 73 | } 74 | 75 | /** 76 | * 77 | * @return 78 | */ 79 | public int getMaxAngle() { 80 | return amplitude; 81 | } 82 | 83 | /** 84 | *The Latitude posiiton. 85 | * @param height 86 | */ 87 | public void setHeight(float height) { 88 | if (height >= 360) { 89 | this.height = height % 360; 90 | } else if (this.height < 0) this.height += 360; 91 | } 92 | 93 | /** 94 | *The longitudinal position 95 | * @param azimuth 96 | */ 97 | public void setAzimuth(float azimuth) { 98 | if (azimuth >= 360) { 99 | this.azimuth = azimuth % 360; 100 | } else if (this.azimuth < 0) this.azimuth += 360; 101 | } 102 | 103 | /** 104 | * 105 | * @param tone 106 | */ 107 | public void setTone(Color tone) { 108 | this.tone = tone; 109 | } 110 | 111 | /** 112 | * 113 | * @param delta 114 | */ 115 | public void update(float delta) { 116 | //automove 117 | if (AZIMUTH_SPEED != 0) { 118 | azimuth += AZIMUTH_SPEED * delta; 119 | height = (float) (amplitude * Math.sin((azimuth + Controller.getMap().getWorldSpinDirection()) * Math.PI / 180)); 120 | } 121 | 122 | //brightness calculation 123 | if (height > amplitude/2 && height < 180) 124 | power = 1;//day 125 | else if (height < -amplitude/2) 126 | power = 0;//night 127 | else if (height < amplitude/2) 128 | power = (float) (0.5f + 0.5f*Math.sin(height * Math.PI/amplitude)); //morning & evening 129 | 130 | 131 | if (power > 1) power=1; 132 | if (power < 0) power=0; 133 | 134 | //if (azimuth>180+IGLPrototype.TWISTDIRECTION) 135 | //color = new Color(127 + (int) (power * 128), 255, 255); 136 | //else color = new Color(1f,1f,1f); 137 | //I_a = (int) ((90-height)*0.1f); 138 | } 139 | 140 | /** 141 | * Returns the light the GLS emits. 142 | * @return 143 | */ 144 | public Color getLight() { 145 | return getTone().cpy().mul(power); 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/MsgSystem.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore; 2 | 3 | import com.badlogic.gdx.Gdx; 4 | import com.badlogic.gdx.graphics.Color; 5 | import java.util.ArrayList; 6 | 7 | /** 8 | * A message is put into the MsgSystem. It contains the message, the sender and the importance. 9 | * @author Benedikt 10 | */ 11 | class Msg { 12 | private final String fmessage; 13 | private String sender = "System"; 14 | private int importance = 1; 15 | 16 | 17 | protected Msg(String pmessage, String psender, int imp) { 18 | fmessage = pmessage; 19 | sender = psender; 20 | importance = imp; 21 | } 22 | 23 | /** 24 | * 25 | * @return 26 | */ 27 | public String getMessage(){ 28 | return fmessage; 29 | } 30 | 31 | /** 32 | * 33 | * @return 34 | */ 35 | public String getSender(){ 36 | return sender; 37 | } 38 | 39 | /** 40 | * 41 | * @return 42 | */ 43 | public int getImportance(){ 44 | return importance; 45 | } 46 | 47 | /** 48 | * Sets the importance 49 | * @param imp 50 | */ 51 | public void setImportance(int imp){ 52 | if ((imp>=0) && (imp<=100)) 53 | importance = imp; 54 | } 55 | } 56 | 57 | /** 58 | *The message system can manage&show messages (Msg). 59 | * @author Benedikt 60 | */ 61 | public class MsgSystem extends ArrayList { 62 | private int timelastupdate = 0; 63 | private boolean waitforinput = false; 64 | private final int xPos, yPos; 65 | private String input = ""; 66 | 67 | /** 68 | * 69 | * @param xPos 70 | * @param yPos 71 | */ 72 | public MsgSystem(int xPos, int yPos) { 73 | this.xPos = xPos; 74 | this.yPos = yPos; 75 | } 76 | 77 | 78 | 79 | /** 80 | * Adds a message with the sender "System" 81 | * @param message 82 | */ 83 | public void add(String message) { 84 | add(new Msg(message, "System", 100)); 85 | Gdx.app.log("DEBUG",message); 86 | } 87 | 88 | /** 89 | * 90 | * @param message 91 | * @param sender 92 | */ 93 | public void add(String message, String sender){ 94 | add(new Msg(message, sender, 100)); 95 | Gdx.app.log("DEBUG",message); 96 | } 97 | 98 | /** 99 | * 100 | * @param message 101 | * @param sender 102 | * @param importance 103 | */ 104 | public void add(String message, String sender, int importance){ 105 | add(new Msg(message, sender, importance)); 106 | Gdx.app.log("DEBUG",message); 107 | } 108 | 109 | /** 110 | * Updates the Message System 111 | * @param delta 112 | */ 113 | public void update(float delta){ 114 | timelastupdate += delta; 115 | 116 | //derease importance every 30ms 117 | if (timelastupdate >= 30) { 118 | timelastupdate = 0; 119 | for (int i=0; i < size(); i++) { 120 | Msg temp = get(i); 121 | if (temp.getImportance() > 0) 122 | temp.setImportance(temp.getImportance()-1); 123 | else remove(i); 124 | } 125 | } 126 | } 127 | 128 | /** 129 | * Draws the Messages 130 | * @param view 131 | */ 132 | public void render(View view){ 133 | if (waitforinput) view.drawString("MSG:"+input, xPos, yPos); 134 | 135 | view.getBatch().begin(); 136 | for (int i=0; i < size(); i++){ 137 | Msg msg = get(i); 138 | Color color = Color.BLUE.cpy(); 139 | if ("System".equals(msg.getSender())) color = Color.GREEN.cpy(); 140 | else if ("Warning".equals(msg.getSender())) color = Color.RED.cpy(); 141 | 142 | //draw 143 | view.getBatch().setColor(color); 144 | view.getFont().draw(view.getBatch(), msg.getMessage(), 10,50+i*20); 145 | } 146 | view.getBatch().end(); 147 | } 148 | 149 | /** 150 | * 151 | * @param listen 152 | */ 153 | public void listenForInput(boolean listen) { 154 | if (listen != waitforinput && !"".equals(input)) { 155 | add(input); 156 | input = ""; 157 | } 158 | waitforinput = listen; 159 | } 160 | 161 | /** 162 | * 163 | * @return 164 | */ 165 | public boolean isListeningForInput() { 166 | return waitforinput; 167 | } 168 | 169 | /** 170 | * 171 | * @param characterInput 172 | */ 173 | public void getInput(char characterInput){ 174 | input += String.valueOf(characterInput); 175 | } 176 | } -------------------------------------------------------------------------------- /com/BombingGames/WurfelEngine.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames; 2 | 3 | import com.BombingGames.EngineCore.Controller; 4 | import com.BombingGames.EngineCore.GameplayScreen; 5 | import com.BombingGames.EngineCore.View; 6 | import com.BombingGames.EngineCore.WorkingDirectory; 7 | import com.BombingGames.MainMenu.MainMenuScreen; 8 | import com.badlogic.gdx.Game; 9 | import com.badlogic.gdx.Gdx; 10 | import com.badlogic.gdx.backends.lwjgl.LwjglApplication; 11 | import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; 12 | import com.badlogic.gdx.graphics.Texture; 13 | import java.io.File; 14 | 15 | /** 16 | *The Main class of the engine. To create a new engine use {@link com.BombingGames.WurfelEngine#construct(java.lang.String, java.lang.String[]) WurfelEngine.construct} 17 | * The Wurfel Engine needs the API libGDX0.9.8. Besides the shape renderer the nightly build does also work (27. September 2013). 18 | * Java 7 does not work with libGDX0.9.8 on Mac. Use Java 6 instead. You can use Java 7 when using the nightly build (27. September 2013). 19 | * @author Benedikt Vogler 20 | */ 21 | public class WurfelEngine extends Game { 22 | /** 23 | * The version of the Engine 24 | */ 25 | public static final String VERSION = "1.1.13"; 26 | private static File workingDirectory; 27 | private static boolean fullscreen = false; 28 | private static WurfelEngine instance; 29 | 30 | /** 31 | * Create the Engine. Don't use this. Use construct() instead. 32 | * @param title The title, which is displayed in the window. 33 | * @param args custom display resolution: [0] width, [1] height, [2] fullscreen 34 | */ 35 | private WurfelEngine(String title, String[] args){ 36 | // set the name of the application menu item on mac 37 | if (System.getProperty("os.name").toLowerCase().equals("mac")) 38 | System.setProperty("com.apple.mrj.application.apple.menu.about.name", title); 39 | 40 | LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); 41 | 42 | config.setFromDisplayMode(LwjglApplicationConfiguration.getDesktopDisplayMode()); 43 | config.fullscreen = false; 44 | config.vSyncEnabled = false; 45 | config.useGL20 = false; 46 | 47 | //arguments 48 | //you can start the game with a custom resolution 49 | if (args.length == 0){ 50 | config.setFromDisplayMode(LwjglApplicationConfiguration.getDesktopDisplayMode()); 51 | } else { 52 | if (args.length > 1){ 53 | config.width = Integer.parseInt(args[0]); 54 | config.height = Integer.parseInt(args[1]); 55 | if (args.length >= 3){ 56 | config.fullscreen = ("true".equals(args[2])); 57 | } 58 | } 59 | } 60 | 61 | config.title = title + " " + config.width + "x"+config.height; 62 | 63 | workingDirectory = WorkingDirectory.getWorkingDirectory("Wurfelengine"); 64 | 65 | Texture.setEnforcePotImages(false);//allow non-power-of-two textures 66 | LwjglApplication application = new LwjglApplication(this, config); 67 | 68 | //LIBGDX: no equivalent found in libGDX yet 69 | //setUpdateOnlyWhenVisible(true); 70 | //setMaximumLogicUpdateInterval(200);//delta can not be bigger than 200ms ^= 5 FPS 71 | //setMinimumLogicUpdateInterval(1);//delta can not be smaller than 1 ^= 1000FPS 72 | } 73 | 74 | @Override 75 | public void create() { 76 | setScreen(new MainMenuScreen()); 77 | } 78 | 79 | /** 80 | * Create a new instance of the Engine. 81 | * @param title The title, which is displayed in the window. 82 | * @param args custom display resolution: [0] width, [1] height, [2] fullscreen 83 | */ 84 | public static void construct(String title, String[] args){ 85 | instance = new WurfelEngine(title,args); 86 | } 87 | 88 | /** 89 | * Singleton method to get the only instance. 90 | * @return the wurfelengine 91 | */ 92 | public static WurfelEngine getInstance(){ 93 | return instance; 94 | } 95 | 96 | /** 97 | * Launch the main game with you custom controller and view. 98 | * @param controller 99 | * @param view 100 | */ 101 | public static void startGame(Controller controller, View view){ 102 | instance.setScreen( 103 | new GameplayScreen( 104 | controller, 105 | view 106 | ) 107 | ); 108 | } 109 | 110 | /** 111 | * Get the credits of the engine. 112 | * @return a long string with breaks 113 | */ 114 | public static String getCredits() { 115 | String newline = System.getProperty("line.separator"); 116 | return "Created by:"+newline 117 | + " Benedikt Vogler"+newline+newline 118 | + "Programming:"+newline 119 | + "Benedikt Vogler"+newline+newline 120 | + "Art:"+newline 121 | + "Benedikt Vogler"+newline 122 | + "Pia Lenßen"+newline+newline 123 | + "Sound:"+newline 124 | + "Benedikt Vogler"+newline+newline 125 | + "Quality Assurance"+newline 126 | + "Thomas Vogt"; 127 | } 128 | 129 | /** 130 | * Returns the save file folder, wich is different on every OS. 131 | * @return a folder 132 | */ 133 | public static File getWorkingDirectory() { 134 | return workingDirectory; 135 | } 136 | 137 | /** 138 | * 139 | * @param fullscreen 140 | */ 141 | public static void setFullscreen(boolean fullscreen) { 142 | WurfelEngine.fullscreen = fullscreen; 143 | Gdx.graphics.setDisplayMode(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), fullscreen); 144 | Gdx.graphics.setTitle("Wurfelengine V" + WurfelEngine.VERSION + " " + Gdx.graphics.getWidth() + "x"+Gdx.graphics.getHeight()); 145 | } 146 | 147 | /** 148 | * 149 | * @return 150 | */ 151 | public static boolean isFullscreen() { 152 | return fullscreen; 153 | } 154 | 155 | } -------------------------------------------------------------------------------- /com/BombingGames/MainMenu/Images/MainMenu.tps: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fileFormatVersion 5 | 1 6 | variation 7 | main 8 | verbose 9 | 10 | autoSDSettings 11 | 12 | allowRotation 13 | 14 | quiet 15 | 16 | premultiplyAlpha 17 | 18 | shapeDebug 19 | 20 | dpi 21 | 72 22 | dataFormat 23 | libgdx 24 | textureFileName 25 | MainMenu.png 26 | flipPVR 27 | 28 | ditherType 29 | NearestNeighbour 30 | backgroundColor 31 | 0 32 | libGdx 33 | 34 | filtering 35 | 36 | x 37 | Linear 38 | y 39 | Linear 40 | 41 | 42 | shapePadding 43 | 2 44 | jpgQuality 45 | 80 46 | pngOptimizationLevel 47 | 0 48 | textureSubPath 49 | 50 | textureFormat 51 | png 52 | borderPadding 53 | 2 54 | maxTextureSize 55 | 56 | width 57 | 2048 58 | height 59 | 2048 60 | 61 | fixedTextureSize 62 | 63 | width 64 | -1 65 | height 66 | -1 67 | 68 | reduceBorderArtifacts 69 | 70 | algorithmSettings 71 | 72 | algorithm 73 | Basic 74 | freeSizeMode 75 | Best 76 | sizeConstraints 77 | POT 78 | forceSquared 79 | 80 | forceWordAligned 81 | 82 | maxRects 83 | 84 | heuristic 85 | Best 86 | 87 | basic 88 | 89 | sortBy 90 | Best 91 | order 92 | Ascending 93 | 94 | 95 | andEngine 96 | 97 | minFilter 98 | Linear 99 | packageName 100 | Texture 101 | javaFileName 102 | MainMenu.java 103 | wrap 104 | 105 | s 106 | Clamp 107 | t 108 | Clamp 109 | 110 | magFilter 111 | MagLinear 112 | 113 | dataFileName 114 | MainMenu.txt 115 | multiPack 116 | 117 | mainExtension 118 | 119 | forceIdenticalLayout 120 | 121 | outputFormat 122 | RGBA8888 123 | contentProtection 124 | 125 | key 126 | 127 | 128 | autoAliasEnabled 129 | 130 | trimSpriteNames 131 | 132 | globalSpriteSettings 133 | 134 | scale 135 | 1 136 | scaleMode 137 | Smooth 138 | innerPadding 139 | 0 140 | extrude 141 | 0 142 | trimThreshold 143 | 1 144 | trimMode 145 | None 146 | heuristicMask 147 | 148 | 149 | fileList 150 | 151 | Exit.png 152 | generate.png 153 | load.png 154 | Barrel.png 155 | 156 | ignoreFileList 157 | 158 | replaceList 159 | 160 | ignoredWarnings 161 | 162 | commonDivisorX 163 | 1 164 | commonDivisorY 165 | 1 166 | 167 | 168 | -------------------------------------------------------------------------------- /Map Editor/mMapinfo.dfm: -------------------------------------------------------------------------------- 1 | object Mapinfo: TMapinfo 2 | Left = 932 3 | Top = 552 4 | BorderIcons = [biSystemMenu] 5 | BorderStyle = bsSingle 6 | Caption = 'Mapinfo' 7 | ClientHeight = 165 8 | ClientWidth = 310 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'MS Sans Serif' 14 | Font.Style = [] 15 | Icon.Data = { 16 | 0000010001002020100000000000E80200001600000028000000200000004000 17 | 0000010004000000000080020000000000000000000000000000000000000000 18 | 000000008000008000000080800080000000800080008080000080808000C0C0 19 | C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 20 | 0000000000000000000000000000000000000000000000000000000000000000 21 | 0000000000000000000000000000000000000000000000000000000000000000 22 | 0000000000000000000000000000000000000000000000000000000000000000 23 | 0000000000000000000000000000000000000000000000000000000000000000 24 | 0000000000022000000000000000000000000000022222200000000000000000 25 | 0000000222222222200000000000000000000222222222222220000000000000 26 | 0002222222222222222220000000000002222222222222222222222000000002 27 | 2222222222222222222222222000022222222222222222222222222222200002 28 | 2222222222222222222222222000000002222222222222222222222000000000 29 | 0002222222222222222220000000000000000222222222222220000000000000 30 | 0000000222222222200000000000000000000000022222200000000000000000 31 | 0000000000022000000000000000000000000000000000000000000000000000 32 | 0000000000000000000000000000000000000000000000000000000000000000 33 | 0000000000000000000000000000000000000000000000000000000000000000 34 | 0000000000000000000000000000000000000000000000000000000000000000 35 | 000000000000000000000000000000000000000000000000000000000000FFFF 36 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFF8 37 | 1FFFFFE007FFFF8001FFFE00007FF800001FE000000780000001000000008000 38 | 0001E0000007F800001FFE00007FFF8001FFFFE007FFFFF81FFFFFFE7FFFFFFF 39 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} 40 | OldCreateOrder = False 41 | Position = poScreenCenter 42 | OnClose = FormClose 43 | OnCreate = FormCreate 44 | PixelsPerInch = 96 45 | TextHeight = 13 46 | object laMapname: TLabel 47 | Left = 8 48 | Top = 8 49 | Width = 52 50 | Height = 15 51 | Caption = 'Mapname' 52 | Font.Charset = ANSI_CHARSET 53 | Font.Color = clWindowText 54 | Font.Height = -11 55 | Font.Name = 'Lucida Sans Unicode' 56 | Font.Style = [] 57 | ParentFont = False 58 | end 59 | object laEditorversion: TLabel 60 | Left = 184 61 | Top = 8 62 | Width = 72 63 | Height = 15 64 | Caption = 'Editorversion' 65 | Font.Charset = ANSI_CHARSET 66 | Font.Color = clWindowText 67 | Font.Height = -11 68 | Font.Name = 'Lucida Sans Unicode' 69 | Font.Style = [] 70 | ParentFont = False 71 | end 72 | object laChunksize: TLabel 73 | Left = 10 74 | Top = 60 75 | Width = 75 76 | Height = 16 77 | Caption = 'Chunksize' 78 | Font.Charset = ANSI_CHARSET 79 | Font.Color = clWindowText 80 | Font.Height = -13 81 | Font.Name = 'Lucida Sans Unicode' 82 | Font.Style = [fsBold] 83 | ParentFont = False 84 | end 85 | object laChunksizeX: TLabel 86 | Left = 10 87 | Top = 80 88 | Width = 7 89 | Height = 15 90 | Caption = 'X' 91 | Font.Charset = ANSI_CHARSET 92 | Font.Color = clWindowText 93 | Font.Height = -11 94 | Font.Name = 'Lucida Sans Unicode' 95 | Font.Style = [] 96 | ParentFont = False 97 | end 98 | object laChunksizeY: TLabel 99 | Left = 50 100 | Top = 80 101 | Width = 7 102 | Height = 15 103 | Caption = 'Y' 104 | Font.Charset = ANSI_CHARSET 105 | Font.Color = clWindowText 106 | Font.Height = -11 107 | Font.Name = 'Lucida Sans Unicode' 108 | Font.Style = [] 109 | ParentFont = False 110 | end 111 | object laChunksizeZ: TLabel 112 | Left = 90 113 | Top = 80 114 | Width = 7 115 | Height = 15 116 | Caption = 'Z' 117 | Font.Charset = ANSI_CHARSET 118 | Font.Color = clWindowText 119 | Font.Height = -11 120 | Font.Name = 'Lucida Sans Unicode' 121 | Font.Style = [] 122 | ParentFont = False 123 | end 124 | object edMapname: TEdit 125 | Left = 8 126 | Top = 24 127 | Width = 121 128 | Height = 23 129 | Font.Charset = ANSI_CHARSET 130 | Font.Color = clWindowText 131 | Font.Height = -11 132 | Font.Name = 'Lucida Sans Unicode' 133 | Font.Style = [] 134 | ParentFont = False 135 | TabOrder = 0 136 | Text = 'Error' 137 | end 138 | object btSaveNew: TButton 139 | Left = 176 140 | Top = 136 141 | Width = 131 142 | Height = 25 143 | Caption = 'Speicherort wechseln' 144 | Font.Charset = ANSI_CHARSET 145 | Font.Color = clWindowText 146 | Font.Height = -11 147 | Font.Name = 'Lucida Sans Unicode' 148 | Font.Style = [] 149 | ParentFont = False 150 | TabOrder = 1 151 | OnClick = btSaveNewClick 152 | end 153 | object edVersion: TEdit 154 | Left = 184 155 | Top = 24 156 | Width = 77 157 | Height = 23 158 | Enabled = False 159 | Font.Charset = ANSI_CHARSET 160 | Font.Color = clWindowText 161 | Font.Height = -11 162 | Font.Name = 'Lucida Sans Unicode' 163 | Font.Style = [] 164 | ParentFont = False 165 | ReadOnly = True 166 | TabOrder = 2 167 | Text = 'Error' 168 | end 169 | object edChunksizeX: TEdit 170 | Left = 10 171 | Top = 100 172 | Width = 31 173 | Height = 23 174 | Font.Charset = ANSI_CHARSET 175 | Font.Color = clWindowText 176 | Font.Height = -11 177 | Font.Name = 'Lucida Sans Unicode' 178 | Font.Style = [] 179 | ParentFont = False 180 | TabOrder = 3 181 | end 182 | object edChunksizeY: TEdit 183 | Left = 50 184 | Top = 100 185 | Width = 31 186 | Height = 23 187 | Font.Charset = ANSI_CHARSET 188 | Font.Color = clWindowText 189 | Font.Height = -11 190 | Font.Name = 'Lucida Sans Unicode' 191 | Font.Style = [] 192 | ParentFont = False 193 | TabOrder = 4 194 | end 195 | object edChunksizeZ: TEdit 196 | Left = 90 197 | Top = 100 198 | Width = 31 199 | Height = 23 200 | Font.Charset = ANSI_CHARSET 201 | Font.Color = clWindowText 202 | Font.Height = -11 203 | Font.Name = 'Lucida Sans Unicode' 204 | Font.Style = [] 205 | ParentFont = False 206 | TabOrder = 5 207 | end 208 | end 209 | -------------------------------------------------------------------------------- /Map Editor/mMapinfo.~dfm: -------------------------------------------------------------------------------- 1 | object Mapinfo: TMapinfo 2 | Left = 932 3 | Top = 552 4 | BorderIcons = [biSystemMenu] 5 | BorderStyle = bsSingle 6 | Caption = 'Mapinfo' 7 | ClientHeight = 165 8 | ClientWidth = 310 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'MS Sans Serif' 14 | Font.Style = [] 15 | Icon.Data = { 16 | 0000010001002020100000000000E80200001600000028000000200000004000 17 | 0000010004000000000080020000000000000000000000000000000000000000 18 | 000000008000008000000080800080000000800080008080000080808000C0C0 19 | C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 20 | 0000000000000000000000000000000000000000000000000000000000000000 21 | 0000000000000000000000000000000000000000000000000000000000000000 22 | 0000000000000000000000000000000000000000000000000000000000000000 23 | 0000000000000000000000000000000000000000000000000000000000000000 24 | 0000000000022000000000000000000000000000022222200000000000000000 25 | 0000000222222222200000000000000000000222222222222220000000000000 26 | 0002222222222222222220000000000002222222222222222222222000000002 27 | 2222222222222222222222222000022222222222222222222222222222200002 28 | 2222222222222222222222222000000002222222222222222222222000000000 29 | 0002222222222222222220000000000000000222222222222220000000000000 30 | 0000000222222222200000000000000000000000022222200000000000000000 31 | 0000000000022000000000000000000000000000000000000000000000000000 32 | 0000000000000000000000000000000000000000000000000000000000000000 33 | 0000000000000000000000000000000000000000000000000000000000000000 34 | 0000000000000000000000000000000000000000000000000000000000000000 35 | 000000000000000000000000000000000000000000000000000000000000FFFF 36 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFF8 37 | 1FFFFFE007FFFF8001FFFE00007FF800001FE000000780000001000000008000 38 | 0001E0000007F800001FFE00007FFF8001FFFFE007FFFFF81FFFFFFE7FFFFFFF 39 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} 40 | OldCreateOrder = False 41 | Position = poScreenCenter 42 | OnClose = FormClose 43 | OnCreate = FormCreate 44 | PixelsPerInch = 96 45 | TextHeight = 13 46 | object laMapname: TLabel 47 | Left = 8 48 | Top = 8 49 | Width = 52 50 | Height = 15 51 | Caption = 'Mapname' 52 | Font.Charset = ANSI_CHARSET 53 | Font.Color = clWindowText 54 | Font.Height = -11 55 | Font.Name = 'Lucida Sans Unicode' 56 | Font.Style = [] 57 | ParentFont = False 58 | end 59 | object laEditorversion: TLabel 60 | Left = 184 61 | Top = 8 62 | Width = 72 63 | Height = 15 64 | Caption = 'Editorversion' 65 | Font.Charset = ANSI_CHARSET 66 | Font.Color = clWindowText 67 | Font.Height = -11 68 | Font.Name = 'Lucida Sans Unicode' 69 | Font.Style = [] 70 | ParentFont = False 71 | end 72 | object laChunksize: TLabel 73 | Left = 10 74 | Top = 60 75 | Width = 75 76 | Height = 16 77 | Caption = 'Chunksize' 78 | Font.Charset = ANSI_CHARSET 79 | Font.Color = clWindowText 80 | Font.Height = -13 81 | Font.Name = 'Lucida Sans Unicode' 82 | Font.Style = [fsBold] 83 | ParentFont = False 84 | end 85 | object laChunksizeX: TLabel 86 | Left = 10 87 | Top = 80 88 | Width = 7 89 | Height = 15 90 | Caption = 'X' 91 | Font.Charset = ANSI_CHARSET 92 | Font.Color = clWindowText 93 | Font.Height = -11 94 | Font.Name = 'Lucida Sans Unicode' 95 | Font.Style = [] 96 | ParentFont = False 97 | end 98 | object laChunksizeY: TLabel 99 | Left = 50 100 | Top = 80 101 | Width = 7 102 | Height = 15 103 | Caption = 'Y' 104 | Font.Charset = ANSI_CHARSET 105 | Font.Color = clWindowText 106 | Font.Height = -11 107 | Font.Name = 'Lucida Sans Unicode' 108 | Font.Style = [] 109 | ParentFont = False 110 | end 111 | object laChunksizeZ: TLabel 112 | Left = 90 113 | Top = 80 114 | Width = 7 115 | Height = 15 116 | Caption = 'Z' 117 | Font.Charset = ANSI_CHARSET 118 | Font.Color = clWindowText 119 | Font.Height = -11 120 | Font.Name = 'Lucida Sans Unicode' 121 | Font.Style = [] 122 | ParentFont = False 123 | end 124 | object edMapname: TEdit 125 | Left = 8 126 | Top = 24 127 | Width = 121 128 | Height = 23 129 | Font.Charset = ANSI_CHARSET 130 | Font.Color = clWindowText 131 | Font.Height = -11 132 | Font.Name = 'Lucida Sans Unicode' 133 | Font.Style = [] 134 | ParentFont = False 135 | TabOrder = 0 136 | Text = 'Error' 137 | end 138 | object btSaveNew: TButton 139 | Left = 176 140 | Top = 136 141 | Width = 131 142 | Height = 25 143 | Caption = 'Speicherort wechseln' 144 | Font.Charset = ANSI_CHARSET 145 | Font.Color = clWindowText 146 | Font.Height = -11 147 | Font.Name = 'Lucida Sans Unicode' 148 | Font.Style = [] 149 | ParentFont = False 150 | TabOrder = 1 151 | OnClick = btSaveNewClick 152 | end 153 | object edVersion: TEdit 154 | Left = 184 155 | Top = 24 156 | Width = 77 157 | Height = 23 158 | Enabled = False 159 | Font.Charset = ANSI_CHARSET 160 | Font.Color = clWindowText 161 | Font.Height = -11 162 | Font.Name = 'Lucida Sans Unicode' 163 | Font.Style = [] 164 | ParentFont = False 165 | ReadOnly = True 166 | TabOrder = 2 167 | Text = 'Error' 168 | end 169 | object edChunksizeX: TEdit 170 | Left = 10 171 | Top = 100 172 | Width = 31 173 | Height = 23 174 | Font.Charset = ANSI_CHARSET 175 | Font.Color = clWindowText 176 | Font.Height = -11 177 | Font.Name = 'Lucida Sans Unicode' 178 | Font.Style = [] 179 | ParentFont = False 180 | TabOrder = 3 181 | end 182 | object edChunksizeY: TEdit 183 | Left = 50 184 | Top = 100 185 | Width = 31 186 | Height = 23 187 | Font.Charset = ANSI_CHARSET 188 | Font.Color = clWindowText 189 | Font.Height = -11 190 | Font.Name = 'Lucida Sans Unicode' 191 | Font.Style = [] 192 | ParentFont = False 193 | TabOrder = 4 194 | end 195 | object edChunksizeZ: TEdit 196 | Left = 90 197 | Top = 100 198 | Width = 31 199 | Height = 23 200 | Font.Charset = ANSI_CHARSET 201 | Font.Color = clWindowText 202 | Font.Height = -11 203 | Font.Name = 'Lucida Sans Unicode' 204 | Font.Style = [] 205 | ParentFont = False 206 | TabOrder = 5 207 | end 208 | end 209 | -------------------------------------------------------------------------------- /Map Editor/mCreateMap.~dfm: -------------------------------------------------------------------------------- 1 | object CreateMap: TCreateMap 2 | Left = 394 3 | Top = 600 4 | Width = 503 5 | Height = 240 6 | BorderIcons = [biSystemMenu, biMinimize] 7 | Caption = 'Create Map' 8 | Color = clBtnFace 9 | Constraints.MinHeight = 190 10 | Constraints.MinWidth = 270 11 | Font.Charset = DEFAULT_CHARSET 12 | Font.Color = clWindowText 13 | Font.Height = -11 14 | Font.Name = 'MS Sans Serif' 15 | Font.Style = [] 16 | Icon.Data = { 17 | 0000010001002020100000000000E80200001600000028000000200000004000 18 | 0000010004000000000080020000000000000000000000000000000000000000 19 | 000000008000008000000080800080000000800080008080000080808000C0C0 20 | C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 21 | 0000000000000000000000000000000000000000000000000000000000000000 22 | 0000000000000000000000000000000000000000000000000000000000000000 23 | 0000000000000000000000000000000000000000000000000000000000000000 24 | 0000000000000000000000000000000000000000000000000000000000000000 25 | 0000000000022000000000000000000000000000022222200000000000000000 26 | 0000000222222222200000000000000000000222222222222220000000000000 27 | 0002222222222222222220000000000002222222222222222222222000000002 28 | 2222222222222222222222222000022222222222222222222222222222200002 29 | 2222222222222222222222222000000002222222222222222222222000000000 30 | 0002222222222222222220000000000000000222222222222220000000000000 31 | 0000000222222222200000000000000000000000022222200000000000000000 32 | 0000000000022000000000000000000000000000000000000000000000000000 33 | 0000000000000000000000000000000000000000000000000000000000000000 34 | 0000000000000000000000000000000000000000000000000000000000000000 35 | 0000000000000000000000000000000000000000000000000000000000000000 36 | 000000000000000000000000000000000000000000000000000000000000FFFF 37 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFF8 38 | 1FFFFFE007FFFF8001FFFE00007FF800001FE000000780000001000000008000 39 | 0001E0000007F800001FFE00007FFF8001FFFFE007FFFFF81FFFFFFE7FFFFFFF 40 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} 41 | OldCreateOrder = False 42 | Position = poScreenCenter 43 | OnCreate = FormCreate 44 | DesignSize = ( 45 | 487 46 | 205) 47 | PixelsPerInch = 96 48 | TextHeight = 13 49 | object btPath: TButton 50 | Left = 0 51 | Top = 80 52 | Width = 91 53 | Height = 21 54 | Caption = 'Select path' 55 | Font.Charset = ANSI_CHARSET 56 | Font.Color = clWindowText 57 | Font.Height = -11 58 | Font.Name = 'Verdana' 59 | Font.Style = [fsBold] 60 | ParentFont = False 61 | TabOrder = 1 62 | OnClick = btPathClick 63 | end 64 | object leMapname: TLabeledEdit 65 | Left = 0 66 | Top = 30 67 | Width = 184 68 | Height = 24 69 | Anchors = [akLeft, akTop, akRight] 70 | EditLabel.Width = 78 71 | EditLabel.Height = 18 72 | EditLabel.Caption = 'Mapname' 73 | EditLabel.Font.Charset = ANSI_CHARSET 74 | EditLabel.Font.Color = clWindowText 75 | EditLabel.Font.Height = -16 76 | EditLabel.Font.Name = 'Verdana' 77 | EditLabel.Font.Style = [] 78 | EditLabel.ParentFont = False 79 | Font.Charset = ANSI_CHARSET 80 | Font.Color = clWindowText 81 | Font.Height = -13 82 | Font.Name = 'Verdana' 83 | Font.Style = [] 84 | LabelSpacing = 5 85 | MaxLength = 100 86 | ParentFont = False 87 | TabOrder = 0 88 | Text = 'Fill mapname here' 89 | OnChange = leMapnameChange 90 | end 91 | object lePath: TLabeledEdit 92 | Left = 100 93 | Top = 80 94 | Width = 381 95 | Height = 23 96 | EditLabel.Width = 32 97 | EditLabel.Height = 15 98 | EditLabel.Caption = 'lePath' 99 | EditLabel.Font.Charset = ANSI_CHARSET 100 | EditLabel.Font.Color = clWindowText 101 | EditLabel.Font.Height = -11 102 | EditLabel.Font.Name = 'Lucida Sans Unicode' 103 | EditLabel.Font.Style = [] 104 | EditLabel.ParentFont = False 105 | Font.Charset = ANSI_CHARSET 106 | Font.Color = clWindowText 107 | Font.Height = -11 108 | Font.Name = 'Lucida Sans Unicode' 109 | Font.Style = [] 110 | ParentFont = False 111 | TabOrder = 2 112 | end 113 | object leChunksizeX: TLabeledEdit 114 | Left = 0 115 | Top = 130 116 | Width = 61 117 | Height = 23 118 | EditLabel.Width = 63 119 | EditLabel.Height = 15 120 | EditLabel.Caption = 'ChunksizeX' 121 | EditLabel.Font.Charset = ANSI_CHARSET 122 | EditLabel.Font.Color = clWindowText 123 | EditLabel.Font.Height = -11 124 | EditLabel.Font.Name = 'Lucida Sans Unicode' 125 | EditLabel.Font.Style = [] 126 | EditLabel.ParentFont = False 127 | Font.Charset = ANSI_CHARSET 128 | Font.Color = clWindowText 129 | Font.Height = -11 130 | Font.Name = 'Lucida Sans Unicode' 131 | Font.Style = [] 132 | ParentFont = False 133 | TabOrder = 3 134 | end 135 | object leChunksizeY: TLabeledEdit 136 | Left = 70 137 | Top = 130 138 | Width = 61 139 | Height = 23 140 | EditLabel.Width = 63 141 | EditLabel.Height = 15 142 | EditLabel.Caption = 'ChunksizeY' 143 | EditLabel.Font.Charset = ANSI_CHARSET 144 | EditLabel.Font.Color = clWindowText 145 | EditLabel.Font.Height = -11 146 | EditLabel.Font.Name = 'Lucida Sans Unicode' 147 | EditLabel.Font.Style = [] 148 | EditLabel.ParentFont = False 149 | Font.Charset = ANSI_CHARSET 150 | Font.Color = clWindowText 151 | Font.Height = -11 152 | Font.Name = 'Lucida Sans Unicode' 153 | Font.Style = [] 154 | ParentFont = False 155 | TabOrder = 4 156 | end 157 | object leChunksizeZ: TLabeledEdit 158 | Left = 140 159 | Top = 130 160 | Width = 61 161 | Height = 23 162 | EditLabel.Width = 63 163 | EditLabel.Height = 15 164 | EditLabel.Caption = 'ChunksizeZ' 165 | EditLabel.Font.Charset = ANSI_CHARSET 166 | EditLabel.Font.Color = clWindowText 167 | EditLabel.Font.Height = -11 168 | EditLabel.Font.Name = 'Lucida Sans Unicode' 169 | EditLabel.Font.Style = [] 170 | EditLabel.ParentFont = False 171 | Font.Charset = ANSI_CHARSET 172 | Font.Color = clWindowText 173 | Font.Height = -11 174 | Font.Name = 'Lucida Sans Unicode' 175 | Font.Style = [] 176 | ParentFont = False 177 | TabOrder = 5 178 | end 179 | object bbOK: TBitBtn 180 | Left = 410 181 | Top = 170 182 | Width = 75 183 | Height = 25 184 | TabOrder = 6 185 | OnClick = bbOKClick 186 | Kind = bkOK 187 | end 188 | object bbClose: TBitBtn 189 | Left = 320 190 | Top = 170 191 | Width = 81 192 | Height = 25 193 | TabOrder = 7 194 | Kind = bkCancel 195 | end 196 | end 197 | -------------------------------------------------------------------------------- /Map Editor/mCreateMap.dfm: -------------------------------------------------------------------------------- 1 | object CreateMap: TCreateMap 2 | Left = 305 3 | Top = 640 4 | Width = 503 5 | Height = 240 6 | BorderIcons = [biSystemMenu, biMinimize] 7 | Caption = 'Create Map' 8 | Color = clBtnFace 9 | Constraints.MinHeight = 190 10 | Constraints.MinWidth = 270 11 | Font.Charset = DEFAULT_CHARSET 12 | Font.Color = clWindowText 13 | Font.Height = -11 14 | Font.Name = 'MS Sans Serif' 15 | Font.Style = [] 16 | Icon.Data = { 17 | 0000010001002020100000000000E80200001600000028000000200000004000 18 | 0000010004000000000080020000000000000000000000000000000000000000 19 | 000000008000008000000080800080000000800080008080000080808000C0C0 20 | C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 21 | 0000000000000000000000000000000000000000000000000000000000000000 22 | 0000000000000000000000000000000000000000000000000000000000000000 23 | 0000000000000000000000000000000000000000000000000000000000000000 24 | 0000000000000000000000000000000000000000000000000000000000000000 25 | 0000000000022000000000000000000000000000022222200000000000000000 26 | 0000000222222222200000000000000000000222222222222220000000000000 27 | 0002222222222222222220000000000002222222222222222222222000000002 28 | 2222222222222222222222222000022222222222222222222222222222200002 29 | 2222222222222222222222222000000002222222222222222222222000000000 30 | 0002222222222222222220000000000000000222222222222220000000000000 31 | 0000000222222222200000000000000000000000022222200000000000000000 32 | 0000000000022000000000000000000000000000000000000000000000000000 33 | 0000000000000000000000000000000000000000000000000000000000000000 34 | 0000000000000000000000000000000000000000000000000000000000000000 35 | 0000000000000000000000000000000000000000000000000000000000000000 36 | 000000000000000000000000000000000000000000000000000000000000FFFF 37 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFF8 38 | 1FFFFFE007FFFF8001FFFE00007FF800001FE000000780000001000000008000 39 | 0001E0000007F800001FFE00007FFF8001FFFFE007FFFFF81FFFFFFE7FFFFFFF 40 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} 41 | OldCreateOrder = False 42 | Position = poScreenCenter 43 | OnCreate = FormCreate 44 | DesignSize = ( 45 | 487 46 | 205) 47 | PixelsPerInch = 96 48 | TextHeight = 13 49 | object btPath: TButton 50 | Left = 0 51 | Top = 80 52 | Width = 91 53 | Height = 21 54 | Caption = 'Select path' 55 | Font.Charset = ANSI_CHARSET 56 | Font.Color = clWindowText 57 | Font.Height = -11 58 | Font.Name = 'Verdana' 59 | Font.Style = [fsBold] 60 | ParentFont = False 61 | TabOrder = 1 62 | OnClick = btPathClick 63 | end 64 | object leMapname: TLabeledEdit 65 | Left = 0 66 | Top = 30 67 | Width = 184 68 | Height = 24 69 | Anchors = [akLeft, akTop, akRight] 70 | EditLabel.Width = 78 71 | EditLabel.Height = 18 72 | EditLabel.Caption = 'Mapname' 73 | EditLabel.Font.Charset = ANSI_CHARSET 74 | EditLabel.Font.Color = clWindowText 75 | EditLabel.Font.Height = -16 76 | EditLabel.Font.Name = 'Verdana' 77 | EditLabel.Font.Style = [] 78 | EditLabel.ParentFont = False 79 | Font.Charset = ANSI_CHARSET 80 | Font.Color = clWindowText 81 | Font.Height = -13 82 | Font.Name = 'Verdana' 83 | Font.Style = [] 84 | LabelSpacing = 5 85 | MaxLength = 100 86 | ParentFont = False 87 | TabOrder = 0 88 | Text = 'Fill mapname here' 89 | OnChange = leMapnameChange 90 | end 91 | object lePath: TLabeledEdit 92 | Left = 100 93 | Top = 80 94 | Width = 381 95 | Height = 23 96 | EditLabel.Width = 32 97 | EditLabel.Height = 15 98 | EditLabel.Caption = 'lePath' 99 | EditLabel.Font.Charset = ANSI_CHARSET 100 | EditLabel.Font.Color = clWindowText 101 | EditLabel.Font.Height = -11 102 | EditLabel.Font.Name = 'Lucida Sans Unicode' 103 | EditLabel.Font.Style = [] 104 | EditLabel.ParentFont = False 105 | Font.Charset = ANSI_CHARSET 106 | Font.Color = clWindowText 107 | Font.Height = -11 108 | Font.Name = 'Lucida Sans Unicode' 109 | Font.Style = [] 110 | ParentFont = False 111 | TabOrder = 2 112 | end 113 | object leChunksizeX: TLabeledEdit 114 | Left = 0 115 | Top = 130 116 | Width = 61 117 | Height = 23 118 | EditLabel.Width = 63 119 | EditLabel.Height = 15 120 | EditLabel.Caption = 'ChunksizeX' 121 | EditLabel.Font.Charset = ANSI_CHARSET 122 | EditLabel.Font.Color = clWindowText 123 | EditLabel.Font.Height = -11 124 | EditLabel.Font.Name = 'Lucida Sans Unicode' 125 | EditLabel.Font.Style = [] 126 | EditLabel.ParentFont = False 127 | Font.Charset = ANSI_CHARSET 128 | Font.Color = clWindowText 129 | Font.Height = -11 130 | Font.Name = 'Lucida Sans Unicode' 131 | Font.Style = [] 132 | ParentFont = False 133 | TabOrder = 3 134 | Text = '12' 135 | end 136 | object leChunksizeY: TLabeledEdit 137 | Left = 70 138 | Top = 130 139 | Width = 61 140 | Height = 23 141 | EditLabel.Width = 63 142 | EditLabel.Height = 15 143 | EditLabel.Caption = 'ChunksizeY' 144 | EditLabel.Font.Charset = ANSI_CHARSET 145 | EditLabel.Font.Color = clWindowText 146 | EditLabel.Font.Height = -11 147 | EditLabel.Font.Name = 'Lucida Sans Unicode' 148 | EditLabel.Font.Style = [] 149 | EditLabel.ParentFont = False 150 | Font.Charset = ANSI_CHARSET 151 | Font.Color = clWindowText 152 | Font.Height = -11 153 | Font.Name = 'Lucida Sans Unicode' 154 | Font.Style = [] 155 | ParentFont = False 156 | TabOrder = 4 157 | Text = '30' 158 | end 159 | object leChunksizeZ: TLabeledEdit 160 | Left = 140 161 | Top = 130 162 | Width = 61 163 | Height = 23 164 | EditLabel.Width = 63 165 | EditLabel.Height = 15 166 | EditLabel.Caption = 'ChunksizeZ' 167 | EditLabel.Font.Charset = ANSI_CHARSET 168 | EditLabel.Font.Color = clWindowText 169 | EditLabel.Font.Height = -11 170 | EditLabel.Font.Name = 'Lucida Sans Unicode' 171 | EditLabel.Font.Style = [] 172 | EditLabel.ParentFont = False 173 | Font.Charset = ANSI_CHARSET 174 | Font.Color = clWindowText 175 | Font.Height = -11 176 | Font.Name = 'Lucida Sans Unicode' 177 | Font.Style = [] 178 | ParentFont = False 179 | TabOrder = 5 180 | Text = '10' 181 | end 182 | object bbOK: TBitBtn 183 | Left = 410 184 | Top = 170 185 | Width = 75 186 | Height = 25 187 | TabOrder = 6 188 | OnClick = bbOKClick 189 | Kind = bkOK 190 | end 191 | object bbClose: TBitBtn 192 | Left = 320 193 | Top = 170 194 | Width = 81 195 | Height = 25 196 | TabOrder = 7 197 | Kind = bkCancel 198 | end 199 | end 200 | -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/Spritesheet.txt: -------------------------------------------------------------------------------- 1 | Spritesheet.png 2 | format: RGBA8888 3 | filter: Linear,Linear 4 | repeat: none 5 | b6-0-2 6 | rotate: false 7 | xy: 484, 397 8 | size: 80, 120 9 | orig: 80, 120 10 | offset: 0, 0 11 | index: -1 12 | b35-0 13 | rotate: false 14 | xy: 673, 121 15 | size: 120, 154 16 | orig: 120, 154 17 | offset: 21, -1 18 | index: -1 19 | b6-0-1 20 | rotate: false 21 | xy: 323, 397 22 | size: 160, 80 23 | orig: 160, 80 24 | offset: 0, 0 25 | index: -1 26 | error 27 | rotate: false 28 | xy: 0, 872 29 | size: 160, 145 30 | orig: 160, 145 31 | offset: 0, 0 32 | index: -1 33 | b3-0-2 34 | rotate: false 35 | xy: 565, 121 36 | size: 80, 120 37 | orig: 80, 120 38 | offset: 0, 0 39 | index: -1 40 | b3-0-1 41 | rotate: false 42 | xy: 404, 121 43 | size: 160, 80 44 | orig: 160, 80 45 | offset: 0, 0 46 | index: -1 47 | b9-0-0 48 | rotate: false 49 | xy: 648, 518 50 | size: 80, 120 51 | orig: 80, 120 52 | offset: 0, 0 53 | index: -1 54 | e40-5 55 | rotate: false 56 | xy: 220, 695 57 | size: 42, 172 58 | orig: 42, 172 59 | offset: 63, -33 60 | index: -1 61 | b9-0-2 62 | rotate: false 63 | xy: 890, 518 64 | size: 80, 120 65 | orig: 80, 120 66 | offset: 0, 0 67 | index: -1 68 | b70-0 69 | rotate: false 70 | xy: 0, 518 71 | size: 154, 160 72 | orig: 154, 160 73 | offset: 6, 0 74 | index: -1 75 | b1-0-0 76 | rotate: false 77 | xy: 323, 0 78 | size: 80, 120 79 | orig: 80, 120 80 | offset: 0, 0 81 | index: -1 82 | b7-0-0 83 | rotate: false 84 | xy: 565, 397 85 | size: 80, 120 86 | orig: 80, 120 87 | offset: 0, 0 88 | index: -1 89 | b9-0-1 90 | rotate: false 91 | xy: 729, 518 92 | size: 160, 80 93 | orig: 160, 80 94 | offset: 0, 0 95 | index: -1 96 | e40-6 97 | rotate: false 98 | xy: 263, 695 99 | size: 54, 176 100 | orig: 54, 176 101 | offset: 52, -33 102 | index: -1 103 | b4-0-0 104 | rotate: false 105 | xy: 794, 121 106 | size: 80, 120 107 | orig: 80, 120 108 | offset: 0, 0 109 | index: -1 110 | b1-0-2 111 | rotate: false 112 | xy: 565, 0 113 | size: 80, 120 114 | orig: 80, 120 115 | offset: 0, 0 116 | index: -1 117 | b7-0-2 118 | rotate: false 119 | xy: 807, 397 120 | size: 80, 120 121 | orig: 80, 120 122 | offset: 0, 0 123 | index: -1 124 | e40-0 125 | rotate: false 126 | xy: 971, 518 127 | size: 52, 176 128 | orig: 52, 176 129 | offset: 54, -36 130 | index: -1 131 | b1-0-1 132 | rotate: false 133 | xy: 404, 0 134 | size: 160, 80 135 | orig: 160, 80 136 | offset: 0, 0 137 | index: -1 138 | b7-0-1 139 | rotate: false 140 | xy: 646, 397 141 | size: 160, 80 142 | orig: 160, 80 143 | offset: 0, 0 144 | index: -1 145 | b20-0-2 146 | rotate: false 147 | xy: 242, 121 148 | size: 80, 120 149 | orig: 80, 120 150 | offset: 0, 0 151 | index: -1 152 | b4-0-2 153 | rotate: false 154 | xy: 161, 276 155 | size: 80, 120 156 | orig: 80, 120 157 | offset: 0, 0 158 | index: -1 159 | e40-7 160 | rotate: false 161 | xy: 318, 695 162 | size: 68, 174 163 | orig: 68, 174 164 | offset: 46, -33 165 | index: -1 166 | b44-0-2 167 | rotate: false 168 | xy: 484, 276 169 | size: 80, 120 170 | orig: 80, 120 171 | offset: 0, 0 172 | index: -1 173 | b71-0 174 | rotate: false 175 | xy: 155, 518 176 | size: 84, 122 177 | orig: 84, 122 178 | offset: 38, -20 179 | index: -1 180 | b4-0-1 181 | rotate: false 182 | xy: 0, 276 183 | size: 160, 80 184 | orig: 160, 80 185 | offset: 0, 0 186 | index: -1 187 | b20-0-0 188 | rotate: false 189 | xy: 0, 121 190 | size: 80, 120 191 | orig: 80, 120 192 | offset: 0, 0 193 | index: -1 194 | e40-1 195 | rotate: false 196 | xy: 0, 695 197 | size: 40, 170 198 | orig: 40, 170 199 | offset: 55, -38 200 | index: -1 201 | b44-0-0 202 | rotate: false 203 | xy: 242, 276 204 | size: 80, 120 205 | orig: 80, 120 206 | offset: 0, 0 207 | index: -1 208 | b5-0-0 209 | rotate: false 210 | xy: 888, 276 211 | size: 80, 120 212 | orig: 80, 120 213 | offset: 0, 0 214 | index: -1 215 | b71-1 216 | rotate: false 217 | xy: 240, 518 218 | size: 84, 130 219 | orig: 84, 130 220 | offset: 38, -17 221 | index: -1 222 | e41-0 223 | rotate: false 224 | xy: 387, 695 225 | size: 160, 160 226 | orig: 160, 160 227 | offset: 0, 0 228 | index: -1 229 | b2-0-0 230 | rotate: false 231 | xy: 646, 0 232 | size: 80, 120 233 | orig: 80, 120 234 | offset: 0, 0 235 | index: -1 236 | b8-0-0 237 | rotate: false 238 | xy: 325, 518 239 | size: 80, 120 240 | orig: 80, 120 241 | offset: 0, 0 242 | index: -1 243 | b5-0-2 244 | rotate: false 245 | xy: 161, 397 246 | size: 80, 120 247 | orig: 80, 120 248 | offset: 0, 0 249 | index: -1 250 | b44-1-2 251 | rotate: false 252 | xy: 807, 276 253 | size: 80, 120 254 | orig: 80, 120 255 | offset: 0, 0 256 | index: -1 257 | b20-0-1 258 | rotate: false 259 | xy: 81, 121 260 | size: 160, 80 261 | orig: 160, 80 262 | offset: 0, 0 263 | index: -1 264 | e40-2 265 | rotate: false 266 | xy: 41, 695 267 | size: 54, 174 268 | orig: 54, 174 269 | offset: 52, -34 270 | index: -1 271 | b44-0-1 272 | rotate: false 273 | xy: 323, 276 274 | size: 160, 80 275 | orig: 160, 80 276 | offset: 0, 0 277 | index: -1 278 | b5-0-1 279 | rotate: false 280 | xy: 0, 397 281 | size: 160, 80 282 | orig: 160, 80 283 | offset: 0, 0 284 | index: -1 285 | b2-0-2 286 | rotate: false 287 | xy: 888, 0 288 | size: 80, 120 289 | orig: 80, 120 290 | offset: 0, 0 291 | index: -1 292 | b8-0-2 293 | rotate: false 294 | xy: 567, 518 295 | size: 80, 120 296 | orig: 80, 120 297 | offset: 0, 0 298 | index: -1 299 | e41-1 300 | rotate: false 301 | xy: 548, 695 302 | size: 160, 160 303 | orig: 160, 160 304 | offset: 0, 0 305 | index: -1 306 | b2-0-1 307 | rotate: false 308 | xy: 727, 0 309 | size: 160, 80 310 | orig: 160, 80 311 | offset: 0, 0 312 | index: -1 313 | b0-0-0 314 | rotate: false 315 | xy: 0, 0 316 | size: 80, 120 317 | orig: 80, 120 318 | offset: 0, 0 319 | index: -1 320 | b44-1-0 321 | rotate: false 322 | xy: 565, 276 323 | size: 80, 120 324 | orig: 80, 120 325 | offset: 0, 0 326 | index: -1 327 | b8-0-1 328 | rotate: false 329 | xy: 406, 518 330 | size: 160, 80 331 | orig: 160, 80 332 | offset: 0, 0 333 | index: -1 334 | b34-0 335 | rotate: false 336 | xy: 646, 121 337 | size: 26, 42 338 | orig: 26, 42 339 | offset: 70, -78 340 | index: -1 341 | e42-0 342 | rotate: false 343 | xy: 709, 695 344 | size: 160, 80 345 | orig: 160, 80 346 | offset: 0, 0 347 | index: -1 348 | e40-3 349 | rotate: false 350 | xy: 96, 695 351 | size: 68, 172 352 | orig: 68, 172 353 | offset: 46, -32 354 | index: -1 355 | b0-0-2 356 | rotate: false 357 | xy: 242, 0 358 | size: 80, 120 359 | orig: 80, 120 360 | offset: 0, 0 361 | index: -1 362 | b0-0-1 363 | rotate: false 364 | xy: 81, 0 365 | size: 160, 80 366 | orig: 160, 80 367 | offset: 0, 0 368 | index: -1 369 | b44-1-1 370 | rotate: false 371 | xy: 646, 276 372 | size: 160, 80 373 | orig: 160, 80 374 | offset: 0, 0 375 | index: -1 376 | b6-0-0 377 | rotate: false 378 | xy: 242, 397 379 | size: 80, 120 380 | orig: 80, 120 381 | offset: 0, 0 382 | index: -1 383 | b3-0-0 384 | rotate: false 385 | xy: 323, 121 386 | size: 80, 120 387 | orig: 80, 120 388 | offset: 0, 0 389 | index: -1 390 | e40-4 391 | rotate: false 392 | xy: 165, 695 393 | size: 54, 174 394 | orig: 54, 174 395 | offset: 53, -34 396 | index: -1 397 | -------------------------------------------------------------------------------- /com/BombingGames/Game/CustomGameController.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.Game; 2 | 3 | import com.BombingGames.EngineCore.Controller; 4 | import static com.BombingGames.EngineCore.Controller.getLightengine; 5 | import static com.BombingGames.EngineCore.Controller.getMap; 6 | import com.BombingGames.EngineCore.Gameobjects.AbstractCharacter; 7 | import com.BombingGames.EngineCore.Gameobjects.AbstractEntity; 8 | import com.BombingGames.EngineCore.Gameobjects.Block; 9 | import com.BombingGames.EngineCore.GameplayScreen; 10 | import com.BombingGames.EngineCore.Map.Chunk; 11 | import com.BombingGames.EngineCore.Map.Coordinate; 12 | import com.BombingGames.EngineCore.Map.Map; 13 | import com.BombingGames.EngineCore.Map.Minimap; 14 | import com.BombingGames.EngineCore.WECamera; 15 | import com.BombingGames.MainMenu.MainMenuScreen; 16 | import com.BombingGames.WurfelEngine; 17 | import com.badlogic.gdx.Gdx; 18 | import com.badlogic.gdx.Input; 19 | import com.badlogic.gdx.InputProcessor; 20 | 21 | /** 22 | *The CustomGameController is for the game code. Put engine code into Controller. 23 | * @author Benedikt 24 | */ 25 | public class CustomGameController extends Controller { 26 | 27 | @Override 28 | public void init(){ 29 | //Chunk.setGenerator(0); 30 | super.init(); 31 | 32 | AbstractCharacter player = (AbstractCharacter) AbstractEntity.getInstance( 33 | 40, 34 | 0, 35 | Coordinate.getMapCenter(Map.getBlocksZ()*Block.GAMEDIMENSION) 36 | ); 37 | player.setControls("WASD"); 38 | setPlayer(player); 39 | 40 | addCamera( 41 | new WECamera( 42 | getPlayer(), 43 | 0, //left 44 | 0, //top 45 | Gdx.graphics.getWidth(), //width 46 | Gdx.graphics.getHeight()//height 47 | ) 48 | ); 49 | 50 | // addCamera( 51 | // new WECamera( 52 | // Gdx.graphics.getWidth()/2, //left 53 | // 0, //top 54 | // Gdx.graphics.getWidth()/2, //width 55 | // Gdx.graphics.getHeight()//height 56 | // ) 57 | // ); 58 | 59 | setMinimap( 60 | new Minimap(this, getCameras().get(0), Gdx.graphics.getWidth() - 400,10) 61 | ); 62 | 63 | useLightEngine(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2); 64 | 65 | 66 | Gdx.input.setInputProcessor(new InputListener()); 67 | } 68 | 69 | 70 | @Override 71 | public void update(float delta){ 72 | //get input and do actions 73 | Input input = Gdx.input; 74 | 75 | if (!GameplayScreen.msgSystem().isListeningForInput()) { 76 | 77 | //walk 78 | if (getPlayer() != null){ 79 | if ("WASD".equals(getPlayer().getControls())) 80 | getPlayer().walk( 81 | input.isKeyPressed(Input.Keys.W), 82 | input.isKeyPressed(Input.Keys.S), 83 | input.isKeyPressed(Input.Keys.A), 84 | input.isKeyPressed(Input.Keys.D), 85 | .25f+(input.isKeyPressed(Input.Keys.SHIFT_LEFT)? 0.75f: 0) 86 | ); 87 | if (input.isKeyPressed(Input.Keys.SPACE)) getPlayer().jump(); 88 | } else { 89 | //update camera position 90 | WECamera camera = getCameras().get(0); 91 | camera.setOutputPosY( camera.getOutputPosY() 92 | - (input.isKeyPressed(Input.Keys.W)? 3: 0) 93 | + (input.isKeyPressed(Input.Keys.S)? 3: 0) 94 | ); 95 | camera.setOutputPosX( camera.getOutputPosX() 96 | + (input.isKeyPressed(Input.Keys.D)? 3: 0) 97 | - (input.isKeyPressed(Input.Keys.A)? 3: 0) 98 | ); 99 | } 100 | } 101 | 102 | super.update(delta); 103 | } 104 | 105 | private class InputListener implements InputProcessor { 106 | 107 | @Override 108 | public boolean keyDown(int keycode) { 109 | if (!GameplayScreen.msgSystem().isListeningForInput()) { 110 | //toggle minimap 111 | if (keycode == Input.Keys.M){ 112 | getMinimap().toggleVisibility(); 113 | } 114 | //toggle fullscreen 115 | if (keycode == Input.Keys.F){ 116 | WurfelEngine.setFullscreen(!WurfelEngine.isFullscreen()); 117 | Gdx.app.log("DEBUG","Set to fullscreen:"+!WurfelEngine.isFullscreen()); 118 | } 119 | 120 | //toggle eathquake 121 | if (keycode == Input.Keys.E){ //((ExplosiveBarrel)(getMapData(Chunk.getBlocksX()+5, Chunk.getBlocksY()+5, 3))).explode(); 122 | getMap().earthquake(5000); 123 | } 124 | 125 | //pause 126 | //if (input.isKeyDown(Input.Keys.P)) Gdx.app.setPaused(true); 127 | //time is set 0 but the game keeps running 128 | if (keycode == Input.Keys.P) { 129 | setTimespeed(0); 130 | } 131 | 132 | //reset zoom 133 | if (keycode == Input.Keys.Z) { 134 | getCameras().get(0).setZoom(1); 135 | GameplayScreen.msgSystem().add("Zoom reset"); 136 | } 137 | 138 | //show/hide light engine 139 | if (keycode == Input.Keys.L) { 140 | if (getLightengine() != null) getLightengine().RenderData(!getLightengine().isRenderingData()); 141 | } 142 | 143 | if (keycode == Input.Keys.T) { 144 | setTimespeed(); 145 | } 146 | 147 | if (keycode == Input.Keys.ESCAPE)// Gdx.app.exit(); 148 | WurfelEngine.getInstance().setScreen(new MainMenuScreen()); 149 | } 150 | 151 | //toggle input for msgSystem 152 | if (keycode == Input.Keys.ENTER) 153 | GameplayScreen.msgSystem().listenForInput(!GameplayScreen.msgSystem().isListeningForInput()); 154 | 155 | return true; 156 | } 157 | 158 | @Override 159 | public boolean keyUp(int keycode) { 160 | return false; 161 | } 162 | 163 | @Override 164 | public boolean keyTyped(char character) { 165 | GameplayScreen.msgSystem().getInput(character); 166 | return true; 167 | } 168 | 169 | @Override 170 | public boolean touchDown(int screenX, int screenY, int pointer, int button) { 171 | return false; 172 | } 173 | 174 | @Override 175 | public boolean touchUp(int screenX, int screenY, int pointer, int button) { 176 | return false; 177 | } 178 | 179 | @Override 180 | public boolean touchDragged(int screenX, int screenY, int pointer) { 181 | return false; 182 | } 183 | 184 | @Override 185 | public boolean mouseMoved(int screenX, int screenY) { 186 | return false; 187 | } 188 | 189 | @Override 190 | public boolean scrolled(int amount) { 191 | getCameras().get(0).setZoom(getCameras().get(0).getZoom() - amount/100f); 192 | 193 | GameplayScreen.msgSystem().add("Zoom: " + getCameras().get(0).getZoom()); 194 | return true; 195 | } 196 | 197 | } 198 | } 199 | -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Controller.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore; 2 | 3 | import com.BombingGames.EngineCore.Gameobjects.AbstractCharacter; 4 | import com.BombingGames.EngineCore.Gameobjects.AbstractEntity; 5 | import com.BombingGames.EngineCore.Gameobjects.AbstractGameObject; 6 | import com.BombingGames.EngineCore.Gameobjects.Block; 7 | import com.BombingGames.EngineCore.LightEngine.LightEngine; 8 | import com.BombingGames.EngineCore.Map.Cell; 9 | import com.BombingGames.EngineCore.Map.Coordinate; 10 | import com.BombingGames.EngineCore.Map.Map; 11 | import com.BombingGames.EngineCore.Map.Minimap; 12 | import com.BombingGames.MainMenu.MainMenuScreen; 13 | import com.badlogic.gdx.Gdx; 14 | import java.util.ArrayList; 15 | import javax.swing.JFrame; 16 | import javax.swing.JOptionPane; 17 | 18 | /** 19 | *A controller manages the map and the game data. 20 | * @author Benedikt Vogler 21 | */ 22 | public class Controller { 23 | private final boolean ENABLECHUNKSWITCH = true; 24 | private static LightEngine lightEngine; 25 | private static Map map; 26 | private static boolean recalcRequested; 27 | 28 | private View view; 29 | 30 | private final ArrayList cameras = new ArrayList(6); 31 | private Minimap minimap; 32 | /** The speed of time. 1 = real time;*/ 33 | private float timespeed = 1; 34 | private AbstractCharacter player; 35 | 36 | /** 37 | * This method works like a constructor. Everything is loaded. Set you custom chunk generator before calling this method. 38 | */ 39 | public void init(){ 40 | newMap(); 41 | 42 | recalcRequested = true; 43 | } 44 | 45 | /** 46 | * Main method which is called every refresh. 47 | * @param delta time since last call 48 | */ 49 | public void update(float delta) { 50 | delta *= timespeed; 51 | if (lightEngine != null) lightEngine.update(delta); 52 | 53 | //update the log 54 | GameplayScreen.msgSystem().update(delta); 55 | 56 | if (ENABLECHUNKSWITCH && cameras.size() >0){ 57 | //earth to right 58 | if (cameras.get(0).getLeftBorder() <= 0) 59 | map.setCenter(3); 60 | else //earth to the left 61 | if (cameras.get(0).getRightBorder() >= Map.getBlocksX()-1) 62 | map.setCenter(5); 63 | 64 | //scroll up, earth down 65 | if (cameras.get(0).getTopBorder() <= 0) 66 | map.setCenter(1); 67 | else //scroll down, earth up 68 | if (cameras.get(0).getBottomBorder() >= Map.getBlocksY()-1) 69 | map.setCenter(7); 70 | } 71 | 72 | //update every static update method 73 | AbstractGameObject.updateStaticUpdates(delta); 74 | 75 | //update every block on the map 76 | Cell[][][] mapdata = map.getData(); 77 | for (int x=0; x < Map.getBlocksX(); x++) 78 | for (int y=0; y < Map.getBlocksY(); y++) 79 | for (int z=0; z < Map.getBlocksZ(); z++) 80 | mapdata[x][y][z].getBlock().update(delta); 81 | 82 | //update every entity 83 | for (AbstractEntity entity : map.getEntitys()) 84 | entity.update(delta); 85 | 86 | for (int i = map.getEntitys().size()-1; i >= 0; i--) { 87 | if (map.getEntitys().get(i).shouldBeDestroyed()) 88 | map.getEntitys().remove(i); 89 | } 90 | 91 | for (WECamera camera : cameras) { 92 | camera.update(); 93 | } 94 | 95 | //recalculates the light if requested 96 | recalcIfRequested(); 97 | } 98 | 99 | 100 | /** 101 | * Informs the map that a recalc is requested. It will do it in the next update. This method to limit update calls to to per frame 102 | */ 103 | public static void requestRecalc(){ 104 | Gdx.app.log("DEBUG", "A recalc was requested."); 105 | recalcRequested = true; 106 | } 107 | 108 | /** 109 | * When the recalc was requested it calls raytracing and light recalculing. This method should be called every update. 110 | * Request a recalc with reuqestRecalc(). 111 | */ 112 | public void recalcIfRequested(){ 113 | if (recalcRequested) { 114 | Gdx.app.log("DEBUG", "Recalcing."); 115 | WECamera.raytracing(); 116 | LightEngine.calcSimpleLight(); 117 | if (minimap != null) minimap.update(); 118 | recalcRequested = false; 119 | } 120 | } 121 | 122 | /** 123 | * Creates a new Map. 124 | */ 125 | public static void newMap(){ 126 | map = new Map(!MainMenuScreen.shouldLoadMap(),-45); 127 | map.fillWithBlocks(); 128 | } 129 | 130 | /** 131 | * Returns the currently loaded map. 132 | * @return the map 133 | */ 134 | public static Map getMap() { 135 | return map; 136 | } 137 | 138 | 139 | /** 140 | * Returns the player 141 | * @return the player 142 | */ 143 | public AbstractCharacter getPlayer() { 144 | return player; 145 | } 146 | 147 | /** 148 | * Sets a player 149 | * @param player 150 | */ 151 | public void setPlayer(AbstractCharacter player) { 152 | this.player = player; 153 | player.exist(); 154 | } 155 | 156 | /** 157 | * Get the neighbour block to a side 158 | * @param coords 159 | * @param side the id of the side 160 | * @return the neighbour block 161 | */ 162 | public static Block getNeighbourBlock(Coordinate coords, int side){ 163 | return Controller.getMap().getDataSafe(Coordinate.neighbourSidetoCoords(coords, side)); 164 | } 165 | 166 | 167 | 168 | /** 169 | * Returns the minimap. 170 | * @return 171 | */ 172 | public Minimap getMinimap() { 173 | return minimap; 174 | } 175 | 176 | /** 177 | * Returns a camera. 178 | * @return The virtual cameras rendering the scene 179 | */ 180 | protected ArrayList getCameras() { 181 | return cameras; 182 | } 183 | 184 | /** 185 | * Add a camera. 186 | * @param camera 187 | */ 188 | protected void addCamera(WECamera camera) { 189 | this.cameras.add(camera); 190 | } 191 | 192 | /** 193 | * Set the minimap- 194 | * @param minimap 195 | */ 196 | protected void setMinimap(Minimap minimap) { 197 | this.minimap = minimap; 198 | } 199 | 200 | /** 201 | * 202 | * @return 203 | */ 204 | public static LightEngine getLightengine() { 205 | return lightEngine; 206 | } 207 | 208 | /** 209 | * 210 | * @return 211 | */ 212 | public float getTimespeed() { 213 | return timespeed; 214 | } 215 | 216 | /** 217 | * 218 | */ 219 | public void setTimespeed() { 220 | JFrame frame = new JFrame("InputDialog Example #2"); 221 | try { 222 | this.timespeed = Float.parseFloat(JOptionPane.showInputDialog(frame, "Use dot as separator.", "Set the speed of time", JOptionPane.QUESTION_MESSAGE)); 223 | } catch(NumberFormatException e) { 224 | this.timespeed = 1; 225 | Gdx.app.log("Error", "Invalid nubmer entered: "+e.toString()); 226 | } catch(NullPointerException e){ 227 | Gdx.app.log("DEBUG", "Canceled: "+e.toString()); 228 | } 229 | } 230 | 231 | /** 232 | * 233 | * @param timespeed 234 | */ 235 | public void setTimespeed(float timespeed) { 236 | this.timespeed = timespeed; 237 | } 238 | 239 | /** 240 | * Set the coressponging main view. 241 | * 242 | * @param view new value of view 243 | */ 244 | public void setView(View view) { 245 | this.view = view; 246 | } 247 | 248 | /** 249 | *Returns the coressponging main view. 250 | * @return 251 | */ 252 | public View getView() { 253 | return view; 254 | } 255 | 256 | /** 257 | * Use the light engine 258 | * @param xPos the x position of the diagrams position 259 | * @param yPos the y position of the diagrams position 260 | */ 261 | public static void useLightEngine(int xPos, int yPos) { 262 | Controller.lightEngine = new LightEngine(xPos, yPos); 263 | } 264 | } -------------------------------------------------------------------------------- /com/BombingGames/EngineCore/Gameobjects/AbstractEntity.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.EngineCore.Gameobjects; 2 | 3 | import com.BombingGames.EngineCore.Controller; 4 | import com.BombingGames.EngineCore.Map.Coordinate; 5 | import com.BombingGames.EngineCore.Map.Map; 6 | 7 | /** 8 | *An entity is a game object wich is self aware that means it knows it's position. 9 | * @author Benedikt 10 | */ 11 | public abstract class AbstractEntity extends AbstractGameObject implements IsSelfAware { 12 | /** 13 | * 14 | */ 15 | public static final char CATEGORY = 'e'; 16 | 17 | /**Containts the names of the objects. index=id*/ 18 | public static final String[] NAMELIST = new String[OBJECTTYPESCOUNT]; 19 | 20 | /** A list containing the offset of the objects. */ 21 | public static final int[][][] OFFSET = new int[OBJECTTYPESCOUNT][VALUESCOUNT][2]; 22 | 23 | private Coordinate coords;//the position in the map-grid 24 | private float positionX = 0; //the horizontal offset 25 | private float positionY = 0; 26 | 27 | static { 28 | NAMELIST[40] = "player"; 29 | OFFSET[40][0][0] = 54-80; 30 | OFFSET[40][0][1] = 37-40; 31 | OFFSET[40][1][0] = 55-80; 32 | OFFSET[40][1][1] = 38-40; 33 | OFFSET[40][2][0] = 53-80; 34 | OFFSET[40][2][1] = 35-40; 35 | OFFSET[40][3][0] = 46-80; 36 | OFFSET[40][3][1] = 33-40; 37 | OFFSET[40][4][0] = 53-80; 38 | OFFSET[40][4][1] = 35-40; 39 | OFFSET[40][5][0] = 64-80; 40 | OFFSET[40][5][1] = 33-40; 41 | OFFSET[40][6][0] = 53-80; 42 | OFFSET[40][6][1] = 33-40; 43 | OFFSET[40][7][0] = 46-80; 44 | OFFSET[40][7][1] = 33-40; 45 | NAMELIST[41] = "smoke test"; 46 | OFFSET[42][0][0] = 0-80; 47 | OFFSET[42][0][1] = 80-40; 48 | NAMELIST[42] = "character shadow"; 49 | } 50 | 51 | private boolean destroy; 52 | 53 | /** 54 | * Create an abstractEntity. You should use Block.getInstance(int) 55 | * @param id 56 | * @see com.BombingGames.Game.Gameobjects.Block#getInstance(int) 57 | */ 58 | protected AbstractEntity(int id){ 59 | super(id,0); 60 | } 61 | 62 | /** 63 | * Create an entity through this factory method.. 64 | * @param id the object id of the entity. 65 | * @param value The value at start. 66 | * @param coords The coordiantes where you place it. 67 | * @return the entity. 68 | */ 69 | public static AbstractEntity getInstance(int id, int value, Coordinate coords){ 70 | AbstractEntity entity; 71 | //define the default SideSprites 72 | switch (id){ 73 | case 40: 74 | entity = new Player(id, coords); 75 | break; 76 | case 41: //explosion 77 | entity = new AnimatedEntity( 78 | id, 79 | value, 80 | new int[]{700,2000}, 81 | true, 82 | false 83 | ); 84 | break; 85 | case 42: entity = new CharacterShadow(id); 86 | break; 87 | 88 | default: entity = new SimpleEntity(id); 89 | } 90 | 91 | entity.setCoords(coords); 92 | entity.setValue(value); 93 | return entity; 94 | } 95 | 96 | @Override 97 | public int getDepth(Coordinate coords){ 98 | return (int) ( 99 | coords.getRelY() * (SCREEN_DEPTH+1)//Y 100 | + getPositionY() 101 | + coords.getHeight()/Math.sqrt(2)//Z 102 | + (getDimensionZ() - 1) * GAMEDIMENSION/6/Math.sqrt(2) 103 | ); 104 | } 105 | 106 | //IsSelfAware implementation 107 | @Override 108 | public Coordinate getCoords() { 109 | return this.coords; 110 | } 111 | 112 | @Override 113 | public void setCoords(Coordinate coords) { 114 | this.coords = coords; 115 | } 116 | 117 | 118 | /** 119 | * 120 | * @param height 121 | */ 122 | public void setHeight(float height) { 123 | coords.setHeight(height); 124 | } 125 | 126 | 127 | 128 | /** 129 | * Is the entity laying/standing on the ground? 130 | * @return true when on the ground 131 | */ 132 | public boolean onGround(){ 133 | if (getCoords().getHeight() <= 0) return true; //if entity is under the map 134 | 135 | //check if one pixel deeper is on ground. 136 | int z = (int) ((getCoords().getHeight()-1)/GAMEDIMENSION); 137 | if (z > Map.getBlocksZ()-1) z = Map.getBlocksZ()-1; 138 | 139 | return new Coordinate(coords.getRelX(), coords.getRelY(), z, true).getBlock().isObstacle(); 140 | } 141 | 142 | 143 | 144 | /** 145 | * Get the screen x-position where the object is rendered without regarding the camera. 146 | * @param coords this parameter get's ignored because entitys know their own coordinates. You can pass null here. 147 | * @return The screen X-position in pixels. 148 | */ 149 | @Override 150 | public int get2DPosX(Coordinate coords) { 151 | return this.coords.getRelX() * SCREEN_WIDTH //x-coordinate multiplied by it's dimension in this direction 152 | + (this.coords.getRelY() % 2) * SCREEN_DEPTH //y-coordinate multiplied by it's dimension in this direction 153 | + (int) (positionX); //add the objects position inside this coordinate 154 | } 155 | 156 | /** 157 | * Get the 2D-projection y-position where the object is rendered without regarding the camera. 158 | * @param coords this parameter get's ignored because entitys know their own coordinates. You can pass null here. 159 | * @return The 2D-projection Y-position in pixels. 160 | */ 161 | @Override 162 | public int get2DPosY(Coordinate coords) { 163 | return this.coords.getRelY() * SCREEN_DEPTH2 //y-coordinate * the tile's size 164 | + (int) (positionY / 2) //add the objects position inside this coordinate 165 | - (int) (this.coords.getHeight() / Math.sqrt(2)); //take z-axis shortening into account 166 | } 167 | 168 | /** 169 | * add this entity to the map-> let it exist 170 | */ 171 | public void exist(){ 172 | Controller.getMap().getEntitys().add(this); 173 | } 174 | 175 | /** 176 | * Returns the side with the current position. 177 | * @return 178 | * @see com.BombingGames.Game.Blocks.Block#getSideNumb(int, int) 179 | */ 180 | protected int getSideNumb() { 181 | return Coordinate.getNeighbourSide(positionX, positionY); 182 | } 183 | 184 | /** 185 | *The positon coordiante system has it's center in the top left corner of the cell, like the offset. 186 | * @return 187 | */ 188 | public float getPositionX() { 189 | return positionX; 190 | } 191 | 192 | /** 193 | *The positon coordiante system has it's center in the top left corner of the cell, like the offset. 194 | * @param offsetX 195 | */ 196 | public void setPositionX(float offsetX) { 197 | this.positionX = offsetX; 198 | } 199 | 200 | /** 201 | *The positon coordiante system has it's center in the top left corner of the cell, like the offset. 202 | * @return 203 | */ 204 | public float getPositionY() { 205 | return positionY; 206 | } 207 | 208 | /** 209 | *The positon coordiante system has it's center in the top left corner of the cell, like the offset. 210 | * @param offsetY 211 | */ 212 | public void setPositionY(float offsetY) { 213 | this.positionY = offsetY; 214 | } 215 | 216 | /** 217 | * 218 | * @return 219 | */ 220 | @Override 221 | public char getCategory() { 222 | return CATEGORY; 223 | } 224 | 225 | @Override 226 | public String getName() { 227 | return NAMELIST[getId()]; 228 | } 229 | 230 | /** 231 | * 232 | * @return 233 | */ 234 | @Override 235 | public int getOffsetX() { 236 | return OFFSET[getId()][getValue()][0]; 237 | } 238 | 239 | /** 240 | * 241 | * @return 242 | */ 243 | @Override 244 | public int getOffsetY() { 245 | return OFFSET[getId()][getValue()][1]; 246 | } 247 | 248 | /** 249 | * Deletes the object from the map. The opposite to exist(); 250 | */ 251 | public void destroy(){ 252 | destroy=true; 253 | } 254 | 255 | /** 256 | * 257 | * @return 258 | */ 259 | public boolean shouldBeDestroyed() { 260 | return destroy; 261 | } 262 | } -------------------------------------------------------------------------------- /com/BombingGames/Game/Blockimages/Spritesheet prelit.tps: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fileFormatVersion 5 | 1 6 | variation 7 | main 8 | verbose 9 | 10 | autoSDSettings 11 | 12 | allowRotation 13 | 14 | quiet 15 | 16 | premultiplyAlpha 17 | 18 | shapeDebug 19 | 20 | dpi 21 | 72 22 | dataFormat 23 | slick2d 24 | textureFileName 25 | Spritesheet.png 26 | flipPVR 27 | 28 | ditherType 29 | NearestNeighbour 30 | backgroundColor 31 | 0 32 | libGdx 33 | 34 | filtering 35 | 36 | x 37 | Linear 38 | y 39 | Linear 40 | 41 | 42 | shapePadding 43 | 1 44 | jpgQuality 45 | 80 46 | pngOptimizationLevel 47 | 0 48 | textureSubPath 49 | 50 | textureFormat 51 | png 52 | borderPadding 53 | 0 54 | maxTextureSize 55 | 56 | width 57 | 2048 58 | height 59 | 2048 60 | 61 | fixedTextureSize 62 | 63 | width 64 | -1 65 | height 66 | -1 67 | 68 | reduceBorderArtifacts 69 | 70 | algorithmSettings 71 | 72 | algorithm 73 | Basic 74 | freeSizeMode 75 | Best 76 | sizeConstraints 77 | POT 78 | forceSquared 79 | 80 | forceWordAligned 81 | 82 | maxRects 83 | 84 | heuristic 85 | Best 86 | 87 | basic 88 | 89 | sortBy 90 | Name 91 | order 92 | Ascending 93 | 94 | 95 | andEngine 96 | 97 | minFilter 98 | Linear 99 | packageName 100 | Texture 101 | javaFileName 102 | SideSprite.java 103 | wrap 104 | 105 | s 106 | Clamp 107 | t 108 | Clamp 109 | 110 | magFilter 111 | MagLinear 112 | 113 | dataFileName 114 | Spritesheet.def 115 | multiPack 116 | 117 | mainExtension 118 | 119 | forceIdenticalLayout 120 | 121 | outputFormat 122 | RGBA8888 123 | contentProtection 124 | 125 | key 126 | 127 | 128 | autoAliasEnabled 129 | 130 | trimSpriteNames 131 | 132 | globalSpriteSettings 133 | 134 | scale 135 | 1 136 | scaleMode 137 | Smooth 138 | innerPadding 139 | 0 140 | extrude 141 | 0 142 | trimThreshold 143 | 1 144 | trimMode 145 | CropKeepPos 146 | heuristicMask 147 | 148 | 149 | fileList 150 | 151 | sprites prelit/b0-0-0.png 152 | sprites prelit/b0-1-0.png 153 | sprites prelit/b0-2-0.png 154 | sprites prelit/b1-0-0.png 155 | sprites prelit/b1-0-1.png 156 | sprites prelit/b1-0-2.png 157 | sprites prelit/b2-0-0.png 158 | sprites prelit/b2-0-1.png 159 | sprites prelit/b2-0-2.png 160 | sprites prelit/b3-0-0.png 161 | sprites prelit/b3-0-1.png 162 | sprites prelit/b3-0-2.png 163 | sprites prelit/b4-0-0.png 164 | sprites prelit/b4-0-1.png 165 | sprites prelit/b4-0-2.png 166 | sprites prelit/b5-0-0.png 167 | sprites prelit/b5-0-1.png 168 | sprites prelit/b5-0-2.png 169 | sprites prelit/b6-0-0.png 170 | sprites prelit/b6-0-1.png 171 | sprites prelit/b6-0-2.png 172 | sprites prelit/b7-0-0.png 173 | sprites prelit/b7-0-1.png 174 | sprites prelit/b7-0-2.png 175 | sprites prelit/b8-0-0.png 176 | sprites prelit/b8-0-1.png 177 | sprites prelit/b8-0-2.png 178 | sprites prelit/b9-0-0.png 179 | sprites prelit/b9-0-1.png 180 | sprites prelit/b9-0-2.png 181 | sprites prelit/b20-0-0.png 182 | sprites prelit/b20-0-1.png 183 | sprites prelit/b20-0-2.png 184 | sprites prelit/b34-0.png 185 | sprites prelit/b35-0.png 186 | sprites prelit/b70-0.png 187 | sprites prelit/b71-0.png 188 | sprites prelit/e40-0.png 189 | sprites prelit/e40-1.png 190 | sprites prelit/e40-2.png 191 | sprites prelit/e40-3.png 192 | sprites prelit/e40-4.png 193 | sprites prelit/e40-5.png 194 | sprites prelit/e40-6.png 195 | sprites prelit/e40-7.png 196 | sprites prelit/e41-0.png 197 | sprites prelit/e41-1.png 198 | 199 | ignoreFileList 200 | 201 | replaceList 202 | 203 | ignoredWarnings 204 | 205 | commonDivisorX 206 | 1 207 | commonDivisorY 208 | 1 209 | 210 | 211 | -------------------------------------------------------------------------------- /com/BombingGames/Game/ExplosivesDemoController.java: -------------------------------------------------------------------------------- 1 | package com.BombingGames.Game; 2 | 3 | import com.BombingGames.EngineCore.Controller; 4 | import static com.BombingGames.EngineCore.Controller.getLightengine; 5 | import static com.BombingGames.EngineCore.Controller.getMap; 6 | import com.BombingGames.EngineCore.Gameobjects.AbstractCharacter; 7 | import com.BombingGames.EngineCore.Gameobjects.AbstractEntity; 8 | import com.BombingGames.EngineCore.Gameobjects.Block; 9 | import com.BombingGames.EngineCore.Gameobjects.ExplosiveBarrel; 10 | import com.BombingGames.EngineCore.GameplayScreen; 11 | import com.BombingGames.EngineCore.Map.Chunk; 12 | import com.BombingGames.EngineCore.Map.Coordinate; 13 | import com.BombingGames.EngineCore.Map.Map; 14 | import com.BombingGames.EngineCore.Map.Minimap; 15 | import com.BombingGames.EngineCore.WECamera; 16 | import com.BombingGames.MainMenu.MainMenuScreen; 17 | import com.BombingGames.WurfelEngine; 18 | import com.badlogic.gdx.Gdx; 19 | import com.badlogic.gdx.Input; 20 | import com.badlogic.gdx.InputProcessor; 21 | 22 | /** 23 | *The CustomGameController is for the game code. Put engine code into Controller. 24 | * @author Benedikt 25 | */ 26 | public class ExplosivesDemoController extends Controller { 27 | 28 | @Override 29 | public void init(){ 30 | Chunk.setGenerator(4); 31 | super.init(); 32 | 33 | AbstractCharacter player = (AbstractCharacter) AbstractEntity.getInstance( 34 | 40, 35 | 0, 36 | Coordinate.getMapCenter(Map.getBlocksZ()*Block.GAMEDIMENSION) 37 | ); 38 | player.setControls("WASD"); 39 | setPlayer(player); 40 | 41 | addCamera( 42 | new WECamera( 43 | getPlayer(), 44 | 0, //left 45 | 0, //top 46 | Gdx.graphics.getWidth(), //width 47 | Gdx.graphics.getHeight()//height 48 | ) 49 | ); 50 | 51 | // addCamera( 52 | // new WECamera( 53 | // Gdx.graphics.getWidth()/2, //left 54 | // 0, //top 55 | // Gdx.graphics.getWidth()/2, //width 56 | // Gdx.graphics.getHeight()//height 57 | // ) 58 | // ); 59 | 60 | setMinimap( 61 | new Minimap(this, getCameras().get(0), Gdx.graphics.getWidth() - 400,10) 62 | ); 63 | 64 | useLightEngine(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2); 65 | 66 | Gdx.input.setInputProcessor(new InputListener()); 67 | } 68 | 69 | 70 | @Override 71 | public void update(float delta){ 72 | //get input and do actions 73 | Input input = Gdx.input; 74 | 75 | if (!GameplayScreen.msgSystem().isListeningForInput()) { 76 | if (input.isKeyPressed(Input.Keys.ESCAPE)) WurfelEngine.getInstance().setScreen(new MainMenuScreen()); 77 | 78 | 79 | //walk 80 | if (getPlayer() != null){ 81 | if ("WASD".equals(getPlayer().getControls())) 82 | getPlayer().walk( 83 | input.isKeyPressed(Input.Keys.W), 84 | input.isKeyPressed(Input.Keys.S), 85 | input.isKeyPressed(Input.Keys.A), 86 | input.isKeyPressed(Input.Keys.D), 87 | .25f+(input.isKeyPressed(Input.Keys.SHIFT_LEFT)? 0.75f: 0) 88 | ); 89 | if (input.isKeyPressed(Input.Keys.SPACE)) getPlayer().jump(); 90 | } else { 91 | //update camera position 92 | WECamera camera = getCameras().get(0); 93 | camera.setOutputPosY( camera.getOutputPosY() 94 | - (input.isKeyPressed(Input.Keys.W)? 3: 0) 95 | + (input.isKeyPressed(Input.Keys.S)? 3: 0) 96 | ); 97 | camera.setOutputPosX( camera.getOutputPosX() 98 | + (input.isKeyPressed(Input.Keys.D)? 3: 0) 99 | - (input.isKeyPressed(Input.Keys.A)? 3: 0) 100 | ); 101 | } 102 | 103 | } else { 104 | //fetch input and write it down 105 | //to-do! 106 | //Gdx.input.getTextInput(new textInput(), "Überschrift", "test"); 107 | //TextField textfield = new TextField("enter text", new Skin()); 108 | } 109 | 110 | super.update(delta); 111 | } 112 | 113 | private class InputListener implements InputProcessor { 114 | 115 | @Override 116 | public boolean keyDown(int keycode) { 117 | if (!GameplayScreen.msgSystem().isListeningForInput()) { 118 | //toggle minimap 119 | if (keycode == Input.Keys.M){ 120 | GameplayScreen.msgSystem().add("Minimap toggled to: "+ getMinimap().toggleVisibility()); 121 | } 122 | //toggle fullscreen 123 | if (keycode == Input.Keys.F){ 124 | WurfelEngine.setFullscreen(!WurfelEngine.isFullscreen()); 125 | Gdx.app.log("DEBUG","Set to fullscreen:"+!WurfelEngine.isFullscreen()); 126 | } 127 | 128 | //toggle eathquake 129 | if (keycode == Input.Keys.E){ //((ExplosiveBarrel)(getMapData(Chunk.getBlocksX()+5, Chunk.getBlocksY()+5, 3))).explode(); 130 | getMap().earthquake(5000); 131 | } 132 | 133 | //pause 134 | //if (input.isKeyDown(Input.Keys.P)) Gdx.app.setPaused(true); 135 | //time is set 0 but the game keeps running 136 | if (keycode == Input.Keys.P) { 137 | setTimespeed(0); 138 | } 139 | 140 | //reset zoom 141 | if (keycode == Input.Keys.Z) { 142 | getCameras().get(0).setZoom(1); 143 | GameplayScreen.msgSystem().add("Zoom reset"); 144 | } 145 | 146 | //show/hide light engine 147 | if (keycode == Input.Keys.L) { 148 | if (getLightengine() != null) getLightengine().RenderData(!getLightengine().isRenderingData()); 149 | } 150 | 151 | if (keycode == Input.Keys.T) { 152 | setTimespeed(); 153 | } 154 | 155 | if (keycode == Input.Keys.ESCAPE)// Gdx.app.exit(); 156 | WurfelEngine.getInstance().setScreen(new MainMenuScreen()); 157 | } 158 | 159 | //toggle input for msgSystem 160 | if (keycode == Input.Keys.ENTER) 161 | GameplayScreen.msgSystem().listenForInput(!GameplayScreen.msgSystem().isListeningForInput()); 162 | 163 | return true; 164 | } 165 | 166 | @Override 167 | public boolean keyUp(int keycode) { 168 | return false; 169 | } 170 | 171 | @Override 172 | public boolean keyTyped(char character) { 173 | GameplayScreen.msgSystem().getInput(character); 174 | return true; 175 | } 176 | 177 | @Override 178 | public boolean touchDown(int screenX, int screenY, int pointer, int button) { 179 | Coordinate coords = getView().ScreenToGameCoords(screenX,screenY); 180 | if (coords.getZ() < Map.getBlocksZ()-1) coords.setZ(coords.getZ()+1); 181 | 182 | if (button == 0){ //left click 183 | getMap().setData(coords, Block.getInstance(71, 0, coords)); 184 | WECamera.traceRayTo(coords, true); 185 | } else {//right click 186 | if (getMap().getDataSafe(coords) instanceof ExplosiveBarrel) 187 | ((ExplosiveBarrel) getMap().getDataSafe(coords)).explode(); 188 | if (coords.getZ() < Map.getBlocksZ()-1) coords.setZ(coords.getZ()+1); 189 | if (getMap().getDataSafe(coords) instanceof ExplosiveBarrel) 190 | ((ExplosiveBarrel) getMap().getDataSafe(coords)).explode(); 191 | } 192 | return true; 193 | } 194 | 195 | @Override 196 | public boolean touchUp(int screenX, int screenY, int pointer, int button) { 197 | return false; 198 | } 199 | 200 | @Override 201 | public boolean touchDragged(int screenX, int screenY, int pointer) { 202 | return false; 203 | } 204 | 205 | @Override 206 | public boolean mouseMoved(int screenX, int screenY) { 207 | return false; 208 | } 209 | 210 | @Override 211 | public boolean scrolled(int amount) { 212 | getCameras().get(0).setZoom(getCameras().get(0).getZoom() - amount/100f); 213 | 214 | GameplayScreen.msgSystem().add("Zoom: " + getCameras().get(0).getZoom()); 215 | return true; 216 | } 217 | 218 | } 219 | } --------------------------------------------------------------------------------