Implemented level 9

Concurrency-bug-fixes in soundManager
This commit is contained in:
= 2018-03-18 14:47:02 +01:00
parent 7684692e53
commit e9142119a0
3 changed files with 60 additions and 48 deletions

View File

@ -600,17 +600,17 @@
</stars> </stars>
<energy x="10.900037" y="0.33333334"/> <energy x="10.900037" y="0.33333334"/>
</level> </level>
<level packId="2" id="9" goalX="26.813334" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="2" id="9" goalX="28.29334" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.5266659" width="7.053332"/> <tileData x="0.5266659" width="7.053332"/>
<tileData x="6.0975885" width="2.8885126"/> <tileData x="6.210922" width="3.115179"/>
<tileData x="8.564014" width="0.39834118"/> <tileData x="8.764023" width="0.34500694"/>
<tileData x="11.516363" width="2.932355"/> <tileData x="11.722952" width="2.998849"/>
<tileData x="17.878101" width="1.5211315"/> <tileData x="19.191525" width="1.8543034"/>
<tileData x="25.215616" width="7.921894"/> <tileData x="26.695623" width="7.921894"/>
</terrainTiles> </terrainTiles>
<ceilingTiles class="java.util.ArrayList"> <ceilingTiles class="java.util.ArrayList">
<tileData x="11.906667" width="29.813334"/> <tileData x="12.64667" width="31.29334"/>
</ceilingTiles> </ceilingTiles>
<obstacles class="java.util.ArrayList"> <obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.7096655" rightEdge="2.7036655" height="0.28" y="-0.46000004"> <obstacleData floating="false" moving="false" deadly="false" leftEdge="1.7096655" rightEdge="2.7036655" height="0.28" y="-0.46000004">
@ -622,78 +622,81 @@
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.3816662" rightEdge="4.451666" height="0.28" y="-0.07000004"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="3.3816662" rightEdge="4.451666" height="0.28" y="-0.07000004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.0070043" rightEdge="6.153004" height="0.586" y="0.093333334"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="5.2336707" rightEdge="6.3796706" height="0.586" y="0.093333334">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.2228346" rightEdge="7.6238346" height="0.395" y="0.08666667"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="6.449501" rightEdge="7.850501" height="0.395" y="0.08666667">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="8.072022" rightEdge="9.448022" height="0.433" y="0.3266665"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="8.298698" rightEdge="9.674698" height="0.433" y="0.3266665">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.872514" rightEdge="12.987514" height="1.185" y="-0.0075000525"> <obstacleData floating="false" moving="false" deadly="false" leftEdge="11.0996895" rightEdge="13.21369" height="1.261" y="0.030499995">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="8.817183" rightEdge="9.556183" height="0.293" y="-0.81333303"> <obstacleData floating="true" moving="true" deadly="false" leftEdge="8.990523" rightEdge="9.729524" height="0.293" y="-0.873333">
<moveComponent length="1.83" rotation="45.236" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.551"/> <moveComponent length="1.83" rotation="43.351" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.551"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="13.030026" rightEdge="13.530026" height="0.331" y="-1.0133333"> <obstacleData floating="true" moving="true" deadly="false" leftEdge="13.256703" rightEdge="13.756703" height="0.331" y="-1.1066666">
<moveComponent length="3.479" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.245"/> <moveComponent length="4.51" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.245"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="13.819201" rightEdge="14.634202" height="1.146" y="0.07999999"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="14.152548" rightEdge="14.967548" height="0.65" y="0.32666662">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="14.684545" rightEdge="16.315544" height="0.5" y="0.33999988"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="15.837898" rightEdge="17.468899" height="0.5" y="0.49333307">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="15.113712" rightEdge="16.259712" height="0.306" y="-0.3799999"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="16.527065" rightEdge="17.673065" height="0.306" y="-0.40666655">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="16.35821" rightEdge="17.555208" height="0.357" y="0.34666663"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="17.524881" rightEdge="18.72188" height="0.357" y="0.4466665">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.684023" rightEdge="19.136023" height="0.331" y="-0.43450004"> <obstacleData floating="false" moving="false" deadly="false" leftEdge="19.16403" rightEdge="20.61603" height="0.331" y="-0.43450004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.656307" rightEdge="22.210308" height="0.357" y="-0.42150003"> <obstacleData floating="false" moving="false" deadly="false" leftEdge="22.136314" rightEdge="23.690315" height="0.357" y="-0.42150003">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="false" moving="true" deadly="true" leftEdge="22.251436" rightEdge="22.608435" height="0.331" y="-0.43450004"> <obstacleData floating="false" moving="true" deadly="true" leftEdge="23.731443" rightEdge="24.088442" height="0.331" y="-0.43450004">
<moveComponent length="2.191" rotation="90.0" startOffset="0.0" direction="1.0" speed="1.0" hasPlayerXSpeed="false" triggerDistance="3.0"/> <moveComponent length="2.191" rotation="90.0" startOffset="0.0" direction="1.0" speed="1.0" hasPlayerXSpeed="false" triggerDistance="3.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="false" moving="true" deadly="true" leftEdge="24.891079" rightEdge="25.22208" height="0.331" y="-0.43450004"> <obstacleData floating="false" moving="true" deadly="true" leftEdge="26.371086" rightEdge="26.702087" height="0.331" y="-0.43450004">
<moveComponent length="2.062" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.843" hasPlayerXSpeed="false" triggerDistance="0.571"/> <moveComponent length="2.062" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.907" hasPlayerXSpeed="false" triggerDistance="0.571"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="24.35241" rightEdge="25.167408" height="0.255" y="0.48000008"> <obstacleData floating="true" moving="false" deadly="true" leftEdge="25.832417" rightEdge="26.647415" height="0.255" y="0.48000008">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="15.038038" rightEdge="15.802038" height="1.083" y="-0.006666636">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<positionData x="6.890018" y="-0.39333332"/> <positionData x="7.1166844" y="-0.39333332"/>
<positionData x="15.67671" y="-0.06666667"/> <positionData x="17.123396" y="-0.08666667"/>
<positionData x="24.766592" y="0.18666668"/> <positionData x="26.2466" y="0.18666668"/>
</stars> </stars>
<energy x="4.343331" y="-0.53999984"/> <energy x="4.343331" y="-0.53999984"/>
</level> </level>
<level packId="2" id="10" goalX="5.939997" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="2" id="10" goalX="6.2266636" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="-0.78716683" width="4.4256663"/> <tileData x="-0.7938335" width="4.412333"/>
<tileData x="3.8938317" width="4.092331"/> <tileData x="4.0304985" width="4.3923306"/>
</terrainTiles> </terrainTiles>
<ceilingTiles class="java.util.ArrayList"> <ceilingTiles class="java.util.ArrayList">
<tileData x="1.4699984" width="8.939997"/> <tileData x="1.6133318" width="9.226664"/>
</ceilingTiles> </ceilingTiles>
<obstacles class="java.util.ArrayList"> <obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-2.7500002" rightEdge="0.96999985" height="1.439" y="0.36000007"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="-2.7500002" rightEdge="0.9699998" height="1.439" y="0.36000007">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="1.4514995" rightEdge="1.8084996" height="0.369" y="-0.80666643"> <obstacleData floating="true" moving="true" deadly="false" leftEdge="1.4381661" rightEdge="1.7951663" height="0.369" y="-0.8666664">
<moveComponent length="1.778" rotation="0.0" startOffset="0.0" direction="1.0" speed="1.0" hasPlayerXSpeed="false" triggerDistance="-0.122"/> <moveComponent length="1.778" rotation="0.0" startOffset="0.0" direction="1.0" speed="1.0" hasPlayerXSpeed="false" triggerDistance="-0.122"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.0181656" rightEdge="4.2351656" height="0.5" y="0.14000002"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="2.304832" rightEdge="4.521832" height="0.5" y="0.14000002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="1.9039984" rightEdge="4.9359984" height="1.07" y="1.3333334"> <obstacleData floating="true" moving="false" deadly="false" leftEdge="2.0373316" rightEdge="5.0693316" height="1.07" y="1.3666667">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/> <moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData> </obstacleData>
</obstacles> </obstacles>

