/**
*------------------------------------------------------------------------------
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.lostkingdomsfrontier.pfrpg.entity;
import java.util.EnumMap;
import javax.persistence.Embeddable;
import javax.persistence.Transient;
import javax.xml.bind.annotation.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.lostkingdomsfrontier.pfrpg.AdjustableValue;
/**
* @author bebopjmm
*
*/
@Embeddable
@XmlType(name = "MovementType", namespace = "java:org.rollinitiative.d20.entity")
public class Movement
{
static final Log LOG_ = LogFactory.getLog(Movement.class);
public enum EncumberanceType {
LIGHT, MEDIUM, HEAVY;
}
private int speedLight;
private int speedMedium;
private int speedHeavy;
@Transient
EnumMap<EncumberanceType, AdjustableValue> moveMap = new EnumMap<EncumberanceType, AdjustableValue>(
EncumberanceType.class);
public Movement()
{
this(0, 0, 0);
}
public Movement(int speedLight, int speedMedium, int speedHeavy)
{
this.speedLight = speedLight;
AdjustableValue speedValue = new AdjustableValue(speedLight);
moveMap.put(EncumberanceType.LIGHT, speedValue);
this.speedMedium = speedMedium;
speedValue = new AdjustableValue(speedMedium);
moveMap.put(EncumberanceType.MEDIUM, speedValue);
this.speedHeavy = speedHeavy;
speedValue = new AdjustableValue(speedHeavy);
moveMap.put(EncumberanceType.HEAVY, speedValue);
}
public int getSpeed(EncumberanceType encumberance)
{
return moveMap.get(encumberance).getCurrent();
}
public AdjustableValue getSpeedValue(EncumberanceType encumberance)
{
return moveMap.get(encumberance);
}
@XmlAttribute(name = "light", required = true)
public void setLightEncumberanceSpeed(int speed)
{
AdjustableValue speedValue = moveMap.get(EncumberanceType.LIGHT);
speedValue.setBase(speed);
this.speedLight = speed;
}
@XmlAttribute(name = "medium", required = true)
public void setMediumEncumberanceSpeed(int speed)
{
AdjustableValue speedValue = moveMap.get(EncumberanceType.MEDIUM);
speedValue.setBase(speed);
this.speedMedium = speed;
}
@XmlAttribute(name = "heavy", required = true)
public void setHeavyEncumberanceSpeed(int speed)
{
AdjustableValue speedValue = moveMap.get(EncumberanceType.HEAVY);
speedValue.setBase(speed);
this.speedHeavy = speed;
}
}