Package ch.fusun.baron.weather

Source Code of ch.fusun.baron.weather.Starter

package ch.fusun.baron.weather;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import ch.fusun.baron.swt.isometry.components.IsometryWidget;
import ch.fusun.baron.swt.isometry.components.Sprite;

/**
* Test class
*/
public class Starter {

  private static final int ALTITUDE = 15;
  private static final int SIZE = 20;

  private static int step = 0;

  /**
   * @param args
   */
  public static void main(String[] args) {
    final Automaton weather = new Automaton();
    weather.setWorld(new World(SIZE, SIZE, ALTITUDE));
    weather.put(new HeatDissipationUpdater(ALTITUDE));
    weather.put(new WaterFallingDownUpdater(ALTITUDE));
    weather.put(new VaporPressureCurveUpdater());
    weather.put(new VaporUpdater(ALTITUDE));

    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new GridLayout());

    final IsometryWidget widget = new IsometryWidget(shell, SWT.NONE, SIZE,
        SIZE, ALTITUDE, 32, 32, 16);
    widget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    shell.setText("Map"); //$NON-NLS-1$

    final Image cloud = new Image(display, "icons/cloud_alt.png"); //$NON-NLS-1$
    final Image rain = new Image(display, "icons/rain_alt.png"); //$NON-NLS-1$
    final Image ground = new Image(display, "icons/0_alt.png"); //$NON-NLS-1$
    // final Image mountain = new Image(display, "icons/15.png");
    // final Image sun = new Image(display, "icons/sun.png");
    final Image water = new Image(display, "icons/water_alt.png"); //$NON-NLS-1$

    for (int i = 0; i < SIZE; i++) {
      for (int j = 0; j < SIZE; j++) {
        for (int k = 0; k < ALTITUDE; k++) {
          weather.getWorld().getCube(i, j, k).setTemperature(278);
        }
      }
    }

    weather.getWorld().getCube(SIZE / 2, SIZE / 2, ALTITUDE / 2)
        .setWater(1000000);
    weather.getWorld().getCube(SIZE / 2, SIZE / 2, ALTITUDE / 2)
        .setVapour(5000);

    Button button = new Button(shell, SWT.PUSH);
    button.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        widget.clear();
        float total = 0;
        float totalWater = 0;
        float totalVapour = 0;
        float max = Float.MIN_VALUE;
        float min = Float.MAX_VALUE;
        String columnHeat = ""; //$NON-NLS-1$
        String columnWater = ""; //$NON-NLS-1$
        String columnVapour = ""; //$NON-NLS-1$
        step++;
        for (int i = 0; i < SIZE; i++) {
          weather.getWorld()
              .getCube(i, step % SIZE, 0)
              .setTemperature(
                  weather.getWorld()
                      .getCube(i, step % SIZE, 0)
                      .getTemperature() + 280);
          for (int j = 0; j < SIZE; j++) {
            columnHeat = ""; //$NON-NLS-1$
            columnWater = ""; //$NON-NLS-1$
            columnVapour = ""; //$NON-NLS-1$
            for (int k = 0; k < ALTITUDE; k++) {
              Cube cube = weather.getWorld().getCube(i, j, k);
              columnHeat = columnHeat + " " //$NON-NLS-1$
                  + cube.getTemperature();
              columnWater = columnWater + " " + cube.getWater(); //$NON-NLS-1$
              columnVapour = columnVapour + " " //$NON-NLS-1$
                  + cube.getVapour();
              total += cube.getTemperature();
              totalWater += cube.getWater();
              totalVapour += cube.getVapour();
              if (max < cube.getTemperature()) {
                max = cube.getTemperature();
              }
              if (min > cube.getTemperature()) {
                min = cube.getTemperature();
              }
              if (cube.getZ() == 0) {
                widget.addItem(null, i, j, k, new Sprite(
                    ground, null));
              }
              if (cube.getWater() > 0) {
                if (cube.getZ() == 0) {

                  widget.addItem(null, i, j, k, new Sprite(
                      water, null));
                } else {
                  if (cube.getWater() < 20) {
                    widget.addItem(null, i, j, k,
                        new Sprite(cloud, null));
                  } else {
                    widget.addItem(null, i, j, k,
                        new Sprite(rain, null));
                  }
                }
              }
            }
          }
        }
        System.out.println("totheat: " + total + " totwat: " //$NON-NLS-1$ //$NON-NLS-2$
            + totalWater + " totvapour: " + totalVapour //$NON-NLS-1$
            + "\n max: " + max + " min: " + min + "\n TotWATPOR: " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
            + (totalWater + totalVapour));
        System.out.println("heat: " + columnHeat); //$NON-NLS-1$
        System.out.println("water: " + columnWater); //$NON-NLS-1$
        System.out.println("vapour: " + columnVapour); //$NON-NLS-1$
        widget.redraw();
        weather.step();
      }
    });

    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }

    }
    display.dispose();
  }
}
TOP

Related Classes of ch.fusun.baron.weather.Starter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.