DEADSOFTWARE

Better collision, disable auto jump
[cavedroid.git] / core / src / ru / deadsoftware / cavecraft / GameScreen.java
1 package ru.deadsoftware.cavecraft;
3 import com.badlogic.gdx.Gdx;
4 import com.badlogic.gdx.Input;
5 import com.badlogic.gdx.InputProcessor;
6 import com.badlogic.gdx.Screen;
7 import ru.deadsoftware.cavecraft.game.GameInputHandler;
8 import ru.deadsoftware.cavecraft.game.GameProc;
10 public class GameScreen implements Screen {
12 public static int FPS;
14 private GameProc gameProc;
15 private GameInputHandler gameInput;
17 public GameScreen() {
18 Assets.load();
19 Items.load();
20 gameProc = new GameProc();
21 gameInput = new GameInputHandler(gameProc);
22 Gdx.input.setInputProcessor(new InputHandler());
23 }
25 public static int getWidth() {
26 return Gdx.graphics.getWidth();
27 }
29 public static int getHeight() {
30 return Gdx.graphics.getHeight();
31 }
33 @Override
34 public void show() {
36 }
38 @Override
39 public void render(float delta) {
40 FPS = (int)(1/delta);
41 gameProc.update(delta);
42 gameProc.renderer.render();
43 }
45 @Override
46 public void resize(int width, int height) {
47 gameProc.resetRenderer();
48 }
50 @Override
51 public void pause() {
53 }
55 @Override
56 public void resume() {
58 }
60 @Override
61 public void hide() {
63 }
65 @Override
66 public void dispose() {
68 }
70 private class InputHandler implements InputProcessor {
72 @Override
73 public boolean keyDown(int keycode) {
74 if (keycode == Input.Keys.N) {
75 gameProc = new GameProc();
76 gameInput = new GameInputHandler(gameProc);
77 } else {
78 gameInput.keyDown(keycode);
79 }
80 return false;
81 }
83 @Override
84 public boolean keyUp(int keycode) {
85 gameInput.keyUp(keycode);
86 return false;
87 }
89 @Override
90 public boolean keyTyped(char character) {
91 return false;
92 }
94 @Override
95 public boolean touchDown(int screenX, int screenY, int pointer, int button) {
96 screenX *= gameProc.renderer.camera.viewportWidth/getWidth();
97 screenY *= gameProc.renderer.camera.viewportHeight/getHeight();
98 if (CaveGame.TOUCH) {
99 if (screenX > 26 && screenX < 52 &&
100 screenY > gameProc.renderer.camera.viewportHeight - 52 &&
101 screenY < gameProc.renderer.camera.viewportHeight - 26) {
102 gameInput.keyDown(Input.Keys.W);
103 } else if (screenX > 0 && screenX < 26 &&
104 screenY > gameProc.renderer.camera.viewportHeight - 26) {
105 gameInput.keyDown(Input.Keys.A);
106 } else if (screenX > 26 && screenX < 52 &&
107 screenY > gameProc.renderer.camera.viewportHeight - 26) {
108 gameInput.keyDown(Input.Keys.S);
109 } else if (screenX > 52 && screenX < 78 &&
110 screenY > gameProc.renderer.camera.viewportHeight - 26) {
111 gameInput.keyDown(Input.Keys.D);
112 } else if (screenX > 78 && screenX < 104 &&
113 screenY > gameProc.renderer.camera.viewportHeight - 26) {
114 gameInput.keyDown(Input.Keys.ALT_LEFT);
115 } else if (screenX > gameProc.renderer.camera.viewportWidth - 52 &&
116 screenX < gameProc.renderer.camera.viewportWidth - 26 &&
117 screenY > gameProc.renderer.camera.viewportHeight - 26) {
118 gameInput.touchDown(screenX, screenY, Input.Buttons.LEFT);
119 } else if (screenX > gameProc.renderer.camera.viewportWidth - 26 &&
120 screenY > gameProc.renderer.camera.viewportHeight - 26) {
121 gameInput.touchDown(screenX, screenY, Input.Buttons.RIGHT);
122 } else if (screenX > gameProc.renderer.camera.viewportWidth / 2 - 52 &&
123 screenX < gameProc.renderer.camera.viewportWidth / 2 + 52 &&
124 screenY > gameProc.renderer.camera.viewportHeight - 26) {
125 gameInput.keyDown(Input.Keys.SPACE);
127 } else {
128 gameInput.touchDown(screenX, screenY, button);
130 return false;
133 @Override
134 public boolean touchUp(int screenX, int screenY, int pointer, int button) {
135 screenX *= gameProc.renderer.camera.viewportWidth/getWidth();
136 screenY *= gameProc.renderer.camera.viewportHeight/getHeight();
137 if (CaveGame.TOUCH) {
138 if (screenX>26 && screenX<52 &&
139 screenY>gameProc.renderer.camera.viewportHeight-52 &&
140 screenY<gameProc.renderer.camera.viewportHeight-26) {
141 gameInput.keyUp(Input.Keys.W);
142 } else if (screenX>0 && screenX<26 &&
143 screenY>gameProc.renderer.camera.viewportHeight-26) {
144 gameInput.keyUp(Input.Keys.A);
145 } else if (screenX>26 && screenX<52 &&
146 screenY>gameProc.renderer.camera.viewportHeight-26) {
147 gameInput.keyUp(Input.Keys.S);
148 } else if (screenX>52 && screenX<78 &&
149 screenY>gameProc.renderer.camera.viewportHeight-26) {
150 gameInput.keyUp(Input.Keys.D);
151 } else if (screenX > 78 && screenX < 104 &&
152 screenY > gameProc.renderer.camera.viewportHeight - 26) {
153 gameInput.keyUp(Input.Keys.ALT_LEFT);
154 } else if (screenX > gameProc.renderer.camera.viewportWidth - 52 &&
155 screenX < gameProc.renderer.camera.viewportWidth - 26 &&
156 screenY > gameProc.renderer.camera.viewportHeight - 26) {
157 gameInput.touchUp(screenX, screenY, Input.Buttons.LEFT);
158 } else if (screenX > gameProc.renderer.camera.viewportWidth - 26 &&
159 screenY > gameProc.renderer.camera.viewportHeight - 26) {
160 gameInput.touchUp(screenX, screenY, Input.Buttons.RIGHT);
161 } else if (screenX > gameProc.renderer.camera.viewportWidth / 2 - 52 &&
162 screenX < gameProc.renderer.camera.viewportWidth / 2 + 52 &&
163 screenY > gameProc.renderer.camera.viewportHeight - 26) {
164 gameInput.keyUp(Input.Keys.SPACE);
166 } else {
167 gameInput.touchUp(screenX, screenY, button);
169 return false;
172 @Override
173 public boolean touchDragged(int screenX, int screenY, int pointer) {
174 screenX *= gameProc.renderer.camera.viewportWidth/getWidth();
175 screenY *= gameProc.renderer.camera.viewportHeight/getHeight();
176 gameInput.touchDragged(screenX, screenY);
177 return false;
180 @Override
181 public boolean mouseMoved(int screenX, int screenY) {
182 screenX *= gameProc.renderer.camera.viewportWidth/getWidth();
183 screenY *= gameProc.renderer.camera.viewportHeight/getHeight();
184 gameInput.mouseMoved(screenX,screenY);
185 return false;
188 @Override
189 public boolean scrolled(int amount) {
190 gameInput.scrolled(amount);
191 return false;