package core;
import org.magnos.entity.Component;
import org.magnos.entity.Controller;
import org.magnos.entity.Ents;
import org.magnos.entity.vals.FloatVal;
import org.magnos.entity.vals.IntVal;
import com.maceswinger.Rectangle;
import com.maceswinger.Vector2;
import com.maceswinger.map.MapLoader;
import com.maceswinger.mods.Mod;
import com.maceswinger.mods.ModInfo;
import com.maceswinger.net.Register;
import com.maceswinger.server.GameServer;
import com.maceswinger.test.inventory.Inventory;
import core.controllers.ControlGoblinAI;
import core.controllers.ControlGravity;
import core.controllers.ControlPlayer;
import core.controllers.ControlVelocity;
import core.spawns.GoblinSpawn;
import core.spawns.GravityTile;
import core.spawns.PlayerSpawn;
import core.spawns.Tile;
@ModInfo
public class Core extends Mod
{
public static class Controllers
{
public static Controller gravity;
public static Controller velocity;
public static Controller player;
public static Controller goblinAi;
}
public static class Components
{
public static Component<Vector2> velocity;
public static Component<FloatVal> rotation;
public static Component<Rectangle> collider;
public static Component<Inventory> inventory;
public static Component<IntVal> jumpCooldown;
public static Component<IntVal> attackCooldown;
}
@Override
public void info()
{
name = "MS Core";
desc = "Main data package for Mace Swinger";
}
@Override
public void init()
{
Controllers.gravity = Ents.newController("gravity", new ControlGravity());
Controllers.velocity = Ents.newController("velocity", new ControlVelocity());
Controllers.player = Ents.newController("player", new ControlPlayer());
Controllers.goblinAi = Ents.newController("goblin_ai", new ControlGoblinAI());
Components.velocity = Ents.newComponent("velocity", new Vector2());
Components.rotation = Ents.newComponent("rotation", new FloatVal());
Components.collider = Ents.newComponent("rectangle", new Rectangle());
Components.inventory = Ents.newComponent("inventory", new Inventory());
Components.jumpCooldown = Ents.newComponent("jumpCooldown", new IntVal());
Components.attackCooldown = Ents.newComponent("attackCooldown", new IntVal());
MapLoader.addMapObject("PlayerSpawn", new PlayerSpawn());
MapLoader.addMapObject("GoblinSpawn", new GoblinSpawn());
MapLoader.addMapObject("Tile", new Tile());
MapLoader.addMapObject("GravityTile", new GravityTile());
Register.components.add(Components.velocity);
Register.components.add(Components.rotation);
Register.components.add(Components.collider);
Register.components.add(Components.inventory);
Register.components.add(Components.jumpCooldown);
Register.components.add(Components.attackCooldown);
Register.controllers.add(Controllers.goblinAi);
Register.controllers.add(Controllers.velocity);
Register.controllers.add(Controllers.gravity);
Register.controllers.add(Controllers.player);
GameServer.onPlayerConnect = new Runnable()
{
public void run()
{
GameServer.entities.add(PlayerSpawn.create((int) GameServer.playerSpawn.x, (int) GameServer.playerSpawn.y));
}
};
}
}