package com.rebelkeithy.ftl.crew;
import java.util.Set;
import com.google.common.eventbus.Subscribe;
import com.rebelkeithy.ftl.Main;
import com.rebelkeithy.ftl.event.CrewDamagedEvent;
import com.rebelkeithy.ftl.event.CrewUpdateEvent;
import com.rebelkeithy.ftl.event.GetSystemPowerEvent;
import com.rebelkeithy.ftl.event.ShipCreationEvent;
import com.rebelkeithy.ftl.properties.Properties;
import com.rebelkeithy.ftl.ship.Room;
import com.rebelkeithy.ftl.systems.AbstractShipSystem;
public class CrewEffects
{
private int dt;
public CrewEffects()
{
Main.GLOBAL_BUS.register(this);
}
@Subscribe
public void shipCreation(ShipCreationEvent event)
{
//event.ship.EVENT_BUS.register(this);
}
@Subscribe
public void crewUdate(CrewUpdateEvent event)
{
Crew crew = event.getCrew();
if(crew.getRace().equals("Lanius"))
{
if(crew.getRoom() != null)
{
Properties properties = crew.getRoom().getProperties();
double oxygen = properties.getDouble("oxygen");
oxygen -= 2 * dt;
if(oxygen < 0)
oxygen = 0;
properties.setDouble("oxygen", oxygen);
}
}
}
@Subscribe
public void crewDamagedEvent(CrewDamagedEvent event)
{
if(event.getSource().equals("oxygen"))
{
if(event.getCrew().getRace().equals("Lanius"))
{
event.cancel = true;
}
if(event.getCrew().getRace().equals("Crystal"))
{
event.damage *= 0.5;
}
}
}
@Subscribe
public void getPowerEvent(GetSystemPowerEvent event)
{
AbstractShipSystem system = event.ship.getSystem(event.system);
Room room = system.getRoom();
if(room != null)
{
Set<Crew> crew = room.getCrew();
for(Crew member : crew)
{
if(member.getRace().equals("Zoltan"))
{
// TODO: What if max power is 1 and there are 2 zoltans; calc additional power in loop then check to make sure it is not more than max power
// TODO: What if the system was at max power and a zoltan walks in; perhaps should be taken care of in the system, if power is greater than max, remove curr-max power
event.power++;
}
}
}
}
}