Skip to content

Commit bf09ddf

Browse files
committed
Made sprite draw it self
1 parent 61cc6fa commit bf09ddf

7 files changed

Lines changed: 74 additions & 28 deletions

File tree

src/JavaGameEngine/Components/Component.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ public void setEnabled(boolean enabled) {
113113
*/
114114
public void addChild(Component c){
115115
c.setParent(this);
116+
Debug.log("added "+c);
116117
this.components.add(c);
117118
}
118119

@@ -185,7 +186,7 @@ public void update() {
185186
float x = (parent.getPosition().getX()-((getScale().getX()/2)));
186187
float y = (parent.getPosition().getY()-((getScale().getY()/2)));
187188

188-
setPosition(new Vector2(x,y).add(localPosition)); // we get the parents position and we add our localPosition
189+
setPosition(new Vector2(x,y).add(getLocalPosition())); // we get the parents position and we add our localPosition
189190

190191
setRotation(parent.getRotation().add(getLocalRotation()));
191192
setScale(parent.getScale().add(getLocalScale()));

src/JavaGameEngine/Components/GameObject.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ public void draw(Graphics g){
2020
//g.fillRect((int) getPosition().getX(), (int) getPosition().getY(), (int) getScale().getX(), (int) getScale().getY());
2121
Sprite sprite = (Sprite) getChild(new Sprite());
2222
if(sprite!=null){
23-
// Debug.startCount();
24-
g.drawImage(sprite.getAnimation(),(int)sprite.getPosition().getX(),(int)sprite.getPosition().getY(),(int)sprite.getScale().getX(),(int)sprite.getScale().getY(),null);
25-
//Debug.log(this);
26-
//Debug.endCount();
23+
//g.drawImage(sprite.getAnimation(),(int)sprite.getPosition().getX(),(int)sprite.getPosition().getY(),(int)sprite.getScale().getX(),(int)sprite.getScale().getY(),null);
2724
}
2825
else{
2926
g.fillRect((int) getSpritePosition().getX(), (int) getSpritePosition().getY(), (int) getScale().getX(), (int) getScale().getY());

src/JavaGameEngine/Components/Sprite/Sprite.java

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,29 @@
66
import org.w3c.dom.css.Rect;
77

88
import javax.imageio.ImageIO;
9+
import javax.xml.bind.helpers.DefaultValidationEventHandler;
910
import java.awt.*;
1011
import java.awt.image.BufferedImage;
12+
import java.io.File;
1113
import java.io.IOException;
1214
import java.io.InputStream;
15+
import java.net.URL;
16+
import java.util.ArrayList;
1317
import java.util.LinkedList;
1418

1519
public class Sprite extends Component {
1620

17-
LinkedList<LinkedList<Rectangle>> animations1 = new LinkedList<>();
18-
LinkedList<LinkedList<BufferedImage>> animations = new LinkedList<>();
21+
ArrayList<ArrayList<Rectangle>> animations1 = new ArrayList<>();
22+
ArrayList<BufferedImage[]> animations = new ArrayList<>();
1923
BufferedImage spriteSheet;
2024
private int animationIndex = 0;
2125
private int spriteCounter;
2226
float timer = 10;
2327
int currentSprite = 0;
2428

25-
2629
public float getTimer() {
2730
return timer;
2831
}
29-
3032
public void setTimer(float timer) {
3133
this.timer = timer;
3234
}
@@ -37,7 +39,6 @@ public void setTimer(float timer) {
3739
*/
3840
public void loadAnimation(Rectangle[] tiles,String spriteSheetPath){
3941
BufferedImage sprite = null;
40-
4142
try {
4243
InputStream in = this.getClass().getResourceAsStream(spriteSheetPath);
4344
sprite = ImageIO.read(in);
@@ -48,42 +49,66 @@ public void loadAnimation(Rectangle[] tiles,String spriteSheetPath){
4849
if (spriteSheet == null) {
4950
spriteSheet = sprite;
5051
}
51-
LinkedList<BufferedImage> animation = new LinkedList<>();
52+
BufferedImage[] animation = new BufferedImage[tiles.length];
53+
int i = 0;
5254
for(Rectangle r : tiles){
5355
BufferedImage animationSprite = (spriteSheet.getSubimage((int) (r.getX()), (int) (r.getY()), (int) r.getWidth(), (int) r.getHeight()));
54-
animation.add(animationSprite);
56+
animation[i]=(animationSprite);
57+
i++;
5558
}
5659
animations.add(animation);
57-
5860
}
5961
/**
6062
* This function loads in sprites from images
6163
* @param paths array of paths to images to be loaded
6264
*/
6365
public void loadAnimation(String[] paths){
64-
66+
BufferedImage[] images = new BufferedImage[paths.length];
67+
for(int i = 0;i< paths.length;i++){
68+
String path = paths[i];
69+
//read image of file
70+
BufferedImage sprite = null;
71+
try {
72+
InputStream in = this.getClass().getResourceAsStream(path);
73+
sprite = ImageIO.read(in);
74+
} catch (IOException e) {
75+
e.printStackTrace();
76+
}
77+
//add image to temp animation
78+
images[i] = sprite;
79+
}
80+
animations.add(images);
6581
}
6682
/**
6783
* This function loads in all images in side a folder
6884
* @param folder path to folder where to load in all sprites
69-
*/
85+
* */
7086
public void loadAnimation(String folder){
71-
87+
/*
88+
how with jar?
89+
*/
7290
}
7391

7492
public BufferedImage getAnimation(){
75-
int spritesLen = animations.get(animationIndex).size();
93+
int spritesLen = animations.get(animationIndex).length;
7694
//Adds until timer then 0
7795
spriteCounter = (spriteCounter+1>=timer) ? 0 :spriteCounter+1;
78-
//Sets the current sprite index
96+
//Sets the current sprite index (the image that will be displayed)
7997
currentSprite = (((currentSprite + 1) >= spritesLen) && (spriteCounter >= (timer - 1))) ? 0 :
8098
((spriteCounter >= (timer - 1)) ? (currentSprite + 1) :
8199
currentSprite);
82100

83-
BufferedImage sprite = animations.get(animationIndex).get(currentSprite);
101+
BufferedImage sprite = animations.get(animationIndex)[(currentSprite)];
84102
float angle = getRotation().getAngle();
103+
//Sprite.resize(rotate(angle,sprite),getScale())
104+
return (sprite);
105+
}
106+
107+
@Override
108+
public void draw(Graphics g) {
109+
super.draw(g);
110+
g.drawImage(getAnimation(),(int)getPosition().getX(),(int)getPosition().getY(),(int)getScale().getX(),(int)getScale().getY(),null);
85111

86-
return (Sprite.resize(rotate(angle,sprite),getScale()));
87112
}
88113

89114
public static BufferedImage resize(BufferedImage img, Vector2 scale) {
@@ -96,13 +121,10 @@ public static BufferedImage resize(BufferedImage img, Vector2 scale) {
96121

97122
return dimg;
98123
}
99-
public BufferedImage rotate(double angle,BufferedImage image)
100-
{
101-
124+
public BufferedImage rotate(double angle,BufferedImage image) {
102125
// Getting Dimensions of image
103126
int width = image.getWidth();
104127
int height = image.getHeight();
105-
106128
// Creating a new buffered image
107129
BufferedImage newImage = new BufferedImage(
108130
image.getWidth(), image.getWidth(), image.getType());

src/Testing/Ground.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,29 @@
1313
public class Ground extends GameObject {
1414

1515
public Ground() {
16-
setScale(new Vector2(600,100));
16+
setScale(new Vector2(1000,64));
1717
setPosition(new Vector2(300,500));
18-
addChild(new SquareCollider());
18+
for(int i = 0;i<500;i++){
19+
/* Sprite sprite = new Sprite();
20+
sprite.loadAnimation(new Rectangle[]{new Rectangle(0,0,250,250),new Rectangle(0,250,250,250)},"/spritesheet.png");
21+
sprite.setLocalScale(new Vector2(-getScale().getX()+64,0));
22+
sprite.setLocalPosition(new Vector2(i*sprite.getScale().getX(),0));
23+
addChild(sprite);
24+
Tile tile = new Tile("/sprites/Tiles/Tile_02.png");
25+
tile.setPosition(new Vector2(i*64,485));
26+
instantiate(tile);*/
27+
Sprite s = new Sprite();
28+
s.loadAnimation(new Rectangle[]{new Rectangle(0,0,32,32)},"/sprites/Tiles/Tile_02.png");
29+
s.setLocalScale(new Vector2(-getScale().getX()+64,-getScale().getY()+64));
30+
s.setLocalPosition(new Vector2(i*64,0));
31+
addChild(s);
32+
33+
}
34+
35+
SquareCollider s = new SquareCollider();
36+
s.setLocalPosition(new Vector2(1000,0));
37+
s.setLocalScale(new Vector2(1000*64,0));
38+
addChild(s);
1939

2040
}
2141

src/Testing/Main.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public static void main(String[] args){
2020
JFrame frame = new JFrame();
2121
frame.setTitle("My example Title");
2222

23-
Ground ground = new Ground();
24-
ComponentHandler.addObject(ground);
23+
Ground ground = new Ground();
24+
ComponentHandler.addObject(ground);
2525

2626

2727
ComponentHandler.addObject(new Coin());

src/Testing/Player.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@
1212
import JavaGameEngine.msc.Vector2;
1313

1414
import java.awt.*;
15+
import java.util.Observer;
1516

1617
public class Player extends GameObject {
1718
Label speed = new Label();
1819
public Player(Vector2 pos) {
20+
1921
Sprite sprite = new Sprite();//,new Rectangle(0,250,250,250)
2022
sprite.loadAnimation(new Rectangle[]{new Rectangle(0,0,250,250),new Rectangle(0,250,250,250)},"/spritesheet.png");
23+
//sprite.loadAnimation(new String[]{"/spritesheet.png"});
2124
sprite.setLocalPosition(new Vector2(0,10));
2225
addChild(sprite);
2326

src/Testing/Tile.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package Testing;
22

3+
import JavaGameEngine.Components.Collider.SquareCollider;
34
import JavaGameEngine.Components.GameObject;
45
import JavaGameEngine.Components.Sprite.Sprite;
56
import JavaGameEngine.msc.Vector2;
@@ -14,6 +15,8 @@ public Tile(String path) {
1415
Sprite s = new Sprite();
1516
s.loadAnimation(new Rectangle[]{new Rectangle(0,0,32,32)},path);
1617
addChild(s);
18+
addChild(new SquareCollider());
19+
//addChild(new PhysicsBody());
1720

1821
}
1922
}

0 commit comments

Comments
 (0)