Package it.freedomotic.jfrontend

Source Code of it.freedomotic.jfrontend.ImageDrawer

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package it.freedomotic.jfrontend;

import it.freedomotic.app.Freedomotic;

import it.freedomotic.environment.Room;
import it.freedomotic.environment.ZoneLogic;

import it.freedomotic.model.geometry.FreedomPoint;

import it.freedomotic.objects.BehaviorLogic;
import it.freedomotic.objects.EnvObjectLogic;
import it.freedomotic.objects.EnvObjectPersistence;

import it.freedomotic.util.TopologyUtils;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Polygon;
import java.awt.geom.Rectangle2D;
import java.util.Iterator;
import java.util.Queue;

/**
*
* @author enrico
*/
public class ImageDrawer
        extends PlainDrawer {

    public ImageDrawer(JavaDesktopFrontend master) {
        super(master);
    }

    @Override
    public void renderWalls() {
    }

    @Override
    public void renderObjects() {
        for (EnvObjectLogic obj : EnvObjectPersistence.getObjectByEnvironment(getCurrEnv().getPojo().getUUID())) {
            renderSingleObject(obj);
        }
    }

    public void renderSingleObject(EnvObjectLogic obj) {
        if (obj != null) {
            setTransformContextFor(obj.getPojo());

            if ((obj.getPojo().getCurrentRepresentation().getIcon() != null)
                    && !obj.getPojo().getCurrentRepresentation().getIcon().equalsIgnoreCase("")) {
                try {
                    //WidgetTest widget = new WidgetTest(obj);
                    //paintImage(widget.draw());
                    paintImage(obj.getPojo());
                } catch (RuntimeException e) {
                    drawPlainObject(obj);
                } finally {
                    invalidateAnyTransform();
                }
            } else {
                drawPlainObject(obj);
            }

            //paintObjectDescription(obj);
            invalidateAnyTransform();
        }
    }

    private void drawTrace(int[] xTrace, int[] yTrace, Color color) {
        getContext().setColor(color);

        int num = (int) Math.min(xTrace.length, yTrace.length);
        getContext().drawPolyline(xTrace, yTrace, num);
    }

    private int[] getXTrace(Queue<FreedomPoint> trace) {
        int size = trace.size();
        int[] xPoints = new int[size];
        int i = 0;

        for (FreedomPoint p : trace) {
            if (i < size) {
                xPoints[i] = (int) p.getX();
                i++;
            }
        }

        return xPoints;
    }

    private int[] getYTrace(Queue<FreedomPoint> trace) {
        int size = trace.size();
        int[] yPoints = new int[size];
        int i = 0;

        for (FreedomPoint p : trace) {
            if (i < size) {
                yPoints[i] = (int) p.getY();
                i++;
            }
        }

        return yPoints;
    }

    @Override
    public void renderZones() {
        for (ZoneLogic zone : getCurrEnv().getZones()) {
            if (zone != null) {
                Polygon pol = (Polygon) TopologyUtils.convertToAWT(zone.getPojo().getShape());
                paintTexture(zone.getPojo().getTexture(),
                        pol);

                if (zone instanceof Room) {
                    Room room = (Room) zone;
                    drawRoomObject(pol);
                }
            }
        }
    }

    protected void paintPersonAvatar(int x, int y, String icon) {
        paintImageCentredOnCoords(icon,
                x,
                y,
                new Dimension(60, 60));
    }

    @Override
    public void mouseEntersObject(EnvObjectLogic obj) {
        super.mouseEntersObject(obj);
        paintObjectDescription(obj);
    }

    private void paintObjectDescription(EnvObjectLogic obj) {
        StringBuilder description = new StringBuilder();
//        if (!obj.getMessage().isEmpty()) {
//            description.append(obj.getMessage()).append("\n");
//        }
        description.append(obj.getPojo().getName()).append("\n");
        description.append(obj.getPojo().getDescription()).append("\n");

        for (BehaviorLogic b : obj.getBehaviors()) {
            if (b.isActive()) {
                description.append(b.getName()).append(": ").append(b.getValueAsString()).append(" [Active]\n");
            } else {
                description.append(b.getName()).append(": ").append(b.getValueAsString())
                        .append(" [Inactive]\n");
            }
        }

        Rectangle2D box = getCachedShape(obj).getBounds2D();
        int x = (int) box.getMaxX() + 20;
        int y = (int) box.getY() + 10;
        Callout callout =
                new Callout(obj.getPojo().getName(), "object.description",
                description.toString(), x, y, 0.0f, 2000);
//        if (!obj.getMessage().isEmpty()) {
//            callout.setColor(Color.red.darker());
//        }
        createCallout(callout);
        setNeedRepaint(true);
    }

    @Override
    public void mouseExitsObject(EnvObjectLogic obj) {
        super.mouseExitsObject(obj);
        removeIndicators();
    }

    @Override
    public void mouseClickObject(EnvObjectLogic obj) {
        super.mouseClickObject(obj);
    }

    @Override
    public void mouseRightClickObject(EnvObjectLogic obj) {
        super.mouseRightClickObject(obj);
        openObjEditor(obj);
    }
}
TOP

Related Classes of it.freedomotic.jfrontend.ImageDrawer

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.