1 package ru
.deadsoftware
.cavecraft
.game
;
3 import com
.badlogic
.gdx
.Gdx
;
4 import com
.badlogic
.gdx
.graphics
.GL20
;
5 import com
.badlogic
.gdx
.graphics
.OrthographicCamera
;
6 import com
.badlogic
.gdx
.graphics
.g2d
.SpriteBatch
;
7 import com
.badlogic
.gdx
.graphics
.glutils
.ShapeRenderer
;
8 import com
.badlogic
.gdx
.graphics
.Color
;
9 import com
.badlogic
.gdx
.math
.Vector3
;
10 import ru
.deadsoftware
.cavecraft
.Assets
;
11 import ru
.deadsoftware
.cavecraft
.CaveGame
;
12 import ru
.deadsoftware
.cavecraft
.Items
;
13 import ru
.deadsoftware
.cavecraft
.GameScreen
;
14 import ru
.deadsoftware
.cavecraft
.game
.mobs
.Mob
;
15 import ru
.deadsoftware
.cavecraft
.game
.objects
.Player
;
17 public class GameRenderer
{
19 private GameProc gameProc
;
21 public Vector3 camTargetPos
;
22 public OrthographicCamera camera
;
23 ShapeRenderer shapeRenderer
;
24 SpriteBatch spriteBatch
;
26 public GameRenderer(GameProc gameProc
) {
27 Gdx
.gl
.glClearColor(0f,.6f,.6f,1f);
28 this.gameProc
= gameProc
;
29 camera
= new OrthographicCamera();
30 camera
.setToOrtho(true, 360,
31 360*((float)GameScreen
.getHeight()/GameScreen
.getWidth()));
34 camTargetPos
= camera
.position
.cpy();
35 shapeRenderer
= new ShapeRenderer();
36 shapeRenderer
.setProjectionMatrix(camera
.combined
);
37 shapeRenderer
.setAutoShapeType(true);
38 spriteBatch
= new SpriteBatch();
39 spriteBatch
.setProjectionMatrix(camera
.combined
);
42 private void drawWorld() {
43 int minX
= (int) (camera
.position
.x
/16);
44 int minY
= (int) (camera
.position
.y
/16);
45 int maxX
= (int) ((camera
.position
.x
+camera
.viewportWidth
)/16)+1;
46 int maxY
= (int) ((camera
.position
.y
+camera
.viewportHeight
)/16)+1;
49 if (maxX
>gameProc
.world
.getWidth()) maxX
= gameProc
.world
.getWidth();
50 if (maxY
>gameProc
.world
.getHeight()) maxY
= gameProc
.world
.getHeight();
51 for (int y
=minY
; y
<maxY
; y
++) {
52 for (int x
=minX
; x
<maxX
; x
++) {
53 if (gameProc
.world
.getForeMap(x
,y
)>0) {
55 Items
.BLOCKS
.getValueAt(gameProc
.world
.getForeMap(x
,y
)).getTexture(),
56 x
* 16 - camera
.position
.x
,y
* 16 - camera
.position
.y
);
57 } else if (gameProc
.world
.getBackMap(x
,y
)>0) {
59 Items
.BLOCKS
.getValueAt(gameProc
.world
.getBackMap(x
,y
)).getTexture(),
60 x
* 16 - camera
.position
.x
,y
* 16 - camera
.position
.y
);
61 Assets
.shade
.setPosition(x
* 16 - camera
.position
.x
,y
* 16 - camera
.position
.y
);
62 Assets
.shade
.draw(spriteBatch
);
68 private void drawMob(Mob mob
) {
69 spriteBatch
.draw(Assets
.playerSkin
[mob
.dir
],
70 mob
.position
.x
- camera
.position
.x
, mob
.position
.y
- camera
.position
.y
);
73 private void drawPlayer(Player pl
) {
74 spriteBatch
.draw(Assets
.playerSkin
[pl
.dir
],
75 pl
.position
.x
- camera
.position
.x
, pl
.position
.y
- camera
.position
.y
);
78 private void drawGUI() {
79 spriteBatch
.draw(Assets
.invBar
, camera
.viewportWidth
/2 - Assets
.invBar
.getRegionWidth()/2,
80 0);//camera.viewportHeight - Assets.invBar.getRegionHeight());
81 for (int i
=0; i
<8; i
++) {
82 if (gameProc
.player
.inventory
[i
]>0) {
83 spriteBatch
.draw(Items
.BLOCKS
.getValueAt(gameProc
.player
.inventory
[i
]).getTexture(),
84 camera
.viewportWidth
/2 - Assets
.invBar
.getRegionWidth()/2+3+i
*20,
88 spriteBatch
.draw(Assets
.invCur
,
89 camera
.viewportWidth
/2 - Assets
.invBar
.getRegionWidth()/2 - 1 + 20*gameProc
.invSlot
,
93 spriteBatch
.draw(Assets
.touchArrows
[0],26,camera
.viewportHeight
-52);
94 spriteBatch
.draw(Assets
.touchArrows
[1],0,camera
.viewportHeight
-26);
95 spriteBatch
.draw(Assets
.touchArrows
[2],26,camera
.viewportHeight
-26);
96 spriteBatch
.draw(Assets
.touchArrows
[3],52,camera
.viewportHeight
-26);
97 spriteBatch
.draw(Assets
.touchSpace
, camera
.viewportWidth
/2-52, camera
.viewportHeight
-26);
98 spriteBatch
.draw(Assets
.touchLMB
, camera
.viewportWidth
-52, camera
.viewportHeight
-26);
99 spriteBatch
.draw(Assets
.touchRMB
, camera
.viewportWidth
-26, camera
.viewportHeight
-26);
100 spriteBatch
.draw(Assets
.touchToggleMode
, 78, camera
.viewportHeight
-26);
101 if (gameProc
.ctrlMode
==1) {
102 Assets
.shade
.setPosition(83, camera
.viewportHeight
-21);
103 Assets
.shade
.draw(spriteBatch
);
108 public void render() {
109 Gdx
.gl
.glClear(GL20
.GL_COLOR_BUFFER_BIT
);
113 for (Mob mob
: gameProc
.mobs
) {
116 drawPlayer(gameProc
.player
);
120 if (gameProc
.ctrlMode
==1) {
121 shapeRenderer
.begin(ShapeRenderer
.ShapeType
.Line
);
122 shapeRenderer
.setColor(Color
.ORANGE
);
123 shapeRenderer
.set(ShapeRenderer
.ShapeType
.Line
);
124 shapeRenderer
.rect(gameProc
.cursorX
* 16 - camera
.position
.x
,
125 gameProc
.cursorY
* 16 - camera
.position
.y
, 16, 16);