View File

@ -19,7 +19,7 @@ public class Bomb extends Tool {
private Vector offsetToObstaclePosition = new Vector(); private Vector offsetToObstaclePosition = new Vector();
public Bomb(Vector position) { public Bomb(Vector position) {
super(ToolType.BOMB, position, .2f, .2f, false, false); super(ToolType.BOMB, position, .25f, .25f, false, false);
animation.setIndexSequence(new int[]{0, 1, 2}); animation.setIndexSequence(new int[]{0, 1, 2});
animation.setLooping(false); animation.setLooping(false);
animation.setRequiredDelta( animation.setRequiredDelta(

View File

@ -6,6 +6,7 @@ import android.media.SoundPool;
import android.support.annotation.RawRes; import android.support.annotation.RawRes;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
@ -41,7 +42,7 @@ public class SoundManager {
public final Sound placeToolSound; public final Sound placeToolSound;
public final Sound magnetSound; public final Sound magnetSound;
private List<SoundStream> allStartedStreams = new ArrayList<>(); private final List<SoundStream> allStartedStreams = Collections.synchronizedList(new ArrayList<SoundStream>());
public SoundManager(GameActivity gameActivity) { public SoundManager(GameActivity gameActivity) {
this.context = gameActivity; this.context = gameActivity;
@ -86,10 +87,12 @@ public class SoundManager {
public void setSoundsMuted(boolean soundsMuted) { public void setSoundsMuted(boolean soundsMuted) {
this.soundsMuted = soundsMuted; this.soundsMuted = soundsMuted;
for (SoundStream stream : allStartedStreams) { synchronized (allStartedStreams) {
float systemVolume = getSystemVolume(); for (SoundStream stream : allStartedStreams) {
soundPool.setVolume(stream.getId(), systemVolume * stream.getModifiedVolume(), float systemVolume = getSystemVolume();
systemVolume * stream.getModifiedVolume()); soundPool.setVolume(stream.getId(), systemVolume * stream.getModifiedVolume(),
systemVolume * stream.getModifiedVolume());
}
} }
} }
@ -123,13 +126,17 @@ public class SoundManager {
} }
public void pauseAllSounds() { public void pauseAllSounds() {
for (SoundStream stream : allStartedStreams) synchronized (allStartedStreams) {
soundPool.pause(stream.getId()); for (SoundStream stream : allStartedStreams)
soundPool.pause(stream.getId());
}
} }
public void resumeAllSounds() { public void resumeAllSounds() {
for (SoundStream stream : allStartedStreams) synchronized (allStartedStreams) {
soundPool.resume(stream.getId()); for (SoundStream stream : allStartedStreams)
soundPool.resume(stream.getId());
}
} }
public void destroy() { public void destroy() {
@ -169,8 +176,10 @@ public class SoundManager {
} }
public void stopAllSounds() { public void stopAllSounds() {
for (SoundStream stream : allStartedStreams) synchronized (allStartedStreams) {
soundPool.stop(stream.getId()); for (SoundStream stream : allStartedStreams)
soundPool.stop(stream.getId());
}
allStartedStreams.clear(); allStartedStreams.clear();
} }