From 2cd752f25c23522d406d1a5833e9857fda99fbd3 Mon Sep 17 00:00:00 2001 From: Recrown Date: Tue, 11 Jul 2017 23:33:25 -0500 Subject: [PATCH] progress on debug screen and minor error resolved with map gen --- android/assets/1280x720/flake.png | Bin 248 -> 2379 bytes android/assets/1280x800/flake.png | Bin 317 -> 2826 bytes android/assets/1366x768/flake.png | Bin 294 -> 2659 bytes android/assets/1920x1080/flake.png | Bin 487 -> 4830 bytes android/assets/1920x1200/flake.png | Bin 503 -> 5790 bytes android/assets/2560x1440/flake.png | Bin 608 -> 8001 bytes android/assets/3840x2160/flake.png | Bin 1081 -> 19700 bytes android/assets/800x480/flake.png | Bin 167 -> 1179 bytes .../polyjet/audio/map/RhythmMapAlgorithm.java | 14 ++++++++- .../zero1hd/polyjet/entity/enemies/Flake.java | 2 +- .../zero1hd/polyjet/entity/enemies/Shard.java | 2 +- .../zero1hd/polyjet/ui/pages/AnalyzePage.java | 11 ++++--- .../polyjet/ui/stages/CreativeStage.java | 28 ++++++++++++++++-- .../polyjet/ui/windows/DifficultyWindow.java | 28 ++++++++++++------ 14 files changed, 66 insertions(+), 19 deletions(-) diff --git a/android/assets/1280x720/flake.png b/android/assets/1280x720/flake.png index d73c49677fffc28c12ab530271ba89c35015c65d..341d8a20bc749b458b28cfae5c0dec12f7bd86d3 100755 GIT binary patch literal 2379 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 P00000NkvXXu0mjftWAkl diff --git a/android/assets/1366x768/flake.png b/android/assets/1366x768/flake.png index 70562726a693637ab3774024b9a57d0d0085689f..78056c2be4dacf8ad25b09a884d5ed40f81fb72f 100755 GIT binary patch literal 2659 zcmV-p3Y_(cP)U7#_r^`(L8J0e;^ZRB#uQx(8Qm2`D=G=SEx#zsg^FHtUos)6n z#^~?n&6`oeU0}QrEldE>>~qJX#(fw5JfqFPiNYiyR)`ZO3sb;k_Svx*&W-+`IfLQj ziEa$WO%?7I?h$4R2|_?f77~SfIW|p*$EjGH8GlC{2{Swvqo-qFuCPRC5ITi!p;uTZ z^ayK()k2l9Ku8g0;7r`N?ubW~SZ-=j&K6c;V4F}aJRmF*Dmd06RIa1X!*^v z;ZY`r2qg)tgsnmyH~tY+d5Gv16YVajl7)jM(8e%FSS)nlXd%v7R??`GSTY{3-_xrs&jpm0=pjqMTPd7)p}BPbxPrXtrD1pK1GJ;bBi=Lx{ju9e!!m?pg`EqPVj?!Wu;_Q8>-$iY*L9;aP-X#!4)A>?9oPyo zljHS7-BjtE@UCF=I?J`!;P`r@l&*b>;?ANE)De&jC|ri)snC1ENYS4P-+H-`(dXAl zhrVIKpyAL;o^3~xo~$7wK{3elaaF+osY8_T;ov+cQxNvk?8TyuU1CroBP(Dnr)oQZ+yT+gmO zi2AgWJKSt78&0uc2oq^2Mr$zgp*11=OztG&?6E5P!RjBn6-Q6iqkmhFB z?jpE*xm&hwI_=kZ$}h zGYG>zrKl~E*1Qg*FwWRZ96t%|tkDfqM?)0y07_%hdB66(NR*3Eq%xcK8dAirMoLk<4isyy8!g6pvrhm`cMFyr^xbM$`{?jSg&q3+&zYqbA=~qzP$`BdqCQO{ zQ7BRoujHn+blC!HM8YqL!V!!&9Fx(%(e_tR=^S&DTao3XHip%vKxQ~lo|}k z#esC3*+Nv!_@Cg&HnNk)wP$-%=NjGTsL;n^Dvcl}k2p$180JE#Lp486fO9*M!Y8=- z0-UI3v5~+N3@5*7bW-=Ms01qIcuPpP0-HxK*iUx$@VkIF%r!?G=0+H&7n3SSqck_0 zu!3r&gWAP55z!dolV$hx|PXcvc#)1|0nQlxP@d_mJi zs+^Ri!uxCrdOr;)mm1iMGqb!W&x!2IBZCD*)fHnm^HA@#YuDDHJncB%jdO~j)CTCd&W-M@@Y=j3Wj%G4 zPCYK+{*jlI5whTxapl}3n~0@&Ptyv}@fNbRlL+Q<&b?$L5yKiVq8x`7GI>73HSY5i z$1UoYaLwvlF6zB3xLT+qWvy%i|P#RH6=EkK+qkH1k4V^lX(G@&HDkPGd7|J%|T()=3 z6ddoM@3;qBxwrLTE9}u?JP|j}E~69gA{yOLtefL~WMVf@t?d!YyQ~+U^Tz2{-LjDZ z&OKTTfnFXh9)$Zn1nBl2ErvPax^o^GaM7znDKfngAlvJbCGdM5=jDJr_BF!iY<`>W zUE={J;Ti%|IqHYI5ngOeN5ePL+S@?TYes%UT7|)>9UBqIlkjQ^M<44FuJQ1ly zRf?H+x`=ELqm!XaqqiukKoY}WF}0&Y?iEuAN=77gx9PwG`krzsCo=&@n}+l1UBGk6$M&CCRTpMYu1Tl z{+e|ZFS^UT7u}%0oneEP)W`dO=A=!N}@^GE^ znQ;x{OH9+W0bD~hKt2LzodOvkl?$|OTLE_zF;%*+q?C1@=QZ-RN`YOPrh^b-K)(O0 zGs(a;48z{{{SJ8vM1b?jDyp4vXO7LzB-^(A0LCB)dcNaX(=-*ny#S||#eC2zs!hST zGsk9Uk}b;`Jr2#RjgCMeY0v2PfEY=1@zPvIsgCw07*qoM6N<$f?vXUYybcN diff --git a/android/assets/1920x1080/flake.png b/android/assets/1920x1080/flake.png index 818e80e73979d663f545c82cf48396ed3a13fd4b..2da5d42681ad4a04e1289c170685362ecb3078ea 100755 GIT binary patch literal 4830 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 Eg2Ng600000 literal 487 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 literal 503 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 DZs;sN literal 608 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 delta 1009 zcmVo zbcB`!DJJ5JabiGAf)o>Q&cK?6I)Cp%iV3)8U^fkQ-h~tsaNEG{8tS|YDJI~hf%Ob^ z-h~vMoHTwJrJXj^x@e^69UoTl^#wnFMlt;zF{Mg8oFLZilW`AY}-HaxRb!QEApOKN`5U9hHHL3(jSJvS}Bl$w7>-GAh z;#6o{_t3ayTsF9`dY(jz1$1jPKlBo8&9s?)Mv@W3gamK6aQIv3G{=obV{3MH_DQSN zdfVxAz81+jXuHOJgXdi|P8rItKBpOxm^f(Q`IKRMnLEf%$HqY&rhlxJRiY~6&P4Or*avTVg<^uV&lk%S*k?nG;bK)?2W-^W_|vdW07Jc`Ho18hE5X_=w>*quB(g` zBjFQg)Zx%+Vi?`*zwA9AuL9Iz9HvSXNkC6CKsxNS|5cJ9nkz7&WI!>$7Up{S|5cJ9puwEy#!7N)401G4UwXgU6PS_F1BVI zSL>pYq7!-rto&tbR_mgXq7ya|tn4pHPPHx?DLSEn4~^zWt&2vAPMA2tF0RrjH40Kp zKskZa53BPoq(+zkMkI`6ROektF#*hUShCJ8M2ZPu2*ntY)OiXgf2gt*TOc)xNe`ouX80ZPk_%yN1TT#TsiOB!VLLoe*0Hf`q@R zt>2OF$yI|v6O(*-@7;Ib{oQl!Ip^N-`J((aHa7Z2jEEI2MVx5GHI{dNUvvEsw1MMA zqDT_SB25HDC)(PI)=bLZ9D)f54HT2b6fsSdiP>U0ZT4=MND*!RY66Iw8{3Ofj!2m! zv{+OjI7t+UuqYDaMF+eT6Rl_rF6%1hA+TQ@5VfM3w!xwYBHgewgGuF!S)v!#w}{5l z)_kx?Y!|o11#woKZ)j+^uj^H@Q;Zf_2=!#$gJP&C6*EPD#AANvUbA#jeSQ6Di98W^ z?OvSI{R{C~d=hWOW3?Z`6B|T178kNCwM-xjgZz<%V_8#k?{*FPRM%sy-$=1TA{WGU zz58I3P}@y$N|cC&Vx!2$>JZ{(xV^KbULc+^y$* zx(*=9L&QK4K^W&+8_&$lC2K91%&od^Ax-SV;do%7-tCs)O>?_2@jFb~MEZydwObY} z!0lZToWA8oDXnl%LLAiKb>?DQS3O@5b-3G><_H$`!P;Dwsym{in2g0pypP-skb_n< zGHtyy_($i#H!wvw?^Fsz)4m(WzW3Rh+8 z@(&(Fn6i+V&4AW(#r#iY|>^4}FMrrv)Oc3o}jG0rNDgbriHNnC1ybjv0n zOn4oGSXElDww?4}M()pM65T04W170!4X!*V?`o(6A}!rIP6D`FI5H3K$@pYZb+%hHDf4<$1a|hE&{I+kcVsfC7(;aZefh z+#^k&IhHC*Zj`oc+RMDZ>u8-xfxsm9cS@gD+}qu_W(`+B!y}=PtIE%7^bSs$kKoOyB5jGYg~ R*8^>4@O1TaS?83{1OR^+Kjr`c diff --git a/core/src/zero1hd/polyjet/audio/map/RhythmMapAlgorithm.java b/core/src/zero1hd/polyjet/audio/map/RhythmMapAlgorithm.java index c273678..f041e19 100755 --- a/core/src/zero1hd/polyjet/audio/map/RhythmMapAlgorithm.java +++ b/core/src/zero1hd/polyjet/audio/map/RhythmMapAlgorithm.java @@ -8,8 +8,12 @@ import com.badlogic.gdx.utils.FloatArray; import zero1hd.polyjet.Polyjet; import zero1hd.polyjet.audio.AudioAnalyzer; import zero1hd.polyjet.entity.Entities; +import zero1hd.polyjet.util.MiniEvents; +import zero1hd.polyjet.util.MiniSender; public class RhythmMapAlgorithm implements Runnable { + private MiniSender sender; + private FloatArray bassPeaks; private FloatArray UMPeaks; private FloatArray overlappedPeaks; @@ -23,6 +27,8 @@ public class RhythmMapAlgorithm implements Runnable { private volatile int progress; public RhythmMapAlgorithm(AudioAnalyzer analyzer, float speedMod, float healthMod) { + sender = new MiniSender(); + bassPeaks = analyzer.getBassPeaks(); UMPeaks = analyzer.getUMPeaks(); overlappedPeaks = analyzer.getOverlappedPeaks(); @@ -41,7 +47,7 @@ public class RhythmMapAlgorithm implements Runnable { for (int index = 0; index < bassPeaks.size; index++) { if (bassPeaks.get(index) != 0 || UMPeaks.get(index) != 0) { int warningTime = (int) ((3/speedMod)*windowPerSecond); - if (overlappedPeaks.get(index + warningTime) != 0) { + if ((index+warningTime <= bassPeaks.size) && overlappedPeaks.get(index + warningTime) != 0) { //TODO basic void circle spawning float endRadius = overlappedPeaks.get(index+3)*Polyjet.GAME_AREA_WIDTH; @@ -73,6 +79,8 @@ public class RhythmMapAlgorithm implements Runnable { } progress = (int) (100f*index/bassPeaks.size); + + sender.send(MiniEvents.MAPGEN_ITERATED); } map.endBuild(); } @@ -84,4 +92,8 @@ public class RhythmMapAlgorithm implements Runnable { public synchronized int getProgress() { return progress; } + + public MiniSender getSender() { + return sender; + } } diff --git a/core/src/zero1hd/polyjet/entity/enemies/Flake.java b/core/src/zero1hd/polyjet/entity/enemies/Flake.java index 402d423..0184385 100755 --- a/core/src/zero1hd/polyjet/entity/enemies/Flake.java +++ b/core/src/zero1hd/polyjet/entity/enemies/Flake.java @@ -30,7 +30,7 @@ public class Flake extends Actor implements Poolable, Entity { public void init(float x, float y, float rate, float fuse, float angle, Shard... shards) { this.shards = shards; - setSize(1f, 1f); + setSize(3f, 3f); this.rate = rate; this.timer = fuse; hitbox.setSize(getWidth(), getHeight()); diff --git a/core/src/zero1hd/polyjet/entity/enemies/Shard.java b/core/src/zero1hd/polyjet/entity/enemies/Shard.java index e79b253..c668728 100755 --- a/core/src/zero1hd/polyjet/entity/enemies/Shard.java +++ b/core/src/zero1hd/polyjet/entity/enemies/Shard.java @@ -71,7 +71,7 @@ public class Shard extends Actor implements Entity, Poolable { @Override public void draw(Batch batch, float parentAlpha) { sprite.setCenter(getX()+center.x, getY()+center.y); - sprite.setColor((float)hp/(float)maxHp, 0f, 0f, 1f); + sprite.setColor(1.3f-((float)hp/(float)maxHp), 1.3f-((float)hp/(float)maxHp), 1.3f-((float)hp/(float)maxHp), 0.75f); sprite.draw(batch); batch.setColor(Color.WHITE); super.draw(batch, parentAlpha); diff --git a/core/src/zero1hd/polyjet/ui/pages/AnalyzePage.java b/core/src/zero1hd/polyjet/ui/pages/AnalyzePage.java index 32f8a5f..49bc4e8 100755 --- a/core/src/zero1hd/polyjet/ui/pages/AnalyzePage.java +++ b/core/src/zero1hd/polyjet/ui/pages/AnalyzePage.java @@ -230,11 +230,18 @@ public class AnalyzePage extends Page implements MiniListener { info[3].setText("data cleaning done."); info[4].addAction(Actions.color(Color.BLACK, 0.75f)); mapGenAlgorithm = new RhythmMapAlgorithm(audioAnalyzer, speedModifier.getValue(), healthModifier.getValue()); + mapGenAlgorithm.getSender().addListener(this); mapGenThread = new Thread(mapGenAlgorithm); mapGenThread.start(); + startTime = System.currentTimeMillis(); break; case MAPGEN_ITERATED: info[4].setText("Generating map: " + mapGenAlgorithm.getProgress()); + break; + case MAP_GENERATED: + endTime = System.currentTimeMillis(); + info[5].setText("Done. Generation time: " + ((endTime - startTime)/1000f) + "s"); + info[5].addAction(Actions.color(Color.BLACK, 0.75f)); default: break; } @@ -246,8 +253,4 @@ public class AnalyzePage extends Page implements MiniListener { info[3].setText("finalizing data..."); info[3].addAction(Actions.color(Color.BLACK, 0.75f)); } - - private void generateMap() { - - } } diff --git a/core/src/zero1hd/polyjet/ui/stages/CreativeStage.java b/core/src/zero1hd/polyjet/ui/stages/CreativeStage.java index 8b0d25b..764e818 100755 --- a/core/src/zero1hd/polyjet/ui/stages/CreativeStage.java +++ b/core/src/zero1hd/polyjet/ui/stages/CreativeStage.java @@ -15,8 +15,10 @@ import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import zero1hd.polyjet.Polyjet; import zero1hd.polyjet.audio.AudioAnalyzer; +import zero1hd.polyjet.audio.map.RhythmMapAlgorithm; import zero1hd.polyjet.screens.MainMenu; import zero1hd.polyjet.ui.windows.BeatViewer; +import zero1hd.polyjet.ui.windows.DifficultyWindow; import zero1hd.polyjet.ui.windows.FPSWindow; import zero1hd.polyjet.ui.windows.GraphWindow; import zero1hd.polyjet.ui.windows.MusicController; @@ -34,8 +36,10 @@ public class CreativeStage extends Stage implements MiniListener { GraphWindow graphViewer; VolumeWindow volumeWindow; SpawnerWindow spawnerWindow; + DifficultyWindow diffWindow; AudioAnalyzer analyzer; + RhythmMapAlgorithm mapGen; Window toolbox; public CreativeStage(final Polyjet core, final MainMenu mainMenu, final GamePlayArea gpa) { @@ -48,6 +52,7 @@ public class CreativeStage extends Stage implements MiniListener { graphViewer = new GraphWindow("Peak Values", core.getDefaultSkin()); volumeWindow = new VolumeWindow("Volume adjustments", core.getDefaultSkin(), core.getPrefs()); spawnerWindow = new SpawnerWindow("Spawn Tool", core.getDefaultSkin(), gpa.ec, gpa); + diffWindow = new DifficultyWindow(core.getDefaultSkin()); //Back button TextButton backButton = new TextButton("Back", core.getDefaultSkin()); @@ -171,7 +176,21 @@ public class CreativeStage extends Stage implements MiniListener { } }); toolboxToolSet.add(spawnToolCheckBox); + toolboxToolSet.row(); + final CheckBox diffAdjusterCheckBox = new CheckBox(" Difficulty", core.getDefaultSkin()); + diffAdjusterCheckBox.addListener(new ChangeListener() { + + @Override + public void changed(ChangeEvent event, Actor actor) { + if (diffAdjusterCheckBox.isChecked()) { + addActor(diffWindow); + } else { + diffWindow.remove(); + } + } + }); + toolboxToolSet.add(diffAdjusterCheckBox); ScrollPane scroller = new ScrollPane(toolboxToolSet, core.getDefaultSkin()); toolbox.add(scroller).expand().fill(); @@ -225,16 +244,19 @@ public class CreativeStage extends Stage implements MiniListener { analyzer.startAnalyticalThread(musicSelector.getSelectedMusic()); break; case SPECTRAL_FLUX_DONE: - analyzer.runThresholdCleaning(); + analyzer.runThresholdCleaning(diffWindow.getSensitivityVal()); break; case MUSIC_DATA_CLEANED: + mapGen = new RhythmMapAlgorithm(analyzer, diffWindow.getSpeedModifier(), diffWindow.getHealthModifier()); + Thread mapGenThread = new Thread(mapGen); + mapGenThread.start(); + break; + case MAP_GENERATED: musicPlayBackControls.setAudiofile(musicSelector.getSelectedMusic()); volumeWindow.setMusic(musicPlayBackControls.getAudiofile()); beatViewer.setMusic(musicPlayBackControls.getAudiofile(), analyzer); graphViewer.setData(analyzer.getBassPeaks(), analyzer.getUMPeaks(), musicPlayBackControls.getAudiofile()); break; - case MAP_GENERATED: - break; default: break; } diff --git a/core/src/zero1hd/polyjet/ui/windows/DifficultyWindow.java b/core/src/zero1hd/polyjet/ui/windows/DifficultyWindow.java index 7e927a6..7fc495a 100755 --- a/core/src/zero1hd/polyjet/ui/windows/DifficultyWindow.java +++ b/core/src/zero1hd/polyjet/ui/windows/DifficultyWindow.java @@ -15,8 +15,8 @@ public class DifficultyWindow extends Window { private Slider healthModifier; private Label healthModifierTitle; - public DifficultyWindow(String title, Skin skin) { - super(title, skin, "tinted"); + public DifficultyWindow(Skin skin) { + super("Difficulty Adjuster", skin, "tinted"); sensitivityRating = new Slider(-5f, 5f, 1f, false, skin); sensitivityRating.setValue(0f); sensitivityRating.addListener(new ChangeListener() { @@ -29,8 +29,7 @@ public class DifficultyWindow extends Window { sensitivityRatingTitle = new Label("Base Difficulty: " + sensitivityRating.getValue(), skin, "sub-font", skin.getColor("default")); add(sensitivityRatingTitle); - row(); - add(sensitivityRating).fillX(); + add(sensitivityRating); row(); @@ -44,8 +43,7 @@ public class DifficultyWindow extends Window { }); speedModifierTitle = new Label("Speed Modifier: " + speedModifier.getValue(), skin, "sub-font", skin.getColor("default")); add(speedModifierTitle); - row(); - add(speedModifier).fillX(); + add(speedModifier); row(); @@ -60,8 +58,20 @@ public class DifficultyWindow extends Window { }); healthModifierTitle = new Label("Health modifier: " + healthModifier.getValue(), skin, "sub-font", skin.getColor("default")); add(healthModifierTitle); - row(); - add(healthModifier).fillX().spaceBottom(15f); + add(healthModifier); + + pack(); + } + + public float getSensitivityVal() { + return sensitivityRating.getValue(); + } + + public float getSpeedModifier() { + return speedModifier.getValue(); + } + + public float getHealthModifier() { + return healthModifier.getValue(); } - }