Add in spawners that can create things. Make it so rendered objects will render with the camera view
Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com> Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
aa41f52bbd
commit
cb04afe469
@ -92,6 +92,10 @@ public abstract class Object implements GameEntity{
|
||||
DrawLoop.Draw_Sprite(x,y,sprite);
|
||||
}
|
||||
|
||||
protected void Draw_Sprite(double x, double y, Sprite sprite, Transform transform){
|
||||
DrawLoop.Draw_Sprite(x,y,sprite,transform);
|
||||
}
|
||||
|
||||
protected void Draw_Animated_Sprite(double x, double y, AnimatedSprite sprite, double frameIndex){
|
||||
DrawLoop.Draw_Animated_Sprite(x,y,sprite,frameIndex);
|
||||
}
|
||||
|
8
src/sig/events/Event.java
Normal file
8
src/sig/events/Event.java
Normal file
@ -0,0 +1,8 @@
|
||||
package sig.events;
|
||||
|
||||
import sig.engine.String;
|
||||
|
||||
public interface Event{
|
||||
public String getDescription();
|
||||
public void perform(int x, int y);
|
||||
}
|
34
src/sig/events/SpawnEvent.java
Normal file
34
src/sig/events/SpawnEvent.java
Normal file
@ -0,0 +1,34 @@
|
||||
package sig.events;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import sig.RabiClone;
|
||||
import sig.engine.String;
|
||||
import sig.engine.objects.Object;
|
||||
|
||||
public class SpawnEvent implements Event{
|
||||
|
||||
Class<?> entity;
|
||||
String description;
|
||||
|
||||
public SpawnEvent(java.lang.String description,Class<?> o) {
|
||||
this.entity=o;
|
||||
this.description=new String(description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(int x, int y) {
|
||||
try {
|
||||
RabiClone.OBJ.add((Object)entity.getDeclaredConstructor(new Class<?>[]{Double.class,Double.class}).newInstance(x,y));
|
||||
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
|
||||
| NoSuchMethodException | SecurityException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,19 +1,22 @@
|
||||
package sig.map;
|
||||
|
||||
import sig.engine.String;
|
||||
import sig.events.Event;
|
||||
import sig.events.SpawnEvent;
|
||||
import sig.objects.Erinoah;
|
||||
|
||||
public enum DataTile {
|
||||
NULL, //File is populated by 0s by default. This represents nothing.
|
||||
BUN1("Spawns a blue bun"),
|
||||
BUN2("Spawns a green bun"),
|
||||
BUN3("Spawns a yellow bun"),
|
||||
BUN4("Spawns a red bun");
|
||||
BUN1(new SpawnEvent("Spawns a blue bun",Erinoah.class)),
|
||||
BUN2(new SpawnEvent("Spawns a green bun",Erinoah.class)),
|
||||
BUN3(new SpawnEvent("Spawns a yellow bun",Erinoah.class)),
|
||||
BUN4(new SpawnEvent("Spawns a red bun",Erinoah.class));
|
||||
|
||||
String description;
|
||||
|
||||
DataTile(){}
|
||||
DataTile(java.lang.String s) {
|
||||
this.description=new String(s);
|
||||
DataTile(Event e) {
|
||||
this.description=e.getDescription();
|
||||
}
|
||||
public String getDescription() {
|
||||
return description;
|
||||
|
@ -1,13 +1,16 @@
|
||||
package sig.objects;
|
||||
|
||||
import sig.engine.Panel;
|
||||
import sig.RabiClone;
|
||||
import sig.engine.Sprite;
|
||||
import sig.engine.objects.AnimatedObject;
|
||||
import sig.objects.actor.RenderedObject;
|
||||
|
||||
public class Erinoah extends AnimatedObject{
|
||||
public class Erinoah extends AnimatedObject implements RenderedObject{
|
||||
|
||||
public Erinoah(Panel panel) {
|
||||
super(Sprite.ERINOAH, 6.5, panel);
|
||||
public Erinoah(double x, double y) {
|
||||
super(Sprite.ERINOAH,6.5,RabiClone.p);
|
||||
setX(x);
|
||||
setY(y);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -18,6 +18,7 @@ import sig.map.Background;
|
||||
import sig.map.DataTile;
|
||||
import sig.map.Map;
|
||||
import sig.map.Tile;
|
||||
import sig.objects.actor.RenderedObject;
|
||||
|
||||
public class LevelRenderer extends Object{
|
||||
|
||||
@ -28,6 +29,19 @@ public class LevelRenderer extends Object{
|
||||
|
||||
@Override
|
||||
public void update(double updateMult) {
|
||||
for (int y=(int)(this.getY()/Tile.TILE_HEIGHT);y<(int)(RabiClone.BASE_HEIGHT/Tile.TILE_HEIGHT+this.getY()/Tile.TILE_HEIGHT+1);y++) {
|
||||
if (y<0||y>Map.MAP_HEIGHT) {
|
||||
continue;
|
||||
}
|
||||
for (int x=(int)(0+this.getX()/Tile.TILE_WIDTH);x<(int)(RabiClone.BASE_WIDTH/Tile.TILE_WIDTH+this.getX()/Tile.TILE_WIDTH+1);x++) {
|
||||
if (x<0||x>Map.MAP_WIDTH) {
|
||||
continue;
|
||||
}
|
||||
if (RabiClone.CURRENT_MAP.getDataTile(x,y)!=DataTile.NULL) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -49,8 +63,17 @@ public class LevelRenderer extends Object{
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i=0;i<RabiClone.OBJ.size();i++) {
|
||||
Object o = RabiClone.OBJ.get(i);
|
||||
if (o instanceof RenderedObject) {
|
||||
if (o instanceof AnimatedObject) {
|
||||
Draw_Animated_Object((AnimatedObject)o,RabiClone.player.facing_direction?Transform.HORIZONTAL:Transform.NONE);
|
||||
} else {
|
||||
Draw_Object(o,RabiClone.player.facing_direction?Transform.HORIZONTAL:Transform.NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (RabiClone.player!=null) {
|
||||
Draw_Animated_Object(RabiClone.player,RabiClone.player.facing_direction?Transform.HORIZONTAL:Transform.NONE);
|
||||
Draw_Text(4,4,new String(RabiClone.player.y_velocity),Font.PROFONT_12);
|
||||
Draw_Text(4,4+Font.PROFONT_12.getGlyphHeight(),new String(RabiClone.scaleTime),Font.PROFONT_12);
|
||||
}
|
||||
@ -95,6 +118,10 @@ public class LevelRenderer extends Object{
|
||||
super.Draw_Sprite(object.getX()-this.getX()-object.getSprite().getWidth()/2, Math.round(object.getY()-this.getY()-object.getSprite().getHeight()/2), object.getSprite());
|
||||
}
|
||||
|
||||
protected void Draw_Object(Object object, Transform transform) {
|
||||
super.Draw_Sprite(object.getX()-this.getX()-object.getSprite().getWidth()/2, Math.round(object.getY()-this.getY()-object.getSprite().getHeight()/2), object.getSprite(), transform);
|
||||
}
|
||||
|
||||
protected void Draw_Animated_Object(AnimatedObject object) {
|
||||
Draw_Animated_Object(object,Transform.NONE);
|
||||
}
|
||||
|
@ -10,10 +10,11 @@ import sig.engine.objects.CollisionEntity;
|
||||
import sig.map.Map;
|
||||
import sig.map.Tile;
|
||||
import sig.map.View;
|
||||
import sig.objects.actor.RenderedObject;
|
||||
import sig.objects.actor.State;
|
||||
import sig.utils.TimeUtils;
|
||||
|
||||
public class Player extends AnimatedObject implements CollisionEntity {
|
||||
public class Player extends AnimatedObject implements CollisionEntity,RenderedObject{
|
||||
final static double GRAVITY = 1300;
|
||||
final static double NORMAL_FRICTION = 6400;
|
||||
final static double NORMAL_JUMP_VELOCITY = -300;
|
||||
|
5
src/sig/objects/actor/RenderedObject.java
Normal file
5
src/sig/objects/actor/RenderedObject.java
Normal file
@ -0,0 +1,5 @@
|
||||
package sig.objects.actor;
|
||||
|
||||
public interface RenderedObject {
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user