예제 #1
0
  @Override
  public Object clone() throws CloneNotSupportedException {
    LevelScene c = (LevelScene) super.clone();
    c.mario = (Mario) this.mario.clone();
    c.level = (Level) this.level.clone();
    c.mario.world = c;

    List<Sprite> clone = new ArrayList<Sprite>(this.sprites.size());
    for (Sprite item : this.sprites) {
      if (item == mario) {
        clone.add(c.mario);
      } else {
        Sprite s = (Sprite) item.clone();
        if (s.kind == Sprite.KIND_SHELL && ((Shell) s).carried && c.mario.carried != null)
          c.mario.carried = s;
        s.world = c;
        clone.add(s);
      }
    }
    c.sprites = clone;
    return c;
  }