From ed150b6629e3e048996e72d762846e45bd416b3c Mon Sep 17 00:00:00 2001 From: John Date: Fri, 17 Jun 2022 13:32:53 -0400 Subject: [PATCH] Add clouds, fix ghost keypresses after load from save, add example dialogue --- img/backgrounds/cloud4.png | Bin 0 -> 1769 bytes img/backgrounds/cloud5.png | Bin 0 -> 1900 bytes img/backgrounds/cloud6.png | Bin 0 -> 2028 bytes img/backgrounds/cloud7.png | Bin 0 -> 1622 bytes img/backgrounds/cloud8.png | Bin 0 -> 1585 bytes img/backgrounds/cloud9.png | Bin 0 -> 1519 bytes src/GamePanel.java | 21 +++++++++++++++++---- src/GenericSprite.java | 10 +++++----- 8 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 img/backgrounds/cloud4.png create mode 100644 img/backgrounds/cloud5.png create mode 100644 img/backgrounds/cloud6.png create mode 100644 img/backgrounds/cloud7.png create mode 100644 img/backgrounds/cloud8.png create mode 100644 img/backgrounds/cloud9.png diff --git a/img/backgrounds/cloud4.png b/img/backgrounds/cloud4.png new file mode 100644 index 0000000000000000000000000000000000000000..f53c0d18a6810e996a57d3d74f3fd28278246565 GIT binary patch literal 1769 zcmVw^XBmL=J4|5@9)Ld-pAeI=kW98?eoRl;m6(M=kfFB@AKyG^ycpF=I`?7@ABpF z@!jt30002q>+ss??$+k)-0JV(?eXOA^U~z%%;4wLE`hC z=<@Z+-sMm}b7cSk03mczPE*f+Z{N>PuU}7(pASDTZ?BIpAMc;vzkh!}&mZq!zYhQ) z+JsdA00q%WL_t(|+TEP#Vxu4sfZ4XW&0%Vy#;ZA+(}Q{cms{JkNi<#{DD?Ze+aq6r z0fqte(G;FJF=1W8KDU)Y1)_>GeIRMm?bkIB{j?zO*~1@#aL8JR+82Vv&RriQsv>uZ1ICccEq+S zj-<7~oLG3GNP65HF`kMdxxyToh#{%*bi}qLg5(7A#T7uZk9lLZE@|1^B^RbMbMF|2 zX*Da!Gq4tUYmVBSEKq;`VB}nFd)l9Z=buQi`!?V@|85O5X?M|lI?fa z-&m{ilPp-yUDoGq7>4je5T4GTEiQ2BCC%*Lx8H38$Rs>p_yr)3k7QQVxonS6M6io^ z#UCz`&r{^S#PG_AQ*%x|4wC8h+%ANQ9QbG!91|fX4H=z}K)@+#))Fyj$mr|?8UDIa zOH{uhKaW5Tm&VlCO5Q{3B?Kx09wT$cQqsEp*o_ag>^NBVnMpdgU1StO4LA(U?6eoL zr1ww~u=b%A9NN-lAo-|>&rlZ*mQHQS$>Yp%0uazL>tKOIGEor_1;7IKG1jOhIkDM0 zg3sR4qL)mTS?!O&2tVTAlvO2@r*r!Nm~mh}jd+xj$>NoWp(DVCdw{Jb=_J!R2bPZD z?|E;a5&6CfZ-Ffb-k}GPJMMrrtdm?5a!ECn$6@XW0qY3sI)svHay&*y_L6X7zkxPM zB)wEczyUxC%g5=mR5F!9UIQNj_Q~g!RaG(-bRr*k;m2wAn6J$HmDA=kVq=NO&O1VA zmS9_FZTq_;K}01wJ7}KchJLZ|lfOemo%INFQAcNvegsmXIv0%h`btoN2NlsA9Fe03(t*i*T3h z7ndG|f;iITX)RQ#-Z2u!k!B(>QI#U=oeu)>Nhzro^ws?)0HFx!B)$Bb9iImfjy09! zEbqV90SHJ)BWdP!)B}jgg(AAvslDr`c3WIOA)KFqKxslK@H}>4`!l1_k zIw>0xp!B{EdQ5(tq;$;QT|VBZL=P1nk~(H4ViOmg(JiqY9pKMM+Rp`qadmmL34Qo8 zl2hxs6m;|sQj;2!u9;c6+>u){xwSI$?uGPZb`0)Aahm#&yR=5`;wB>fe=+U7Uap#u+Re24p(p{}FPs=xD^g`|U zkKsdL^Cd6EZs&VlN%vQL9kYGytYVj4DlY_okN3g+x39cXDE64YTQ~1kXqNGHzO821 zRUUu7PU<)q@pyr-6SG7a?q(YB<_8H`MY%^J#U5kI#5zytLQl&`hBT) zvKygOb^ZLVk4Qc?@v|7?=g8=+hydF{2Kg9+|Lu^c&IC5>L2$X<70TXjN(XP00000 LNkvXXu0mjf?2(P_ literal 0 HcmV?d00001 diff --git a/img/backgrounds/cloud5.png b/img/backgrounds/cloud5.png new file mode 100644 index 0000000000000000000000000000000000000000..05e34609963cf9152e3819c4fb6fb661da0e7e82 GIT binary patch literal 1900 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 U8E<*Ln*aa+07*qoM6N<$g28=AzW@LL literal 0 HcmV?d00001 diff --git a/img/backgrounds/cloud8.png b/img/backgrounds/cloud8.png new file mode 100644 index 0000000000000000000000000000000000000000..8684852ef0eced6ac72377cb7fd69c4cd86cb6ba GIT binary patch literal 1585 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 V-l@~A!T$gN002ovPDHLkV1hi970Lhr literal 0 HcmV?d00001 diff --git a/src/GamePanel.java b/src/GamePanel.java index 7901a24..d881d4f 100644 --- a/src/GamePanel.java +++ b/src/GamePanel.java @@ -73,7 +73,8 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ public BufferedImageWrapper cloud2 = new BufferedImageWrapper(("img/backgrounds/cloud2.png")); public BufferedImageWrapper cloud3 = new BufferedImageWrapper(("img/backgrounds/cloud3.png")); public BufferedImageWrapper bomb; - public BufferedImageWrapper onePortrait = new BufferedImageWrapper(("img/dialogue/Gunther.png")); + public BufferedImageWrapper narratorPortrait = new BufferedImageWrapper(("img/dialogue/Gunther.png")); + public BufferedImageWrapper villainPortrait = new BufferedImageWrapper(("img/dialogue/Bouncer.png")); public String lastText; @@ -85,9 +86,21 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ cloudTwoBackground = new BackgroundImage(600, 250, cloud2, cloud2.image.getWidth(), cloud3.image.getHeight(), 5, camera); cloudThreeBackground = new BackgroundImage(1000, 200, cloud3, cloud2.image.getWidth(), cloud3.image.getHeight(), 5, camera); pauseMenu = new PauseMenu(GAME_HEIGHT/2, 100, 400, 400, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 60), "Paused"); - dialogueMenu = new DialogueMenu(GAME_HEIGHT-100, 200, new Font(Font.MONOSPACED, Font.BOLD, 20), onePortrait, true); - dialogueArray.add("Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum"); - dialogueArray.add("I told you so"); + dialogueMenu = new DialogueMenu(GAME_HEIGHT-100, 200, new Font(Font.MONOSPACED, Font.BOLD, 20), narratorPortrait, true); + dialogueArray.add("Did you ever hear the tragedy of Darth Plagueis The Wise?"); + dialogueArray.add("I thought not."); + dialogueArray.add("It’s not a story the Jedi would tell you."); + dialogueArray.add("Darth Plagueis was a Dark Lord of the Sith, " + + "so powerful and so wise he could use the Force to influence " + + "the midichlorians to create life… " + + "He had such a knowledge of the dark side that " + + "he could even keep the ones he cared about from dying. " + + "The dark side of the Force is a pathway to many abilities some consider to be unnatural. " + + "He became so powerful… the only thing he was afraid of was losing his power, " + + "which eventually, of course, he did."); + dialogueArray.add("Unfortunately, he taught his apprentice everything he knew, then his apprentice killed him in his sleep."); + dialogueArray.add("Ironic."); + dialogueArray.add("He could save others from death, but not himself."); try { // load player sprites from disk here for (int i = 0; i < 11; i++) { diff --git a/src/GenericSprite.java b/src/GenericSprite.java index eaa40ef..125e15f 100644 --- a/src/GenericSprite.java +++ b/src/GenericSprite.java @@ -19,11 +19,11 @@ public class GenericSprite extends Rectangle implements Serializable { public final double speedCapy = 20; public int WIDTH; //size of ball public int HEIGHT; //size of ball - public boolean rightPressed = false; - public boolean leftPressed = false; - public boolean upPressed= false; - public boolean downPressed = false; - public boolean isGrounded = false; + transient public boolean rightPressed = false; + transient public boolean leftPressed = false; + transient public boolean upPressed= false; + transient public boolean downPressed = false; + transient public boolean isGrounded = false; public boolean isPlayer = false; //constructor creates ball at given location with given dimensions