Android Open Source - it.alcacoop.fourinaline U I Dialog






From Project

Back to project page it.alcacoop.fourinaline.

License

The source code is released under:

GNU General Public License

If you think the Android project it.alcacoop.fourinaline 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

/**
 ##################################################################
 #                     FOUR IN A LINE MOBILE                      #
 ##################################################################
 #                                                                #
 #  Authors: Domenico Martella - Francesco Valente                #
 #  E-mail: info@alcacoop.it                                      #
 #  Date:   18/10/2013                                            #
 #                                                                #
 ##################################################################
 #                                                                #
 #  Copyright (C) 2013   Alca Societa' Cooperativa                #
 #                                                                #
 #  This file is part of FOUR IN A LINE MOBILE.                   #
 #  FOUR IN A LINE MOBILE is free software: you can redistribute  # 
 #  it and/or modify it under the terms of the GNU General        #
 #  Public License as published by the Free Software Foundation,  #
 #  either version 3 of the License, or (at your option)          #
 #  any later version.                                            #
 #                                                                #
 #  FOUR IN A LINE MOBILE is distributed in the hope that it      #
 #  will be useful, but WITHOUT ANY WARRANTY; without even the    #
 #  implied warranty of MERCHANTABILITY or FITNESS FOR A          #
 #  PARTICULAR PURPOSE.  See the GNU General Public License       #
 #  for more details.                                             #
 #                                                                #
 #  You should have received a copy of the GNU General            #
 #  Public License v3 along with this program.                    #
 #  If not, see <http://http://www.gnu.org/licenses/>             #
 #                                                                #
 ##################################################################
 **//*  w  w w  .jav a  2s . c o m*/

package it.alcacoop.fourinaline.actors;

import it.alcacoop.fourinaline.FourInALine;
import it.alcacoop.fourinaline.fsm.FSM;
import it.alcacoop.fourinaline.fsm.FSM.Events;
import it.alcacoop.fourinaline.logic.MatchState;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle;
import com.badlogic.gdx.scenes.scene2d.utils.Align;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;


public final class UIDialog extends Table {

  private Table t1, t2, t3;
  private IconButton bContinue;
  private IconButton bYes;
  private IconButton bNo;
  private IconButton bCancel;
  private IconButton bExport;

  private Label label;
  private Drawable background;
  private static ClickListener cl;


  private static UIDialog instance;

  private FSM.Events evt;
  private boolean quitWindow = false;
  private boolean leaveWindow = false;
  private boolean visible = false;
  private static float alpha = 0.95f;

  static {
    instance = new UIDialog();
    instance.setSkin(FourInALine.Instance.skin);
  }

  private UIDialog() {
    cl = new ClickListener() {
      public void clicked(InputEvent event, float x, float y) {
        // FourInALine.Instance.snd.playMoveStart(); //TODO
        final String s;
        if (event.getTarget() instanceof Label) {
          s = ((Label)event.getTarget()).getText().toString().toUpperCase();
        } else {
          s = ((IconButton)event.getTarget()).getText().toString().toUpperCase();
        }

        FourInALine.Instance.snd.playButton();
        FourInALine.Instance.vibrate(80);

        instance.addAction(Actions.sequence(Actions.fadeOut(0.3f), Actions.run(new Runnable() {
          @Override
          public void run() {
            instance.remove();
            if (leaveWindow) {
              FourInALine.Instance.fsm.processEvent(instance.evt, s);
              return;
            }
            boolean ret = s.equals("YES") || s.equals("OK");
            if ((instance.quitWindow) && (ret)) {
              Gdx.app.exit();
            } else {
              FourInALine.Instance.fsm.processEvent(instance.evt, ret);
            }
            visible = false;
          }
        })));
      };
    };

    label = new Label("", FourInALine.Instance.skin);

    TextButtonStyle tl = FourInALine.Instance.skin.get("button", TextButtonStyle.class);

    bYes = new IconButton("Yes", null, tl);
    bYes.addListener(cl);
    bNo = new IconButton("No", null, tl);
    bNo.addListener(cl);
    bContinue = new IconButton("Ok", null, tl);
    bContinue.addListener(cl);
    bCancel = new IconButton("Cancel", null, tl);
    bCancel.addListener(cl);

    background = FourInALine.Instance.skin.getDrawable("default-window");
    setBackground(background);

    t1 = new Table();
    t1.setFillParent(true);
    t1.add(label).fill().expand().center();

    t2 = new Table();
    t2.setFillParent(true);
    t2.add().colspan(2).expand();
    t2.add(bContinue).fill().expand();
    t2.add().colspan(2).expand();

    t3 = new Table();
    t3.setFillParent(true);
    t3.add().expand();
    t3.add(bNo).fill().expand();
    t3.add().expand();
    t3.add(bYes).fill().expand();
    t3.add().expand();

    setColor(1, 1, 1, 0);

  }

