From d4818c07a89e17a6615ea77ccef1d61d92b3fb29 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 2 May 2022 21:05:10 -0400 Subject: [PATCH] Add enemy idle animation, stage for future close-up encounter anims --- assets/enemy-idle.atlas | 20 +++++++ assets/enemy-idle.png | Bin 0 -> 730 bytes assets/player-idle | 27 ++++++++++ assets/stage.aseprite | Bin 0 -> 1930 bytes assets/stage.png | Bin 0 -> 2353 bytes .../watersymbol/screens/GameScreen.java | 51 +++++++++++++++++- 6 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 assets/enemy-idle.atlas create mode 100644 assets/enemy-idle.png create mode 100644 assets/player-idle create mode 100644 assets/stage.aseprite create mode 100644 assets/stage.png diff --git a/assets/enemy-idle.atlas b/assets/enemy-idle.atlas new file mode 100644 index 0000000..5ab3e93 --- /dev/null +++ b/assets/enemy-idle.atlas @@ -0,0 +1,20 @@ + +enemy-idle.png +size: 64, 32 +format: RGBA8888 +filter: Nearest, Nearest +repeat: none +Sprite-0009 + rotate: false + xy: 20, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +Sprite-0010 + rotate: false + xy: 2, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 diff --git a/assets/enemy-idle.png b/assets/enemy-idle.png new file mode 100644 index 0000000000000000000000000000000000000000..d2eb88459ad9ffc900420715d186b8182c327932 GIT binary patch literal 730 zcmV<00ww*4P)TU$*FjY?gRs>H=8DWy;;#EMWgq6a}Gc7;n`Tr4@wzWAfta551l%;&2>Z#ooeO} zFDoIakFo`@ps4lgqU(s)av3VX@+-j42k*&tH$${3D)nhNVsH#=57UvIyytY{@2jLt0po*B6duD?s%tzrp4Wm~#z=+=7|t4is@JDh0N+iaf}sl| zd-&?Hz)rE?<&p`O&HTGXK-KHh-l|Xm$fJCM2bYEa{A`S_f3H@k02^3dUJ-2q`Aps# zU=OcG0d_E0c~bxkH*0opSiMiLX5sCVX|T62EPVV^fNTf&`BdiTVD;O3So*R=9%iAW z#&-Y)cgVVw&B_EFXkILq+%P{hSn%>(3B(6yD$Pvs2b;QK!1L*XXtSvgn-@8E+uE7D2s`%o zsPpg$hQ2#F0f+jp1BOJU2CqVTD91lv&KI343}0V95N)JBqvIwO!am!AcfeMx)VaG#ZUYqiH0+0n+WYBh9(vzW@LL M07*qoM6N<$g41tMPXGV_ literal 0 HcmV?d00001 diff --git a/assets/player-idle b/assets/player-idle new file mode 100644 index 0000000..d7f7676 --- /dev/null +++ b/assets/player-idle @@ -0,0 +1,27 @@ + +player-idle.png +size: 64, 32 +format: RGBA8888 +filter: Nearest, Nearest +repeat: none +player-idle1 + rotate: false + xy: 2, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +player-idle2 + rotate: false + xy: 38, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +player-idle3 + rotate: false + xy: 20, 2 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 diff --git a/assets/stage.aseprite b/assets/stage.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..050309e29c0fccfc212714ae27638778e9b1a653 GIT binary patch literal 1930 zcmcJLk5kfF0>Hm!u9=l>KcG?zqFuT(^G9wa%Bgs1YC*a;nD{$eQ`nU;Nkh`LR?~13 zZO?2G5o^746rE;7as{caHqDg~6jMRh&_GQ*R76GPUd`>?{sZ^E^FH(Dec#OI^B&U{ zf_|^Hg50fS5CXD-Am}2P{~KWM!zQ#HeE*NJ8TeNWHXp4vKmY^N7V%N}C*2TO??oW~ zyK~@Ae?BfP5OfgX1$gSPFJQ8_2Ox{+12~%gIp82K8BqU>4QQS_4*285IY4rUJK%|b zrU8bfx&cOn9Rl?9^#=6wqXD`n+yIPD8v{(Lv;fBUj01KLuL4@YfS^jg5HLTt5HOWY z28<#`0A}KtfQ_D>fP;}qfCG%50a+EHfJ~~pg$ypR@x!|#zye$X+yLZ*b`TD#K{DtC zv7i)Wf<_Ps>OdOk0#Tp{N3LPI(U5>1O)AbD3E2tA4lx1LZGXhnX0oT!|q!O829u(rh7dJFq`cB#USw+sv_e| z4Q#_daD8qQ!6B?CwsSP35+-e-m!wlP58@W$E6DxhckriWr0`g%w9#qc?owsr0d_cCpX)ZKSt3=H$1&R-A zL%XY2%`h2O{7ObQ2I0|Z4aOfu7`tsZdM zQl)Ty%$IgK>9}!;hV=#_VNF6VFi&rc zVq{~VUa@Q2OOvqnVW|14Pkz=0ZxJ8$XW-897?J_m^1<NnA+J$s%-aN!gm> zK`YsWwD?m3dSow?R^V4}@9^Up{f{YKksbaNoK*HQJll~VwdQY?pBLsY+3+2DaYu9- zq}YLQ?S`@_VgJ+*SHey^w-9;8y!9glC9Wz#y+gj?$_?(i%}8PUzgvh`>+EN_+ndj! z7Y+O7=roRS*|7${WU`t$(IPVj>J!U}JoEIf1NCc7$1(VoM|8E#R6e!(&eU}QzVz6m zn5-uGt#I6#1q)-@d_IQoW@Qtmr0g+8TdUO8)kr2Z;W=-_l1DJ7Mq#q(!jq_T#2=Q)B!6kKYa(WrA# z$KkVzq&>Y%uMRfx`P#Eg!d0E)idN*iO}p}2Acwp9eOyaQL8~&5Rhdhr2Gj?II41th zD`(T|7g`19R(8morBD102BTCFyC1v#t*65{3GM>x=n z%=IFk=J%8D*IrF?(I^S}EG0~FOEr&9m!F(CzqIybaA54xto_mcV42WZ{>O zP$J{yT{{PMx3T*dUDR&ntBB`#Rag3YYq>k>Dn}}GiO20u{WqQ)wc-a7x2NP2cGM1t)Olx8FCcue5E({Q4=GRHi7tYY@Jx`z(uJ zZCF@+Fr}{_N~vE~GcH_og3%54sw2L3#UPEpcoG_P^|uB+jEk*8QKPJod$KesNcw^q z!@oEBDZl9R(dpp<(@|1fA-B5s+I@}g7TnqT&IlV@iw~xJ^>_47apxygKDuR6xOQZZ zvqY=nQECO5p%{;b-QjMsjDXI+@K|UU<*q(^oD{W~@jMh2)VM3@n*%svLTq=t=cw9i e!D+-(@^IplSVwL~;Dg>@zs`zXvVN3aVE7Lmy?8MI literal 0 HcmV?d00001 diff --git a/assets/stage.png b/assets/stage.png new file mode 100644 index 0000000000000000000000000000000000000000..037c65e0ae3c1bb7fa1c1c5d1e88bb793682909d GIT binary patch literal 2353 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 playerIdleAnimation; + Animation enemyIdleAnimation; + ArrowSpritesheet arrowSpritesheet; // data for in-turn actions @@ -62,6 +67,9 @@ public class GameScreen implements Screen { TextButton unitNameButton; + boolean currentlyParticipatingInStageEvent = false; + Texture stageTexture; + GameScreen(WaterSymbol game) { this.game = game; @@ -78,6 +86,7 @@ public class GameScreen implements Screen { playerTexture = new Texture(Gdx.files.internal("player.png")); playerSprite = new Sprite(playerTexture); playerIdleAnimation = new Animation(0.500f, new TextureAtlas("player-idle.atlas").getRegions(), Animation.PlayMode.LOOP_PINGPONG); + enemyIdleAnimation = new Animation(0.500f, new TextureAtlas("enemy-idle.atlas").getRegions(), Animation.PlayMode.LOOP_PINGPONG); arrowSpritesheet = new ArrowSpritesheet(); cursorTexture = new Texture("cursor.png"); @@ -97,6 +106,8 @@ public class GameScreen implements Screen { unitNameButton = new TextButton("", style); table.top().left().add(unitNameButton); + stageTexture = new Texture("stage.png"); + startNewTeamTurn(Unit.Team.Player); } @@ -352,7 +363,13 @@ public class GameScreen implements Screen { game.batch.setProjectionMatrix(camera.combined); for(Unit unit : units) { - TextureRegion currentFrame = playerIdleAnimation.getKeyFrame(stateTime, true); + + TextureRegion currentFrame = null; + if(unit.team == Unit.Team.Player) { + currentFrame = playerIdleAnimation.getKeyFrame(stateTime, true); + } else { + currentFrame = enemyIdleAnimation.getKeyFrame(stateTime, true); + } if(unit.hasTakenAction) { game.batch.setColor(0.5f, 0.5f, 0.5f, 1.0f); @@ -369,6 +386,38 @@ public class GameScreen implements Screen { return; } + if(currentlyParticipatingInStageEvent) { + game.batch.end(); + + Gdx.gl.glEnable(GL20.GL_BLEND); + Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); + + ShapeRenderer renderer = new ShapeRenderer(); + renderer.begin(ShapeRenderer.ShapeType.Filled); + renderer.set(ShapeRenderer.ShapeType.Filled); + renderer.setProjectionMatrix(camera.combined); + renderer.rect( + camera.position.x - camera.viewportWidth, + camera.position.y - camera.viewportHeight, + camera.viewportWidth * 2, + camera.viewportHeight * 2, + new Color(0.0f, 0.0f, 0.0f, 0.5f), + new Color(0.0f, 0.0f, 0.0f, 0.5f), + new Color(0.0f, 0.0f, 0.0f, 0.5f), + new Color(0.0f, 0.0f, 0.0f, 0.5f) + ); + renderer.end(); + + game.batch.begin(); + + game.batch.setColor(1.0f, 1.0f, 1.0f, 1.0f); + game.batch.draw(stageTexture, camera.position.x - stageTexture.getWidth() / 2, camera.position.y - stageTexture.getHeight() / 2); + + game.batch.end(); + + return; + } + if(currentTurnTeam == Unit.Team.Player) { if(currentUnit == null) { if (Gdx.input.isKeyPressed(Input.Keys.ENTER) || Gdx.input.isButtonPressed(0)) {