package com.danitheskunk.skunkworks;

import com.danitheskunk.skunkworks.gfx.*;
import com.danitheskunk.skunkworks.gfx.font.IFont;
import com.danitheskunk.skunkworks.gfx.threedee.IRenderContext3D;

import java.util.List;

public interface IWindow {
	Engine getEngine();

	Vec2i getMousePos();

	boolean isMouseClicked(int button);

	boolean isMouseDown(int button);

	IFont loadFontTTF(String path, float size);

	IFont loadFontTileset(String path);

	NineSlice loadNineSlice(Image image);

	NineSlice loadNineSlice(String path);

	ITexture loadTexture(Image image);

	ITexture loadTexture(String path);

	List<ITexture> loadTextureArray(Image image, Vec2i tileSize);

	List<ITexture> loadTextureArray(String path, Vec2i tileSize);

	void renderFinish(IRenderContext context);

	void renderFinish3D(IRenderContext3D context);

	IRenderContext renderStart();

	IRenderContext3D renderStart3D();

	//needs to be run after rendering
	void runScaler();

	void setDebug(boolean on);

	void setStretchMode(WindowStretchMode mode);

	boolean shouldClose();

	void tick();
}