  private void setText(String t) {
    label.setText(t);
  }


  public static void getYesNoDialog(FSM.Events evt, String text) {
    Stage stage = FourInALine.Instance.currentScreen.getStage();
    instance.visible = true;
    instance.quitWindow = false;
    instance.leaveWindow = false;
    instance.evt = evt;
    instance.remove();
    instance.setText(text);

    float height = stage.getHeight() * 0.4f;
    float width = stage.getWidth() * 0.78f;

    instance.clear();
    instance.setWidth(width);
    instance.setHeight(height);
    instance.setX((stage.getWidth() - width) / 2);
    instance.setY((stage.getHeight() - height) / 2);

    instance.row().padTop(width / 25);
    instance.add(instance.label).colspan(5).expand().align(Align.center);

    instance.row().pad(width / 25);
    instance.add();
    instance.add(instance.bNo).fill().expand().height(height * 0.25f).width(width / 4);
    instance.add();
    instance.add(instance.bYes).fill().expand().height(height * 0.25f).width(width / 4);
    instance.add();

    stage.addActor(instance);
    instance.setY(stage.getHeight());
    instance.addAction(Actions.sequence(Actions.parallel(Actions.color(new Color(1, 1, 1, alpha), 0.2f),
        Actions.moveTo((stage.getWidth() - width) / 2, (stage.getHeight() - height) / 2, 0.2f))));
  }

  public static void getContinueDialog(FSM.Events evt, String text) {
    getContinueDialog(evt, text, UIDialog.alpha);
  }

  public static void getContinueDialog(FSM.Events evt, String text, float alpha) {
    Stage stage = FourInALine.Instance.currentScreen.getStage();
    instance.visible = true;
    instance.quitWindow = false;
    instance.leaveWindow = false;
    instance.evt = evt;
    instance.remove();
    instance.setText(text);

    float height = stage.getHeight() * 0.4f;
    float width = stage.getWidth() * 0.6f;

    instance.clear();
    instance.setWidth(width);
    instance.setHeight(height);
    instance.setX((stage.getWidth() - width) / 2);
    instance.setY((stage.getHeight() - height) / 2);

    instance.row().padTop(width / 25);
    instance.add(instance.label).colspan(3).expand().align(Align.center);

    instance.row().pad(width / 25);
    instance.add();
    instance.add(instance.bContinue).fill().expand().height(height * 0.25f).width(width / 4);
    instance.add();

    stage.addActor(instance);
    instance.setY(stage.getHeight());
    instance.addAction(Actions.sequence(Actions.parallel(Actions.color(new Color(1, 1, 1, alpha), 0.2f),
        Actions.moveTo((stage.getWidth() - width) / 2, (stage.getHeight() - height) / 2, 0.2f))));
  }


  public static void getEndGameDialog(FSM.Events evt, String text, String text1, String score1, String score2) {
    Stage stage = FourInALine.Instance.currentScreen.getStage();
    instance.visible = true;
    instance.quitWindow = false;
    instance.leaveWindow = false;
    instance.evt = evt;
    instance.remove();

    float height = stage.getHeight() * 0.6f;
    float width = stage.getWidth() * 0.6f;

    instance.clear();
    instance.setWidth(width);
    instance.setHeight(height);
    instance.setX((stage.getWidth() - width) / 2);
    instance.setY((stage.getHeight() - height) / 2);

    instance.row().padTop(width / 25);
    instance.add().expand();
    instance.add(text1).colspan(2).expand().align(Align.center);
    instance.add().expand();

    instance.row();
    instance.add().expand();
    instance.add("Overall Score " + text).colspan(2).expand().align(Align.center);
    instance.add().expand();
    instance.row();
    instance.add().expand();
    instance.add(score1).expand().align(Align.center);
    instance.add(score2).expand().align(Align.center);
    instance.add().expand();

    Table t1 = new Table();
    t1.row().expand().fill();
    t1.add();
    t1.add(instance.bContinue).colspan(2).fill().expand().height(height * 0.15f).width(width / 3);
    if ((MatchState.anScore[0] >= MatchState.nMatchTo || MatchState.anScore[1] >= MatchState.nMatchTo) && (MatchState.matchType == 0)) {
      t1.add();
      t1.add(instance.bExport).colspan(2).fill().expand().height(height * 0.15f).width(width / 3);
    }
    t1.add();
    instance.row();
    instance.add(t1).colspan(4).fill().padBottom(width / 25);

    stage.addActor(instance);
    instance.setY(stage.getHeight());
    instance.addAction(Actions.sequence(Actions.parallel(Actions.color(new Color(1, 1, 1, alpha), 0.2f),
        Actions.moveTo((stage.getWidth() - width) / 2, (stage.getHeight() - height) / 2, 0.2f))));
  }


