├── .gitignore
├── README
├── star-assault-android
├── .classpath
├── .project
├── AndroidManifest.xml
├── assets
│ └── images
│ │ ├── block.png
│ │ ├── bob_01.png
│ │ ├── bob_02.png
│ │ ├── bob_03.png
│ │ ├── bob_04.png
│ │ ├── bob_05.png
│ │ ├── bob_06.png
│ │ └── textures
│ │ ├── textures.pack
│ │ └── textures.png
├── libs
│ ├── armeabi-v7a
│ │ ├── libandroidgl20.so
│ │ └── libgdx.so
│ ├── armeabi
│ │ ├── libandroidgl20.so
│ │ └── libgdx.so
│ └── gdx-backend-android.jar
├── proguard.cfg
├── project.properties
├── res
│ ├── drawable-hdpi
│ │ └── ic_launcher.png
│ ├── drawable-ldpi
│ │ └── ic_launcher.png
│ ├── drawable-mdpi
│ │ └── ic_launcher.png
│ ├── layout
│ │ └── main.xml
│ └── values
│ │ └── strings.xml
└── src
│ └── net
│ └── obviam
│ └── starassault
│ └── StarAssaultActivity.java
├── star-assault-desktop
├── .classpath
├── .project
├── libs
│ ├── gdx-backend-lwjgl-natives.jar
│ ├── gdx-backend-lwjgl.jar
│ └── gdx-natives.jar
└── src
│ └── net
│ └── obviam
│ └── starassault
│ └── StarAssaultDesktop.java
└── star-assault
├── .classpath
├── .project
├── libs
├── gdx-sources.jar
└── gdx.jar
└── src
└── net
└── obviam
└── starassault
├── StarAssault.java
├── controller
└── WorldController.java
├── model
├── Block.java
├── Bob.java
└── World.java
├── screens
└── GameScreen.java
├── utils
└── TextureSetup.java
└── view
└── WorldRenderer.java
/.gitignore:
--------------------------------------------------------------------------------
1 | star-assault/bin
2 | star-assault-android/bin
3 | star-assault-android/gen
4 | star-assault-desktop/bin
5 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | This is the code for the "Star Assault" project which is to serve as an
2 | accompaniament for the tutorial found here:
3 | http://obviam.net/index.php/getting-started-in-android-game-development-with-libgdx-create-a-working-prototype-in-a-day-tutorial-part-1
4 |
5 | There is no warranty whatsoever and is purely educational.
6 |
7 | Author: impaler@obviam.net
8 | Date: 2012-02
9 |
10 | Have fun learning!
11 |
--------------------------------------------------------------------------------
/star-assault-android/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/star-assault-android/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | star-assault-android
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/star-assault-android/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
13 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/star-assault-android/assets/images/block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/assets/images/block.png
--------------------------------------------------------------------------------
/star-assault-android/assets/images/bob_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/assets/images/bob_01.png
--------------------------------------------------------------------------------
/star-assault-android/assets/images/bob_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/assets/images/bob_02.png
--------------------------------------------------------------------------------
/star-assault-android/assets/images/bob_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/assets/images/bob_03.png
--------------------------------------------------------------------------------
/star-assault-android/assets/images/bob_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/assets/images/bob_04.png
--------------------------------------------------------------------------------
/star-assault-android/assets/images/bob_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/assets/images/bob_05.png
--------------------------------------------------------------------------------
/star-assault-android/assets/images/bob_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/assets/images/bob_06.png
--------------------------------------------------------------------------------
/star-assault-android/assets/images/textures/textures.pack:
--------------------------------------------------------------------------------
1 |
2 | textures.png
3 | format: RGBA8888
4 | filter: Nearest,Nearest
5 | repeat: none
6 | block
7 | rotate: false
8 | xy: 1, 11
9 | size: 48, 48
10 | orig: 48, 48
11 | offset: 0, 0
12 | index: -1
13 | bob-01
14 | rotate: false
15 | xy: 51, 31
16 | size: 24, 28
17 | orig: 24, 28
18 | offset: 0, 0
19 | index: -1
20 | bob-02
21 | rotate: false
22 | xy: 77, 31
23 | size: 24, 28
24 | orig: 24, 28
25 | offset: 0, 0
26 | index: -1
27 | bob-05
28 | rotate: false
29 | xy: 103, 31
30 | size: 24, 28
31 | orig: 24, 28
32 | offset: 0, 0
33 | index: -1
34 | bob-03
35 | rotate: false
36 | xy: 51, 3
37 | size: 24, 26
38 | orig: 24, 26
39 | offset: 0, 0
40 | index: -1
41 | bob-04
42 | rotate: false
43 | xy: 77, 3
44 | size: 24, 26
45 | orig: 24, 26
46 | offset: 0, 0
47 | index: -1
48 | bob-06
49 | rotate: false
50 | xy: 103, 1
51 | size: 24, 28
52 | orig: 24, 28
53 | offset: 0, 0
54 | index: -1
55 |
--------------------------------------------------------------------------------
/star-assault-android/assets/images/textures/textures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/assets/images/textures/textures.png
--------------------------------------------------------------------------------
/star-assault-android/libs/armeabi-v7a/libandroidgl20.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/libs/armeabi-v7a/libandroidgl20.so
--------------------------------------------------------------------------------
/star-assault-android/libs/armeabi-v7a/libgdx.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/libs/armeabi-v7a/libgdx.so
--------------------------------------------------------------------------------
/star-assault-android/libs/armeabi/libandroidgl20.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/libs/armeabi/libandroidgl20.so
--------------------------------------------------------------------------------
/star-assault-android/libs/armeabi/libgdx.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/libs/armeabi/libgdx.so
--------------------------------------------------------------------------------
/star-assault-android/libs/gdx-backend-android.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/libs/gdx-backend-android.jar
--------------------------------------------------------------------------------
/star-assault-android/proguard.cfg:
--------------------------------------------------------------------------------
1 | -optimizationpasses 5
2 | -dontusemixedcaseclassnames
3 | -dontskipnonpubliclibraryclasses
4 | -dontpreverify
5 | -verbose
6 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
7 |
8 | -keep public class * extends android.app.Activity
9 | -keep public class * extends android.app.Application
10 | -keep public class * extends android.app.Service
11 | -keep public class * extends android.content.BroadcastReceiver
12 | -keep public class * extends android.content.ContentProvider
13 | -keep public class * extends android.app.backup.BackupAgentHelper
14 | -keep public class * extends android.preference.Preference
15 | -keep public class com.android.vending.licensing.ILicensingService
16 |
17 | -keepclasseswithmembernames class * {
18 | native ;
19 | }
20 |
21 | -keepclasseswithmembers class * {
22 | public (android.content.Context, android.util.AttributeSet);
23 | }
24 |
25 | -keepclasseswithmembers class * {
26 | public (android.content.Context, android.util.AttributeSet, int);
27 | }
28 |
29 | -keepclassmembers class * extends android.app.Activity {
30 | public void *(android.view.View);
31 | }
32 |
33 | -keepclassmembers enum * {
34 | public static **[] values();
35 | public static ** valueOf(java.lang.String);
36 | }
37 |
38 | -keep class * implements android.os.Parcelable {
39 | public static final android.os.Parcelable$Creator *;
40 | }
41 |
--------------------------------------------------------------------------------
/star-assault-android/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system use,
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 |
10 | # Project target.
11 | target=android-7
12 |
--------------------------------------------------------------------------------
/star-assault-android/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/star-assault-android/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/star-assault-android/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-android/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/star-assault-android/res/layout/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/star-assault-android/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Hello World, StarAssaultActivity!
5 | star-assault-android
6 |
7 |
--------------------------------------------------------------------------------
/star-assault-android/src/net/obviam/starassault/StarAssaultActivity.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault;
2 |
3 | import android.os.Bundle;
4 |
5 | import com.badlogic.gdx.backends.android.AndroidApplication;
6 | import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
7 |
8 | public class StarAssaultActivity extends AndroidApplication {
9 | /** Called when the activity is first created. */
10 | @Override
11 | public void onCreate(Bundle savedInstanceState) {
12 | super.onCreate(savedInstanceState);
13 | AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
14 | config.useAccelerometer = false;
15 | config.useCompass = false;
16 | config.useWakelock = true;
17 | config.useGL20 = true;
18 | initialize(new StarAssault(), config);
19 | }
20 | }
--------------------------------------------------------------------------------
/star-assault-desktop/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/star-assault-desktop/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | star-assault-desktop
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
19 | assets
20 | 2
21 | /Users/tamas/Documents/workspace.juno/obviam/star-assault/star-assault-android/assets
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/star-assault-desktop/libs/gdx-backend-lwjgl-natives.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-desktop/libs/gdx-backend-lwjgl-natives.jar
--------------------------------------------------------------------------------
/star-assault-desktop/libs/gdx-backend-lwjgl.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-desktop/libs/gdx-backend-lwjgl.jar
--------------------------------------------------------------------------------
/star-assault-desktop/libs/gdx-natives.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault-desktop/libs/gdx-natives.jar
--------------------------------------------------------------------------------
/star-assault-desktop/src/net/obviam/starassault/StarAssaultDesktop.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault;
2 |
3 | import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
4 |
5 | public class StarAssaultDesktop {
6 |
7 | public static void main(String[] args) {
8 | new LwjglApplication(new StarAssault(), "Star Assault", 480, 320, true);
9 | }
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/star-assault/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/star-assault/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | star-assault
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/star-assault/libs/gdx-sources.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault/libs/gdx-sources.jar
--------------------------------------------------------------------------------
/star-assault/libs/gdx.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/obviam/star-assault/f2dbcb686cd1092490f232a7300e9b2201c48a91/star-assault/libs/gdx.jar
--------------------------------------------------------------------------------
/star-assault/src/net/obviam/starassault/StarAssault.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault;
2 |
3 | import net.obviam.starassault.screens.GameScreen;
4 |
5 | import com.badlogic.gdx.Game;
6 |
7 | public class StarAssault extends Game {
8 |
9 | @Override
10 | public void create() {
11 | setScreen(new GameScreen());
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/star-assault/src/net/obviam/starassault/controller/WorldController.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault.controller;
2 |
3 | import java.util.HashMap;
4 | import java.util.Map;
5 |
6 | import net.obviam.starassault.model.Bob;
7 | import net.obviam.starassault.model.Bob.State;
8 | import net.obviam.starassault.model.World;
9 |
10 | public class WorldController {
11 |
12 | enum Keys {
13 | LEFT, RIGHT, JUMP, FIRE
14 | }
15 |
16 | private World world;
17 | private Bob bob;
18 |
19 | static Map keys = new HashMap();
20 | static {
21 | keys.put(Keys.LEFT, false);
22 | keys.put(Keys.RIGHT, false);
23 | keys.put(Keys.JUMP, false);
24 | keys.put(Keys.FIRE, false);
25 | };
26 |
27 | public WorldController(World world) {
28 | this.world = world;
29 | this.bob = world.getBob();
30 | }
31 |
32 | // ** Key presses and touches **************** //
33 |
34 | public void leftPressed() {
35 | keys.get(keys.put(Keys.LEFT, true));
36 | }
37 |
38 | public void rightPressed() {
39 | keys.get(keys.put(Keys.RIGHT, true));
40 | }
41 |
42 | public void jumpPressed() {
43 | keys.get(keys.put(Keys.JUMP, true));
44 | }
45 |
46 | public void firePressed() {
47 | keys.get(keys.put(Keys.FIRE, false));
48 | }
49 |
50 | public void leftReleased() {
51 | keys.get(keys.put(Keys.LEFT, false));
52 | }
53 |
54 | public void rightReleased() {
55 | keys.get(keys.put(Keys.RIGHT, false));
56 | }
57 |
58 | public void jumpReleased() {
59 | keys.get(keys.put(Keys.JUMP, false));
60 | }
61 |
62 | public void fireReleased() {
63 | keys.get(keys.put(Keys.FIRE, false));
64 | }
65 |
66 | /** The main update method **/
67 | public void update(float delta) {
68 | processInput();
69 | bob.update(delta);
70 | }
71 |
72 | /** Change Bob's state and parameters based on input controls **/
73 | private void processInput() {
74 | if (keys.get(Keys.LEFT)) {
75 | // left is pressed
76 | bob.setFacingLeft(true);
77 | bob.setState(State.WALKING);
78 | bob.getVelocity().x = -Bob.SPEED;
79 | }
80 | if (keys.get(Keys.RIGHT)) {
81 | // left is pressed
82 | bob.setFacingLeft(false);
83 | bob.setState(State.WALKING);
84 | bob.getVelocity().x = Bob.SPEED;
85 | }
86 | // need to check if both or none direction are pressed, then Bob is idle
87 | if ((keys.get(Keys.LEFT) && keys.get(Keys.RIGHT)) ||
88 | (!keys.get(Keys.LEFT) && !(keys.get(Keys.RIGHT)))) {
89 | bob.setState(State.IDLE);
90 | // acceleration is 0 on the x
91 | bob.getAcceleration().x = 0;
92 | // horizontal speed is 0
93 | bob.getVelocity().x = 0;
94 | }
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/star-assault/src/net/obviam/starassault/model/Block.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault.model;
2 |
3 | import com.badlogic.gdx.math.Rectangle;
4 | import com.badlogic.gdx.math.Vector2;
5 |
6 | public class Block {
7 |
8 | public static final float SIZE = 1f;
9 |
10 | Vector2 position = new Vector2();
11 | Rectangle bounds = new Rectangle();
12 |
13 | public Block(Vector2 pos) {
14 | this.position = pos;
15 | this.bounds.width = SIZE;
16 | this.bounds.height = SIZE;
17 | }
18 |
19 | public Vector2 getPosition() {
20 | return position;
21 | }
22 |
23 | public Rectangle getBounds() {
24 | return bounds;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/star-assault/src/net/obviam/starassault/model/Bob.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault.model;
2 |
3 | import com.badlogic.gdx.math.Rectangle;
4 | import com.badlogic.gdx.math.Vector2;
5 |
6 | public class Bob {
7 |
8 | public enum State {
9 | IDLE, WALKING, JUMPING, DYING
10 | }
11 |
12 | public static final float SPEED = 4f; // unit per second
13 | public static final float JUMP_VELOCITY = 4f;
14 | public static final float SIZE = 0.5f; // half a unit
15 |
16 | Vector2 position = new Vector2();
17 | Vector2 acceleration = new Vector2();
18 | Vector2 velocity = new Vector2();
19 | Rectangle bounds = new Rectangle();
20 | State state = State.IDLE;
21 | boolean facingLeft = true;
22 | float stateTime = 0;
23 |
24 | public Bob(Vector2 position) {
25 | this.position = position;
26 | this.bounds.height = SIZE;
27 | this.bounds.width = SIZE;
28 | }
29 |
30 |
31 | public boolean isFacingLeft() {
32 | return facingLeft;
33 | }
34 |
35 | public void setFacingLeft(boolean facingLeft) {
36 | this.facingLeft = facingLeft;
37 | }
38 |
39 | public Vector2 getPosition() {
40 | return position;
41 | }
42 |
43 | public Vector2 getAcceleration() {
44 | return acceleration;
45 | }
46 |
47 | public Vector2 getVelocity() {
48 | return velocity;
49 | }
50 |
51 | public Rectangle getBounds() {
52 | return bounds;
53 | }
54 |
55 | public State getState() {
56 | return state;
57 | }
58 |
59 | public void setState(State newState) {
60 | this.state = newState;
61 | }
62 |
63 | public float getStateTime() {
64 | return stateTime;
65 | }
66 |
67 |
68 | public void update(float delta) {
69 | stateTime += delta;
70 | position.add(velocity.tmp().mul(delta));
71 | }
72 |
73 | }
74 |
--------------------------------------------------------------------------------
/star-assault/src/net/obviam/starassault/model/World.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault.model;
2 |
3 | import com.badlogic.gdx.math.Vector2;
4 | import com.badlogic.gdx.utils.Array;
5 |
6 | public class World {
7 |
8 | /** The blocks making up the world **/
9 | Array blocks = new Array();
10 | /** Our player controlled hero **/
11 | Bob bob;
12 |
13 | // Getters -----------
14 | public Array getBlocks() {
15 | return blocks;
16 | }
17 | public Bob getBob() {
18 | return bob;
19 | }
20 | // --------------------
21 |
22 | public World() {
23 | createDemoWorld();
24 | }
25 |
26 | private void createDemoWorld() {
27 | bob = new Bob(new Vector2(7, 2));
28 |
29 | for (int i = 0; i < 10; i++) {
30 | blocks.add(new Block(new Vector2(i, 0)));
31 | blocks.add(new Block(new Vector2(i, 6)));
32 | if (i > 2)
33 | blocks.add(new Block(new Vector2(i, 1)));
34 | }
35 | blocks.add(new Block(new Vector2(9, 2)));
36 | blocks.add(new Block(new Vector2(9, 3)));
37 | blocks.add(new Block(new Vector2(9, 4)));
38 | blocks.add(new Block(new Vector2(9, 5)));
39 |
40 | blocks.add(new Block(new Vector2(6, 3)));
41 | blocks.add(new Block(new Vector2(6, 4)));
42 | blocks.add(new Block(new Vector2(6, 5)));
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/star-assault/src/net/obviam/starassault/screens/GameScreen.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault.screens;
2 |
3 | import net.obviam.starassault.controller.WorldController;
4 | import net.obviam.starassault.model.World;
5 | import net.obviam.starassault.view.WorldRenderer;
6 |
7 | import com.badlogic.gdx.Application.ApplicationType;
8 | import com.badlogic.gdx.Gdx;
9 | import com.badlogic.gdx.Input.Keys;
10 | import com.badlogic.gdx.InputProcessor;
11 | import com.badlogic.gdx.Screen;
12 | import com.badlogic.gdx.graphics.GL10;
13 |
14 | public class GameScreen implements Screen, InputProcessor {
15 |
16 | private World world;
17 | private WorldRenderer renderer;
18 | private WorldController controller;
19 |
20 | private int width, height;
21 |
22 | @Override
23 | public void show() {
24 | world = new World();
25 | renderer = new WorldRenderer(world, true);
26 | controller = new WorldController(world);
27 | Gdx.input.setInputProcessor(this);
28 | }
29 |
30 | @Override
31 | public void render(float delta) {
32 | Gdx.gl.glClearColor(0.1f, 0.1f, 0.1f, 1);
33 | Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
34 |
35 | controller.update(delta);
36 | renderer.render();
37 | }
38 |
39 | @Override
40 | public void resize(int width, int height) {
41 | renderer.setSize(width, height);
42 | this.width = width;
43 | this.height = height;
44 | }
45 |
46 | @Override
47 | public void hide() {
48 | Gdx.input.setInputProcessor(null);
49 | }
50 |
51 | @Override
52 | public void pause() {
53 | // TODO Auto-generated method stub
54 | }
55 |
56 | @Override
57 | public void resume() {
58 | // TODO Auto-generated method stub
59 | }
60 |
61 | @Override
62 | public void dispose() {
63 | Gdx.input.setInputProcessor(null);
64 | }
65 |
66 | // * InputProcessor methods ***************************//
67 |
68 | @Override
69 | public boolean keyDown(int keycode) {
70 | if (keycode == Keys.LEFT)
71 | controller.leftPressed();
72 | if (keycode == Keys.RIGHT)
73 | controller.rightPressed();
74 | if (keycode == Keys.Z)
75 | controller.jumpPressed();
76 | if (keycode == Keys.X)
77 | controller.firePressed();
78 | return true;
79 | }
80 |
81 | @Override
82 | public boolean keyUp(int keycode) {
83 | if (keycode == Keys.LEFT)
84 | controller.leftReleased();
85 | if (keycode == Keys.RIGHT)
86 | controller.rightReleased();
87 | if (keycode == Keys.Z)
88 | controller.jumpReleased();
89 | if (keycode == Keys.X)
90 | controller.fireReleased();
91 | return true;
92 | }
93 |
94 | @Override
95 | public boolean keyTyped(char character) {
96 | // TODO Auto-generated method stub
97 | return false;
98 | }
99 |
100 | @Override
101 | public boolean touchDown(int x, int y, int pointer, int button) {
102 | if (!Gdx.app.getType().equals(ApplicationType.Android))
103 | return false;
104 | if (x < width / 2 && y > height / 2) {
105 | controller.leftPressed();
106 | }
107 | if (x > width / 2 && y > height / 2) {
108 | controller.rightPressed();
109 | }
110 | return true;
111 | }
112 |
113 | @Override
114 | public boolean touchUp(int x, int y, int pointer, int button) {
115 | if (!Gdx.app.getType().equals(ApplicationType.Android))
116 | return false;
117 | if (x < width / 2 && y > height / 2) {
118 | controller.leftReleased();
119 | }
120 | if (x > width / 2 && y > height / 2) {
121 | controller.rightReleased();
122 | }
123 | return true;
124 | }
125 |
126 | @Override
127 | public boolean touchDragged(int x, int y, int pointer) {
128 | // TODO Auto-generated method stub
129 | return false;
130 | }
131 |
132 | @Override
133 | public boolean touchMoved(int x, int y) {
134 | // TODO Auto-generated method stub
135 | return false;
136 | }
137 |
138 | @Override
139 | public boolean scrolled(int amount) {
140 | // TODO Auto-generated method stub
141 | return false;
142 | }
143 |
144 |
145 | }
146 |
--------------------------------------------------------------------------------
/star-assault/src/net/obviam/starassault/utils/TextureSetup.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package net.obviam.starassault.utils;
5 |
6 | //import com.badlogic.gdx.tools.imagepacker.TexturePacker2;
7 |
8 |
9 | /**
10 | * @author tamas
11 | *
12 | */
13 | public class TextureSetup {
14 |
15 | public static void main(String[] args) {
16 | // TexturePacker2.process("/Users/tamas/tmp/star-guard-assets/", "/Users/tamas/tmp/sga/", "textures.pack");
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/star-assault/src/net/obviam/starassault/view/WorldRenderer.java:
--------------------------------------------------------------------------------
1 | package net.obviam.starassault.view;
2 |
3 | import net.obviam.starassault.model.Block;
4 | import net.obviam.starassault.model.Bob;
5 | import net.obviam.starassault.model.Bob.State;
6 | import net.obviam.starassault.model.World;
7 |
8 | import com.badlogic.gdx.Gdx;
9 | import com.badlogic.gdx.graphics.Color;
10 | import com.badlogic.gdx.graphics.OrthographicCamera;
11 | import com.badlogic.gdx.graphics.g2d.Animation;
12 | import com.badlogic.gdx.graphics.g2d.SpriteBatch;
13 | import com.badlogic.gdx.graphics.g2d.TextureAtlas;
14 | import com.badlogic.gdx.graphics.g2d.TextureRegion;
15 | import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
16 | import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
17 | import com.badlogic.gdx.math.Rectangle;
18 |
19 | public class WorldRenderer {
20 |
21 | private static final float CAMERA_WIDTH = 10f;
22 | private static final float CAMERA_HEIGHT = 7f;
23 | private static final float RUNNING_FRAME_DURATION = 0.06f;
24 |
25 | private World world;
26 | private OrthographicCamera cam;
27 |
28 | /** for debug rendering **/
29 | ShapeRenderer debugRenderer = new ShapeRenderer();
30 |
31 | /** Textures **/
32 | private TextureRegion bobIdleLeft;
33 | private TextureRegion bobIdleRight;
34 | private TextureRegion blockTexture;
35 | private TextureRegion bobFrame;
36 |
37 | /** Animations **/
38 | private Animation walkLeftAnimation;
39 | private Animation walkRightAnimation;
40 |
41 | private SpriteBatch spriteBatch;
42 | private boolean debug = false;
43 | private int width;
44 | private int height;
45 | private float ppuX; // pixels per unit on the X axis
46 | private float ppuY; // pixels per unit on the Y axis
47 | public void setSize (int w, int h) {
48 | this.width = w;
49 | this.height = h;
50 | ppuX = (float)width / CAMERA_WIDTH;
51 | ppuY = (float)height / CAMERA_HEIGHT;
52 | }
53 |
54 | public WorldRenderer(World world, boolean debug) {
55 | this.world = world;
56 | this.cam = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT);
57 | this.cam.position.set(CAMERA_WIDTH / 2f, CAMERA_HEIGHT / 2f, 0);
58 | this.cam.update();
59 | this.debug = debug;
60 | spriteBatch = new SpriteBatch();
61 | loadTextures();
62 | }
63 |
64 | private void loadTextures() {
65 | TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("images/textures/textures.pack"));
66 | bobIdleLeft = atlas.findRegion("bob-01");
67 | bobIdleRight = new TextureRegion(bobIdleLeft);
68 | bobIdleRight.flip(true, false);
69 | blockTexture = atlas.findRegion("block");
70 | TextureRegion[] walkLeftFrames = new TextureRegion[5];
71 | for (int i = 0; i < 5; i++) {
72 | walkLeftFrames[i] = atlas.findRegion("bob-0" + (i + 2));
73 | }
74 | walkLeftAnimation = new Animation(RUNNING_FRAME_DURATION, walkLeftFrames);
75 |
76 | TextureRegion[] walkRightFrames = new TextureRegion[5];
77 |
78 | for (int i = 0; i < 5; i++) {
79 | walkRightFrames[i] = new TextureRegion(walkLeftFrames[i]);
80 | walkRightFrames[i].flip(true, false);
81 | }
82 | walkRightAnimation = new Animation(RUNNING_FRAME_DURATION, walkRightFrames);
83 | }
84 |
85 |
86 | public void render() {
87 | spriteBatch.begin();
88 | drawBlocks();
89 | drawBob();
90 | spriteBatch.end();
91 | if (debug)
92 | drawDebug();
93 | }
94 |
95 |
96 | private void drawBlocks() {
97 | for (Block block : world.getBlocks()) {
98 | spriteBatch.draw(blockTexture, block.getPosition().x * ppuX, block.getPosition().y * ppuY, Block.SIZE * ppuX, Block.SIZE * ppuY);
99 | }
100 | }
101 |
102 | private void drawBob() {
103 | Bob bob = world.getBob();
104 | bobFrame = bob.isFacingLeft() ? bobIdleLeft : bobIdleRight;
105 | if(bob.getState().equals(State.WALKING)) {
106 | bobFrame = bob.isFacingLeft() ? walkLeftAnimation.getKeyFrame(bob.getStateTime(), true) : walkRightAnimation.getKeyFrame(bob.getStateTime(), true);
107 | }
108 | spriteBatch.draw(bobFrame, bob.getPosition().x * ppuX, bob.getPosition().y * ppuY, Bob.SIZE * ppuX, Bob.SIZE * ppuY);
109 | }
110 |
111 | private void drawDebug() {
112 | // render blocks
113 | debugRenderer.setProjectionMatrix(cam.combined);
114 | debugRenderer.begin(ShapeType.Rectangle);
115 | for (Block block : world.getBlocks()) {
116 | Rectangle rect = block.getBounds();
117 | float x1 = block.getPosition().x + rect.x;
118 | float y1 = block.getPosition().y + rect.y;
119 | debugRenderer.setColor(new Color(1, 0, 0, 1));
120 | debugRenderer.rect(x1, y1, rect.width, rect.height);
121 | }
122 | // render Bob
123 | Bob bob = world.getBob();
124 | Rectangle rect = bob.getBounds();
125 | float x1 = bob.getPosition().x + rect.x;
126 | float y1 = bob.getPosition().y + rect.y;
127 | debugRenderer.setColor(new Color(0, 1, 0, 1));
128 | debugRenderer.rect(x1, y1, rect.width, rect.height);
129 | debugRenderer.end();
130 | }
131 | }
132 |
--------------------------------------------------------------------------------