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>
<energy x="10.900037" y="0.33333334"/>
</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">
<tileData x="0.5266659" width="7.053332"/>
<tileData x="6.0975885" width="2.8885126"/>
<tileData x="8.564014" width="0.39834118"/>
<tileData x="11.516363" width="2.932355"/>
<tileData x="17.878101" width="1.5211315"/>
<tileData x="25.215616" width="7.921894"/>
<tileData x="6.210922" width="3.115179"/>
<tileData x="8.764023" width="0.34500694"/>
<tileData x="11.722952" width="2.998849"/>
<tileData x="19.191525" width="1.8543034"/>
<tileData x="26.695623" width="7.921894"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="11.906667" width="29.813334"/>
<tileData x="12.64667" width="31.29334"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<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">
<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="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"/>
</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"/>
</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"/>
</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"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="8.817183" rightEdge="9.556183" height="0.293" y="-0.81333303">
<moveComponent length="1.83" rotation="45.236" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.551"/>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="8.990523" rightEdge="9.729524" height="0.293" y="-0.873333">
<moveComponent length="1.83" rotation="43.351" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.551"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="13.030026" rightEdge="13.530026" height="0.331" y="-1.0133333">
<moveComponent length="3.479" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.245"/>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="13.256703" rightEdge="13.756703" height="0.331" y="-1.1066666">
<moveComponent length="4.51" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.245"/>
</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"/>
</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"/>
</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"/>
</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"/>
</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"/>
</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"/>
</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"/>
</obstacleData>
<obstacleData floating="false" moving="true" deadly="true" leftEdge="24.891079" rightEdge="25.22208" 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"/>
<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.907" hasPlayerXSpeed="false" triggerDistance="0.571"/>
</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"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="6.890018" y="-0.39333332"/>
<positionData x="15.67671" y="-0.06666667"/>
<positionData x="24.766592" y="0.18666668"/>
<positionData x="7.1166844" y="-0.39333332"/>
<positionData x="17.123396" y="-0.08666667"/>
<positionData x="26.2466" y="0.18666668"/>
</stars>
<energy x="4.343331" y="-0.53999984"/>
</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">
<tileData x="-0.78716683" width="4.4256663"/>
<tileData x="3.8938317" width="4.092331"/>
<tileData x="-0.7938335" width="4.412333"/>
<tileData x="4.0304985" width="4.3923306"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="1.4699984" width="8.939997"/>
<tileData x="1.6133318" width="9.226664"/>
</ceilingTiles>
<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"/>
</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"/>
</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"/>
</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"/>
</obstacleData>
</obstacles>

View File

@ -19,7 +19,7 @@ public class Bomb extends Tool {
private Vector offsetToObstaclePosition = new Vector();
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.setLooping(false);
animation.setRequiredDelta(

View File

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