1 package ru
.deadsoftware
.cavecraft
.game
;
3 import com
.badlogic
.gdx
.Input
;
4 import com
.badlogic
.gdx
.math
.RandomXS128
;
5 import com
.badlogic
.gdx
.utils
.Array
;
6 import com
.badlogic
.gdx
.utils
.TimeUtils
;
7 import ru
.deadsoftware
.cavecraft
.Assets
;
8 import ru
.deadsoftware
.cavecraft
.CaveGame
;
9 import ru
.deadsoftware
.cavecraft
.GameState
;
10 import ru
.deadsoftware
.cavecraft
.Items
;
11 import ru
.deadsoftware
.cavecraft
.game
.mobs
.Human
;
12 import ru
.deadsoftware
.cavecraft
.game
.mobs
.Mob
;
13 import ru
.deadsoftware
.cavecraft
.game
.objects
.Player
;
15 public class GameProc
{
17 public static double RUN_TIME
= 0;
21 public Array
<Mob
> mobs
;
23 public GameWorld world
;
24 public GameRenderer renderer
;
25 public GamePhysics physics
;
27 public int cursorX
, cursorY
;
31 public boolean isTouchDown
= false;
32 public int touchDownX
, touchDownY
;
33 public int touchDownButton
;
34 public long touchDownTime
;
37 world
= new GameWorld(1024,256);
38 renderer
= new GameRenderer(this);
39 physics
= new GamePhysics(this);
40 player
= new Player(world
.getSpawnPoint());
41 mobs
= new Array
<Mob
>();
45 public void resetRenderer() {
46 renderer
= new GameRenderer(this);
49 private boolean isAutoselectable(int x
, int y
) {
50 return (world
.getForeMap(x
,y
)>0 &&
51 Items
.BLOCKS
.getValueAt(world
.getForeMap(x
,y
)).collision
);
54 private void moveCursor() {
56 cursorX
= (int) (player
.position
.x
+ player
.texWidth
/ 2) / 16;
57 if (player
.dir
== 0) cursorX
--;
59 cursorY
= (int) (player
.position
.y
+ player
.texWidth
) / 16;
60 if (!isAutoselectable(cursorX
, cursorY
)) {
63 if (!isAutoselectable(cursorX
, cursorY
)) {
66 if (!isAutoselectable(cursorX
, cursorY
)) {
67 if (player
.dir
== 0) cursorX
++;
71 cursorX
= (int) (player
.position
.x
+ player
.texWidth
/ 2) / 16;
72 cursorY
= (int) (player
.position
.y
+ player
.height
+8)/16;
76 private void checkCursorBounds() {
77 if (cursorX
< 0) cursorX
= 0;
78 if (cursorX
>= world
.getWidth()) cursorX
= world
.getWidth()-1;
79 if (cursorY
< 0) cursorY
= 0;
80 if (cursorY
>= world
.getHeight()) cursorY
= world
.getHeight()-1;
83 public void update(float delta
) {
86 physics
.update(delta
);
87 if (ctrlMode
==0) moveCursor();
90 if (isTouchDown
&& TimeUtils
.timeSinceMillis(touchDownTime
) > 500) {
91 if (touchDownButton
== Input
.Buttons
.RIGHT
) {
92 world
.placeToBackground(cursorX
, cursorY
,
93 player
.inventory
[invSlot
]);
94 } else if (touchDownButton
==Input
.Buttons
.LEFT
&&
95 touchDownY
< Assets
.invBar
.getRegionHeight() &&
96 touchDownX
>renderer
.camera
.viewportWidth
/2-Assets
.invBar
.getRegionWidth()/2 &&
97 touchDownX
<renderer
.camera
.viewportWidth
/2+Assets
.invBar
.getRegionWidth()/2) {
98 CaveGame
.STATE
= GameState
.GAME_CREATIVE_INV
;