  public static void getFlashDialog(FSM.Events evt, String text) {
    getFlashDialog(evt, text, 1.5f);
  }

  public static void getFlashDialog(FSM.Events evt, String text, float waitTime) {
    Stage stage = FourInALine.Instance.currentScreen.getStage();
    instance.visible = true;
    instance.quitWindow = false;
    instance.leaveWindow = false;
    instance.evt = evt;
    instance.remove();
    instance.setText(text);

    float height = stage.getHeight() * 0.3f;
    float width = stage.getWidth() * 0.75f;

    instance.clear();
    instance.setWidth(width);
    instance.setHeight(height);
    instance.setX((stage.getWidth() - width) / 2);
    instance.setY((stage.getHeight() - height) / 2);

    instance.add(instance.label).expand().align(Align.center);

    stage.addActor(instance);
    instance.addAction(Actions.sequence(Actions.alpha(alpha, 0.3f), Actions.delay(waitTime), Actions.fadeOut(0.3f), Actions.run(new Runnable() {
      @Override
      public void run() {
        instance.remove();
        FourInALine.Instance.fsm.processEvent(instance.evt, true);
      }
    })));
  }


  public static void getQuitDialog() {
    Stage stage = FourInALine.Instance.currentScreen.getStage();
    instance.visible = true;
    instance.quitWindow = true;
    instance.leaveWindow = false;
    instance.remove();
    instance.setText("Really quit the game?");

    float height = stage.getHeight() * 0.4f;
    float width = stage.getWidth() * 0.5f;

    instance.clear();
    instance.setWidth(width);
    instance.setHeight(height);
    instance.setX((stage.getWidth() - width) / 2);
    instance.setY((stage.getHeight() - height) / 2);

    instance.row().padTop(width / 25);
    instance.add(instance.label).colspan(5).expand().align(Align.center);

    instance.row().pad(width / 25);
    instance.add();
    instance.add(instance.bNo).fill().expand().height(height * 0.25f).width(width / 4);
    instance.add();
    instance.add(instance.bYes).fill().expand().height(height * 0.25f).width(width / 4);
    instance.add();

    stage.addActor(instance);
    instance.setY(stage.getHeight());
    instance.addAction(Actions.sequence(Actions.parallel(Actions.color(new Color(1, 1, 1, alpha), 0.2f),
        Actions.moveTo((stage.getWidth() - width) / 2, (stage.getHeight() - height) / 2, 0.2f))));
  }


  public static void getLeaveDialog(FSM.Events evt) {
    Stage stage = FourInALine.Instance.currentScreen.getStage();
    instance.visible = true;
    instance.quitWindow = false;
    instance.leaveWindow = true;
    instance.evt = evt;
    instance.remove();

    instance.setText("You are leaving current match.");

    float height = stage.getHeight() * 0.45f;
    float width = stage.getWidth() * 0.6f;

    instance.clear();
    instance.setWidth(width);
    instance.setHeight(height);
    instance.setX((stage.getWidth() - width) / 2);
    instance.setY((stage.getHeight() - height) / 2);

    instance.row().padTop(width / 25);
    instance.add(instance.label).colspan(7).expand().align(Align.center);
    instance.row().padTop(width / 45);
    instance.add(new Label("Do you want to save it?", FourInALine.Instance.skin)).colspan(7).expand().align(Align.center);

    instance.row().padTop(width / 25);
    instance.add();
    instance.add(instance.bYes).fill().expand().height(height * 0.25f).width(width / 4.5f);
    instance.add();
    instance.add(instance.bNo).fill().expand().height(height * 0.25f).width(width / 4.5f);
    instance.add();
    instance.add(instance.bCancel).fill().expand().height(height * 0.25f).width(width / 4.5f);
    instance.add();

    instance.row().padBottom(width / 35);
    instance.add();


    stage.addActor(instance);
    instance.setY(stage.getHeight());
    instance.addAction(Actions.sequence(Actions.parallel(Actions.color(new Color(1, 1, 1, alpha), 0.2f),
        Actions.moveTo((stage.getWidth() - width) / 2, (stage.getHeight() - height) / 2, 0.2f))));
  }


