package Roguelike.Items; import Roguelike.GameEvent.Constant.ConstantEvent; import Roguelike.Global; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.utils.XmlReader; import java.io.IOException; import java.util.HashMap; import java.util.Random; /** * Created by Philip on 22-Dec-15. */ public class Recipe { public static Item createRecipe( String recipe, Item material ) { Item item = Item.load( "Recipes/"+recipe ); item.quality = material.quality; item.applyQuality( material.quality ); combineItems( item, material ); item.name = material.name + " " + item.name; return item; } public static void applyModifer( Item item, String modifierName, int quality, boolean isPrefix ) { Item modifier = loadModifier(modifierName, quality); combineItems( item, modifier ); if (isPrefix) { item.name = modifier.name + " " + item.name; } else { item.name += " of the " + modifier.name; } } public static void combineItems( Item item1, Item item2 ) { if ( item2.constantEvent != null ) { if (item1.constantEvent == null) { item1.constantEvent = new ConstantEvent(); } for ( Global.Statistic stat : Global.Statistic.values() ) { if ( item2.constantEvent.equations.containsKey( stat ) ) { int itemVal = item1.constantEvent.getStatistic( Global.Statistic.emptyMap, stat ); int modifierVal = item2.constantEvent.getStatistic( Global.Statistic.emptyMap, stat ); int newVal = itemVal + modifierVal; item1.constantEvent.putStatistic( stat, ""+newVal ); } } } item1.onTurnEvents.addAll( item2.onTurnEvents ); item1.onDealDamageEvents.addAll( item2.onDealDamageEvents ); item1.onReceiveDamageEvents.addAll( item2.onReceiveDamageEvents ); item1.onTaskEvents.addAll( item2.onTaskEvents ); item1.onMoveEvents.addAll( item2.onMoveEvents ); item1.onAttackEvents.addAll( item2.onAttackEvents ); item1.onWaitEvents.addAll( item2.onWaitEvents ); item1.onUseAbilityEvents.addAll( item2.onUseAbilityEvents ); item1.onDeathEvents.addAll( item2.onDeathEvents ); item1.onExpireEvents.addAll( item2.onExpireEvents ); item1.onHitEvents.addAll( item2.onHitEvents ); } public static Item loadModifier( String modifier, int quality ) { Item item = Item.load( "Modifiers/"+modifier ); item.applyQuality( quality ); XmlReader reader = new XmlReader(); XmlReader.Element xml = null; try { xml = reader.parse( Gdx.files.internal( "Items/Modifiers/" + modifier + ".xml" ) ); } catch ( IOException e ) { e.printStackTrace(); } XmlReader.Element namesElement = xml.getChildByName( "Names" ); if (quality >= namesElement.getChildCount()) { quality = namesElement.getChildCount()-1; } String name = namesElement.getChild( quality ).getName(); item.name = name; return item; } }