mirror of
https://github.com/ynerant/Level-Editor.git
synced 2025-12-14 07:15:18 +01:00
Édition de collision terminée
This commit is contained in:
104
src/main/java/galaxyoyo/unknown/editor/CollidPanel.java
Normal file
104
src/main/java/galaxyoyo/unknown/editor/CollidPanel.java
Normal file
@@ -0,0 +1,104 @@
|
||||
package galaxyoyo.unknown.editor;
|
||||
|
||||
import galaxyoyo.unknown.api.editor.Case;
|
||||
import galaxyoyo.unknown.api.editor.Collision;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public class CollidPanel extends JPanel
|
||||
{
|
||||
private static final long serialVersionUID = -138754019431984881L;
|
||||
|
||||
private final EditorFrame frame;
|
||||
|
||||
public CollidPanel(EditorFrame frame)
|
||||
{
|
||||
super ();
|
||||
this.frame = frame;
|
||||
}
|
||||
|
||||
public EditorFrame getFrame()
|
||||
{
|
||||
return frame;
|
||||
}
|
||||
|
||||
public Map getMap()
|
||||
{
|
||||
return frame.getMap();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g)
|
||||
{
|
||||
g.fillRect(0, 0, getWidth(), getHeight());
|
||||
BufferedImage img = getMap().getFont();
|
||||
int x = getWidth() / 2 - img.getWidth();
|
||||
int y = getHeight() / 2 - img.getHeight();
|
||||
int width = img.getWidth() * 2;
|
||||
int height = img.getHeight() * 2;
|
||||
g.drawImage(getMap().getFont(), x, y, width, height, null);
|
||||
|
||||
for (Case c : getMap().getAllCases())
|
||||
{
|
||||
if (isEmpty(c.getCoucheOne().getImage()))
|
||||
continue;
|
||||
|
||||
g.drawImage(c.getCoucheOne().getImage(), x + c.getPosX() * 34 + 2, y + c.getPosY() * 34 + 2, 32, 32, null);
|
||||
|
||||
if (isEmpty(c.getCoucheTwo().getImage()))
|
||||
continue;
|
||||
|
||||
g.drawImage(c.getCoucheTwo().getImage(), x + c.getPosX() * 34 + 2, y + c.getPosY() * 34 + 2, 32, 32, null);
|
||||
|
||||
if (isEmpty(c.getCoucheThree().getImage()))
|
||||
continue;
|
||||
|
||||
g.drawImage(c.getCoucheThree().getImage(), x + c.getPosX() * 34 + 2, y + c.getPosY() * 34 + 2, 32, 32, null);
|
||||
}
|
||||
|
||||
for (Case c : getMap().getAllCases())
|
||||
{
|
||||
if (c.getCollision() != Collision.ANY)
|
||||
{
|
||||
BufferedImage alpha = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
|
||||
|
||||
if (c.getCollision() == Collision.FULL)
|
||||
{
|
||||
Graphics2D grap = alpha.createGraphics();
|
||||
grap.setColor(new Color(0, 0, 0, 100));
|
||||
grap.fillRect(0, 0, 16, 16);
|
||||
grap.dispose();
|
||||
}
|
||||
else if (c.getCollision() == Collision.PARTIAL)
|
||||
{
|
||||
Graphics2D grap = alpha.createGraphics();
|
||||
grap.setColor(new Color(255, 0, 255, 70));
|
||||
grap.fillRect(0, 0, 16, 16);
|
||||
grap.dispose();
|
||||
}
|
||||
|
||||
g.drawImage(alpha, x + c.getPosX() * 34 + 2, y + c.getPosY() * 34 + 2, 32, 32, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isEmpty(BufferedImage image)
|
||||
{
|
||||
int allrgba = 0;
|
||||
|
||||
for (int x = 0; x < image.getWidth(); ++x)
|
||||
{
|
||||
for (int y = 0; y < image.getHeight(); ++y)
|
||||
{
|
||||
allrgba += image.getRGB(x, y) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
return allrgba == 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user