  public static void getAboutDialog() {
    Stage stage = FourInALine.Instance.currentScreen.getStage();
    instance.visible = true;
    instance.evt = Events.NOOP;
    instance.quitWindow = false;
    instance.leaveWindow = false;
    instance.remove();

    final String gnuBgLink = "http://code.google.com/p/fourinaline";
    final String gplLink = "http://www.gnu.org/licenses/gpl.html";
    final String githubLink1 = "https://github.com/alcacoop/it.alcacoop.fourinaline";
    final String wikipediaLink = "http://en.wikipedia.org/wiki/Connect_Four";

    Table t = new Table();
    t.add(new Label("ABOUT FOUR IN A LINE MOBILE", FourInALine.Instance.skin)).expand();
    t.row();
    t.add(new Label(" ", FourInALine.Instance.skin)).fill().expand();
    t.row();
    t.add(new Label("\"Four in a Line Mobile!\" is based on FourInALine", FourInALine.Instance.skin));
    Label link1 = new Label(gnuBgLink, FourInALine.Instance.skin);
    link1.addListener(new ClickListener() {
      public void clicked(InputEvent event, float x, float y) {
        FourInALine.Instance.snd.playMove();
        FourInALine.Instance.nativeFunctions.openURL(gnuBgLink);
      };
    });
    t.row();
    t.add(link1);
    t.row();
    t.add(new Label(" ", FourInALine.Instance.skin)).fill().expand();
    t.row();
    t.add(new Label("Its source code is released under a GPLv3 License", FourInALine.Instance.skin));
    Label link2 = new Label(gplLink, FourInALine.Instance.skin);
    link2.addListener(new ClickListener() {
      public void clicked(InputEvent event, float x, float y) {
        FourInALine.Instance.snd.playMove();
        FourInALine.Instance.nativeFunctions.openURL(gplLink);
      };
    });
    t.row();
    t.add(link2);
    t.row();
    t.add(new Label(" ", FourInALine.Instance.skin)).fill().expand();
    t.row();
    t.add(new Label("and is available on GitHub at:", FourInALine.Instance.skin));
    Label link3 = new Label(githubLink1, FourInALine.Instance.skin);
    link3.addListener(new ClickListener() {
      public void clicked(InputEvent event, float x, float y) {
        FourInALine.Instance.snd.playMove();
        FourInALine.Instance.nativeFunctions.openURL(githubLink1);
      };
    });

    t.row();
    t.add(link3);

    t.row();
    t.add(new Label(" ", FourInALine.Instance.skin)).fill().expand();
    t.row();
    t.add(new Label("You can find a detailed description of game rules on Wikipedia:", FourInALine.Instance.skin));
    Label link5 = new Label(wikipediaLink, FourInALine.Instance.skin);
    link5.addListener(new ClickListener() {
      public void clicked(InputEvent event, float x, float y) {
        FourInALine.Instance.snd.playMove();
        FourInALine.Instance.nativeFunctions.openURL(wikipediaLink);
      };
    });
    t.row();
    t.add(link5);
    t.row();
    t.add(new Label(" ", FourInALine.Instance.skin)).fill().expand();
    t.row();
    t.add(new Label("If you enjoy our game, support us rating on the Play Store", FourInALine.Instance.skin));
    t.row();
    t.add(new Label(" ", FourInALine.Instance.skin)).fill().expand();
    t.row();
    t.add(new Label("Copyright 2013 - Alca Soc. Coop.", FourInALine.Instance.skin));


    ScrollPane sc = new ScrollPane(t, FourInALine.Instance.skin);
    sc.setFadeScrollBars(false);
    sc.setOverscroll(false, false);

    float height = stage.getHeight() * 0.85f;
    float width = stage.getWidth() * 0.95f;

    instance.clear();
    instance.row().padTop(width / 25);
    instance.add(sc).colspan(3).expand().fill().align(Align.center).padTop(width / 25).padLeft(width / 35).padRight(width / 35);

    instance.row().pad(width / 25);
    instance.add();
    instance.add(instance.bContinue).fill().expand().height(height * 0.15f).width(width / 4);
    instance.add();

    instance.setWidth(width);
    instance.setHeight(height);
    instance.setX((stage.getWidth() - width) / 2);

    stage.addActor(instance);
    instance.setY(stage.getHeight());
    instance.addAction(
        Actions.sequence(Actions.parallel(Actions.color(new Color(1, 1, 1, alpha), 0.2f), Actions.moveTo((stage.getWidth() - width) / 2, (stage.getHeight() - height) / 2, 0.2f))));
  }


  public static boolean isOpened() {
    return instance.hasParent();
  }


  public static void setButtonsStyle(String b) {
  }


  public Actor hit(float x, float y, boolean touchable) {
    Actor hit = super.hit(x, y, touchable);
    if (visible) {
      if (hit != null)
        return hit;
      else {
        return this;
      }

    } else {
      return hit;
    }
  }
}




Java Source Code List

android.UnusedStub.java
it.alcacoop.fourinaline.BaseGServiceApplication.java
it.alcacoop.fourinaline.FourInALineDesktop.java
it.alcacoop.fourinaline.FourInALine.java
it.alcacoop.fourinaline.GServiceApplication.java
it.alcacoop.fourinaline.GServiceInterface.java
it.alcacoop.fourinaline.MainActivity.java
it.alcacoop.fourinaline.NativeFunctions.java
it.alcacoop.fourinaline.PrivateDataManager.java
it.alcacoop.fourinaline.PurchaseActivity.java
it.alcacoop.fourinaline.SoundManager.java
it.alcacoop.fourinaline.actors.BoardImage.java
it.alcacoop.fourinaline.actors.Board.java
it.alcacoop.fourinaline.actors.ChatBox.java
it.alcacoop.fourinaline.actors.Checker.java
it.alcacoop.fourinaline.actors.FixedButtonGroup.java
it.alcacoop.fourinaline.actors.IconButton.java
it.alcacoop.fourinaline.actors.ParticleEffectActor.java
it.alcacoop.fourinaline.actors.PlayerBlock.java
it.alcacoop.fourinaline.actors.UIDialog.java
it.alcacoop.fourinaline.billingutils.Base64DecoderException.java
it.alcacoop.fourinaline.billingutils.Base64.java
it.alcacoop.fourinaline.billingutils.IabException.java
it.alcacoop.fourinaline.billingutils.IabHelper.java
it.alcacoop.fourinaline.billingutils.IabResult.java
it.alcacoop.fourinaline.billingutils.Inventory.java
it.alcacoop.fourinaline.billingutils.Purchase.java
it.alcacoop.fourinaline.billingutils.Security.java
it.alcacoop.fourinaline.billingutils.SkuDetails.java
it.alcacoop.fourinaline.client.GwtLauncher.java
it.alcacoop.fourinaline.fsm.FSM.java
it.alcacoop.fourinaline.gservice.GServiceClient.java
it.alcacoop.fourinaline.gservice.GServiceCookieMonster.java
it.alcacoop.fourinaline.gservice.GServiceMessages.java
it.alcacoop.fourinaline.gservice.GServiceNetHandler.java
it.alcacoop.fourinaline.layers.BaseScreen.java
it.alcacoop.fourinaline.layers.GameScreen.java
it.alcacoop.fourinaline.layers.MatchOptionsScreen.java
it.alcacoop.fourinaline.layers.MenuScreen.java
it.alcacoop.fourinaline.layers.OptionsScreen.java
it.alcacoop.fourinaline.layers.SplashScreen.java
it.alcacoop.fourinaline.logic.AIExecutor.java
it.alcacoop.fourinaline.logic.MatchState.java
it.alcacoop.fourinaline.util.Base64DecoderException.java
it.alcacoop.fourinaline.util.Base64.java
it.alcacoop.fourinaline.util.GServiceGameHelper.java
it.alcacoop.fourinaline.util.GameHelperUtils.java
it.alcacoop.fourinaline.utils.AchievementsManager.java
it.alcacoop.fourinaline.utils.AppDataManager.java
it.alcacoop.fourinaline.utils.ELORatingManager.java
org.gojul.fourinaline.model.AlphaBeta.java
org.gojul.fourinaline.model.DefaultEvalScore.java
org.gojul.fourinaline.model.EvalScore.java
org.gojul.fourinaline.model.GameModel.java