v0.8.1a: tweaked syncing on char sprites to hopefully fix rare deadlocks
This commit is contained in:
@@ -291,10 +291,8 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
|
|||||||
public void die() {
|
public void die() {
|
||||||
sleeping = false;
|
sleeping = false;
|
||||||
play( die );
|
play( die );
|
||||||
|
|
||||||
if (emo != null) {
|
hideEmo();
|
||||||
emo.killAndErase();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (health != null){
|
if (health != null){
|
||||||
health.killAndErase();
|
health.killAndErase();
|
||||||
@@ -465,8 +463,7 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//syncronized due to EmoIcon handling
|
public void update() {
|
||||||
public synchronized void update() {
|
|
||||||
|
|
||||||
super.update();
|
super.update();
|
||||||
|
|
||||||
@@ -498,8 +495,10 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
|
|||||||
} else {
|
} else {
|
||||||
hideSleep();
|
hideSleep();
|
||||||
}
|
}
|
||||||
if (emo != null && emo.alive) {
|
synchronized (EmoIcon.class) {
|
||||||
emo.visible = visible;
|
if (emo != null && emo.alive) {
|
||||||
|
emo.visible = visible;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,61 +510,76 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void showSleep() {
|
public void showSleep() {
|
||||||
if (emo instanceof EmoIcon.Sleep) {
|
synchronized (EmoIcon.class) {
|
||||||
|
if (!(emo instanceof EmoIcon.Sleep)) {
|
||||||
} else {
|
if (emo != null) {
|
||||||
if (emo != null) {
|
emo.killAndErase();
|
||||||
emo.killAndErase();
|
}
|
||||||
|
emo = new EmoIcon.Sleep(this);
|
||||||
|
emo.visible = visible;
|
||||||
}
|
}
|
||||||
emo = new EmoIcon.Sleep( this );
|
|
||||||
emo.visible = visible;
|
|
||||||
}
|
}
|
||||||
idle();
|
idle();
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void hideSleep() {
|
public void hideSleep() {
|
||||||
if (emo instanceof EmoIcon.Sleep) {
|
synchronized (EmoIcon.class) {
|
||||||
emo.killAndErase();
|
if (emo instanceof EmoIcon.Sleep) {
|
||||||
emo = null;
|
emo.killAndErase();
|
||||||
|
emo = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void showAlert() {
|
public void showAlert() {
|
||||||
if (emo instanceof EmoIcon.Alert) {
|
synchronized (EmoIcon.class) {
|
||||||
|
if (!(emo instanceof EmoIcon.Alert)) {
|
||||||
} else {
|
if (emo != null) {
|
||||||
|
emo.killAndErase();
|
||||||
|
}
|
||||||
|
emo = new EmoIcon.Alert(this);
|
||||||
|
emo.visible = visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hideAlert() {
|
||||||
|
synchronized (EmoIcon.class) {
|
||||||
|
if (emo instanceof EmoIcon.Alert) {
|
||||||
|
emo.killAndErase();
|
||||||
|
emo = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showLost() {
|
||||||
|
synchronized (EmoIcon.class) {
|
||||||
|
if (!(emo instanceof EmoIcon.Lost)) {
|
||||||
|
if (emo != null) {
|
||||||
|
emo.killAndErase();
|
||||||
|
}
|
||||||
|
emo = new EmoIcon.Lost(this);
|
||||||
|
emo.visible = visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hideLost() {
|
||||||
|
synchronized (EmoIcon.class) {
|
||||||
|
if (emo instanceof EmoIcon.Lost) {
|
||||||
|
emo.killAndErase();
|
||||||
|
emo = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hideEmo(){
|
||||||
|
synchronized (EmoIcon.class) {
|
||||||
if (emo != null) {
|
if (emo != null) {
|
||||||
emo.killAndErase();
|
emo.killAndErase();
|
||||||
|
emo = null;
|
||||||
}
|
}
|
||||||
emo = new EmoIcon.Alert( this );
|
|
||||||
emo.visible = visible;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void hideAlert() {
|
|
||||||
if (emo instanceof EmoIcon.Alert) {
|
|
||||||
emo.killAndErase();
|
|
||||||
emo = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void showLost() {
|
|
||||||
if (emo instanceof EmoIcon.Lost) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
if (emo != null) {
|
|
||||||
emo.killAndErase();
|
|
||||||
}
|
|
||||||
emo = new EmoIcon.Lost( this );
|
|
||||||
emo.visible = visible;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void hideLost() {
|
|
||||||
if (emo instanceof EmoIcon.Lost) {
|
|
||||||
emo.killAndErase();
|
|
||||||
emo = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -573,9 +587,7 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
|
|||||||
public void kill() {
|
public void kill() {
|
||||||
super.kill();
|
super.kill();
|
||||||
|
|
||||||
if (emo != null) {
|
hideEmo();
|
||||||
emo.killAndErase();
|
|
||||||
}
|
|
||||||
|
|
||||||
for( State s : State.values()){
|
for( State s : State.values()){
|
||||||
remove(s);
|
remove(s);
|
||||||
|
|||||||
@@ -54,10 +54,7 @@ public class GhoulSprite extends MobSprite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void crumple(){
|
public void crumple(){
|
||||||
if (emo != null){
|
hideEmo();
|
||||||
emo.killAndErase();
|
|
||||||
emo = null;
|
|
||||||
}
|
|
||||||
play(crumple);
|
play(crumple);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class MimicSprite extends MobSprite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void showSleep() {
|
public void showSleep() {
|
||||||
if (curAnim == hiding){
|
if (curAnim == hiding){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,9 +62,7 @@ public class MobSprite extends CharSprite {
|
|||||||
angularSpeed = Random.Int( 2 ) == 0 ? -720 : 720;
|
angularSpeed = Random.Int( 2 ) == 0 ? -720 : 720;
|
||||||
am = 1;
|
am = 1;
|
||||||
|
|
||||||
if (emo != null){
|
hideEmo();
|
||||||
emo.killAndErase();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (health != null){
|
if (health != null){
|
||||||
health.killAndErase();
|
health.killAndErase();
|
||||||
|
|||||||
Reference in New Issue
Block a user