Android Open Source - candymem Background Scene






From Project

Back to project page candymem.

License

The source code is released under:

GNU General Public License

If you think the Android project candymem listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package se.tube42.kidsmem.scene;
/*w w w.j  ava  2s .  c o  m*/
import com.badlogic.gdx.*;
import com.badlogic.gdx.math.*;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.g2d.*;
import com.badlogic.gdx.audio.*;

import se.tube42.lib.tweeny.*;
import se.tube42.lib.ks.*;
import se.tube42.lib.scene.*;
import se.tube42.lib.item.*;

import se.tube42.kidsmem.data.*;
import se.tube42.kidsmem.service.*;
import se.tube42.kidsmem.logic.*;
import se.tube42.kidsmem.item.*;

import static se.tube42.kidsmem.data.Constants.*;

public class BackgroundScene
extends Scene
implements TweenListener
{
    private static final int
          COUNT = 12,
          PCOUNT = 6
          ;

    private Layer player;
    private ParticleItem [] pis;
    private int pis_cnt;

    private SpriteItem [] candies;
    private int sw, sh, size;

    public BackgroundScene()
    {
      super("bg");

        // candies
      candies = new SpriteItem[COUNT];
      for(int i = 0; i < candies.length; i++) {
            final float r = ServiceProvider.getRandom(0, 359);
            final float s = ServiceProvider.getRandom(0.2f, 1.4f);
            candies[i] = new SpriteItem(Assets.reg_candy2, i % Assets.reg_candy2.length);
            candies[i].setRotation(r);
            candies[i].setScale(s);
      }
      positionAll();

      getLayer(0).add(candies);

        // top
        World.top = new TopBar();
        World.top.hide();

        getLayer(1).add(World.top);

        // particles
        pis_cnt = 0;
        pis = new ParticleItem[PCOUNT];
      for(int i = 0; i < pis.length; i++)
            pis[i] = new ParticleItem();

        player = getLayer(2);
        player.add(pis);



    }

    public void resize(int sw, int sh)
    {
      super.resize(sw, sh);
      this.sw = sw;
      this.sh = sh;

        size = Math.min(sw, sh) / 8;


        for(int i = 0; i < COUNT; i++)
            candies[i].setSize(size, size);
      positionAll();
    }

    // --------------------------------------------------

    private void show_explosion(BaseItem si)
    {
        ParticleItem pi = pis[pis_cnt];
        pis_cnt = (pis_cnt + 1) % pis.length;


        pi.setPosition(si.getX() + si.getW() / 2,
                  si.getY() + si.getH() / 2 );

        pi.setPosition(0.2f, pi.getX(), pi.getY() + si.getH() / 3 );

        pi.emit(Assets.pep_explode);
    }

    // --------------------------------------------------


    private void positionAll()
    {
        for(int i = 0; i < COUNT; i++)
            position(candies[i]);
    }

    private void position(SpriteItem si)
    {
        final float y0 = - size * 4;
        final float y1 = sh + size * 2;
        final float p = ServiceProvider.getRandom(0, 1.5f);
      final float tr = ServiceProvider.getRandom(0.8f, 1.2f);
      final float t = 0.07f * sh / (0.1f + si.getScale() * tr);
        final float a = ServiceProvider.getRandom(0.1f, 0.4f);

        si.set(BaseItem.ITEM_A, a);

      si.pause(BaseItem.ITEM_Y, y0, p)
              .tail(y1).configure(t, null).finish(this, 0);


        final float x0 = size / 2;
        final float x1 = sw - size / 2;
      final float x = ServiceProvider.getRandom(x0, x1);
      si.setImmediate(BaseItem.ITEM_X, x);


      final float r0 = ServiceProvider.getRandom(0, 180);
      final float r1 = ServiceProvider.getRandom(120, 180) + r0;

      si.pause(BaseItem.ITEM_R, r0, p).tail(r1).configure(t, null);
    }

    private SpriteItem get_at(int x, int y)
    {
        for(int i = 0; i < COUNT; i++)
            if(candies[i].hit(x, y))
                return candies[i];

        return null;
    }

    public boolean touch(int x, int y, boolean down, boolean drag)
    {
        if(down && !drag) {
            final SpriteItem si = get_at(x, y);

            if(si != null) {
                show_explosion(si);
                si.removeTween(BaseItem.ITEM_A, false);
                si.set(BaseItem.ITEM_A, 0f).configure(0.3f, null).finish(this, 0);
            }
        }

        return false;
    }

    public void onFinish(Item item, int index, int msg)
    {
      position( (SpriteItem) item);
    }

}




Java Source Code List

com.badlogic.gdx.backends.lwjgl.LwjglApplication.java
se.tube42.kidsmem.KidsMemoryApp.java
se.tube42.kidsmem.SystemHandler.java
se.tube42.kidsmem.android.MainActivity.java
se.tube42.kidsmem.data.Assets.java
se.tube42.kidsmem.data.Constants.java
se.tube42.kidsmem.data.Settings.java
se.tube42.kidsmem.data.UI.java
se.tube42.kidsmem.data.World.java
se.tube42.kidsmem.desktop.DesktopMain.java
se.tube42.kidsmem.item.Button.java
se.tube42.kidsmem.item.FireworkItem.java
se.tube42.kidsmem.item.GameStat.java
se.tube42.kidsmem.item.TileSprite.java
se.tube42.kidsmem.item.TopBar.java
se.tube42.kidsmem.logic.AssetHelper.java
se.tube42.kidsmem.logic.GameHelper.java
se.tube42.kidsmem.logic.SettingsHelper.java
se.tube42.kidsmem.logic.SizeHelper.java
se.tube42.kidsmem.scene.BackgroundScene.java
se.tube42.kidsmem.scene.GameScene.java
se.tube42.kidsmem.scene.MenuScene.java
se.tube42.kidsmem.service.ServiceProvider.java
se.tube42.lib.item.BaseItem.java
se.tube42.lib.item.BaseText.java
se.tube42.lib.item.ParticleItem.java
se.tube42.lib.item.PatchItem.java
se.tube42.lib.item.SpriteItem.java
se.tube42.lib.scene.LayerList.java
se.tube42.lib.scene.Layer.java
se.tube42.lib.scene.SceneManager.java
se.tube42.lib.scene.Scene.java
se.tube42.lib.service.AssetService.java
se.tube42.lib.service.JobService.java
se.tube42.lib.service.RandomService.java
se.tube42.lib.service.StorageService.java
se.tube42.lib.util.BaseApp.java
se.tube42.lib.util.UIC.java