All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.lessvoid.nifty.slick2d.render.batch.SlickBatchRenderBackend Maven / Gradle / Ivy

There is a newer version: 1.4.3
Show newest version
package de.lessvoid.nifty.slick2d.render.batch;

import de.lessvoid.nifty.render.BlendMode;
import de.lessvoid.nifty.render.batch.BatchRenderBackendInternal;
import de.lessvoid.nifty.render.batch.spi.*;
import de.lessvoid.nifty.slick2d.render.cursor.SlickMouseCursor;
import de.lessvoid.nifty.spi.render.MouseCursor;
import de.lessvoid.nifty.tools.Color;
import de.lessvoid.nifty.tools.resourceloader.NiftyResourceLoader;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Input;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.logging.Logger;

/**
 * @author Aaron Mahan <[email protected]>
 */
public class SlickBatchRenderBackend implements BatchRenderBackend {
  @Nonnull
  private static final Logger log = Logger.getLogger(SlickBatchRenderBackend.class.getName());
  @Nonnull
  private final BatchRenderBackend delegate;
  @Nonnull
  private final GameContainer gameContainer;
  @Nullable
  private MouseCursor mouseCursor;

  SlickBatchRenderBackend(
          @Nonnull final GL gl,
          @Nonnull final BufferFactory bufferFactory,
          @Nonnull final ImageFactory imageFactory,
          @Nonnull final MouseCursorFactory mouseCursorFactory,
          @Nonnull final GameContainer gameContainer) {
    this.gameContainer = gameContainer;
    delegate = new BatchRenderBackendInternal(gl, bufferFactory, imageFactory, mouseCursorFactory);
  }

  @Override
  public void setResourceLoader(@Nonnull final NiftyResourceLoader resourceLoader) {
    delegate.setResourceLoader(resourceLoader);
  }

  @Override
  public int getWidth() {
    return delegate.getWidth();
  }

  @Override
  public int getHeight() {
    return delegate.getHeight();
  }

  @Override
  public void beginFrame() {
    delegate.beginFrame();
  }

  @Override
  public void endFrame() {
    delegate.endFrame();
    if (mouseCursor instanceof SlickMouseCursor) {
      final Input input = gameContainer.getInput();
      ((SlickMouseCursor)mouseCursor).render(gameContainer.getGraphics(), input.getMouseX(), input.getMouseY());
    }
  }

  @Override
  public void clear() {
    delegate.clear();
  }

  @Nullable
  @Override
  public MouseCursor createMouseCursor(@Nonnull final String filename, final int hotspotX, final int hotspotY)
          throws IOException {
    return delegate.createMouseCursor(filename, hotspotX, hotspotY);
  }

  @Override
  public void enableMouseCursor(@Nonnull final MouseCursor mouseCursor) {
    delegate.enableMouseCursor(mouseCursor);
    this.mouseCursor = mouseCursor;
  }

  @Override
  public void disableMouseCursor() {
    delegate.disableMouseCursor();
    mouseCursor = null;
  }

  @Override
  public int createTextureAtlas(final int atlasWidth, final int atlasHeight) {
    return delegate.createTextureAtlas(atlasWidth, atlasHeight);
  }

  @Override
  public void clearTextureAtlas(final int atlasTextureId) {
    delegate.clearTextureAtlas(atlasTextureId);
  }

  @Nonnull
  @Override
  public Image loadImage(@Nonnull final String filename) {
    return delegate.loadImage(filename);
  }

  @Nullable
  @Override
  public Image loadImage(@Nonnull final ByteBuffer imageData, final int imageWidth, final int imageHeight) {
    return delegate.loadImage(imageData, imageWidth, imageHeight);
  }

  @Override
  public void addImageToAtlas(@Nonnull Image image, int atlasX, int atlasY, int atlasTextureId) {
    delegate.addImageToAtlas(image, atlasX, atlasY, atlasTextureId);
  }

  @Override
  public int createNonAtlasTexture(@Nonnull final Image image) {
    return delegate.createNonAtlasTexture(image);
  }

  @Override
  public void deleteNonAtlasTexture(final int textureId) {
    delegate.deleteNonAtlasTexture(textureId);
  }

  @Override
  public boolean existsNonAtlasTexture(final int textureId) {
    return delegate.existsNonAtlasTexture(textureId);
  }

  @Override
  public void addQuad(
          final float x,
          final float y,
          final float width,
          final float height,
          @Nonnull final Color color1,
          @Nonnull final Color color2,
          @Nonnull final Color color3,
          @Nonnull final Color color4,
          final float textureX,
          final float textureY,
          final float textureWidth,
          final float textureHeight,
          final int textureId) {
    delegate.addQuad(x, y, width, height, color1, color2, color3, color4, textureX, textureY, textureWidth, textureHeight, textureId);
  }

  @Override
  public void beginBatch(@Nonnull final BlendMode blendMode, final int textureId) {
    delegate.beginBatch(blendMode, textureId);
  }

  @Override
  public int render() {
    return delegate.render();
  }

  @Override
  public void removeImageFromAtlas(
          @Nonnull final Image image,
          final int atlasX,
          final int atlasY,
          final int imageWidth,
          final int imageHeight,
          final int atlasTextureId) {
    delegate.removeImageFromAtlas(image, atlasX, atlasY, imageWidth, imageHeight, atlasTextureId);
  }

  @Override
  public void useHighQualityTextures(final boolean shouldUseHighQualityTextures) {
    delegate.useHighQualityTextures(shouldUseHighQualityTextures);
  }

  @Override
  public void fillRemovedImagesInAtlas(final boolean shouldFill) {
    delegate.fillRemovedImagesInAtlas(shouldFill);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy