com.binarytenshi.nopassing.core.SplineHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.binarytenshi.nopassing.core.SplineHandler.java

Source

/*
 * Copyright:
 * This file was created by BinaryTENSHi and distributed
 * as part of NoPassing.
 *
 * NoPassing lies under a license which can be
 * found in the LICENSE file in the root directory
 * File created @ [14.03.2014, 13:24:08 CH timezone]
 */

package com.binarytenshi.nopassing.core;

import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Vector2;
import com.binarytenshi.nopassing.lib.TextureLib;

import java.util.ArrayList;

public abstract class SplineHandler {
    private static ShapeRenderer shaper = new ShapeRenderer();
    private static Spline currentSpline = null;
    private static ArrayList<Spline> splines = new ArrayList<Spline>();

    public static void beginSpline() {
        currentSpline = new Spline();
    }

    public static Spline endSpline() {
        splines.add(currentSpline);
        currentSpline = null;
        return splines.get(splines.size() - 1);
    }

    public static void addPoint(Vector2 v) {
        currentSpline.addPoint(v);
    }

    public static boolean hasSpline() {
        return currentSpline != null;
    }

    public static void drawSplines() {
        shaper.setProjectionMatrix(CameraHandler.getCamera().combined);
        shaper.setColor(Color.GRAY);
        for (Spline spline : splines) {
            drawSpline(spline);
        }

        shaper.setColor(Color.BLACK);
        if (currentSpline != null) {
            drawSpline(currentSpline);
        }
    }

    private static void drawSpline(Spline spline) {
        shaper.begin(ShapeRenderer.ShapeType.Line);
        ArrayList<Vector2> points = spline.getPoints();
        int len = points.size();

        for (int i = 0; i < len - 1; i++) {
            Vector2 vec1 = points.get(i);
            Vector2 vec2 = points.get(i + 1);
            shaper.line(vec1.x * TextureLib.tileSide + 32, vec1.y * TextureLib.tileSide + 32,
                    vec2.x * TextureLib.tileSide + 32, vec2.y * TextureLib.tileSide + 32);
        }

        shaper.end();
    }
}