static ItemObject PerformBuildItem(LivingObject builder, BuildableItem buildableItem, IEnumerable<ObjectID> sourceObjects) { if (!VerifyBuildItem(builder, buildableItem, sourceObjects)) return null; var obs = sourceObjects.Select(oid => builder.World.FindObject<ItemObject>(oid)); MaterialID materialID; if (buildableItem.MaterialID.HasValue) materialID = buildableItem.MaterialID.Value; else materialID = obs.First().MaterialID; var skillLevel = builder.GetSkillLevel(buildableItem.SkillID); var itemBuilder = new ItemObjectBuilder(buildableItem.ItemID, materialID) { Quality = skillLevel, }; var item = itemBuilder.Create(builder.World); foreach (var ob in obs) ob.Destruct(); if (item.MoveTo(builder.Environment, builder.Location) == false) throw new Exception(); return item; }
public void generateItem() { List <BuildableItem> posibleItems = new List <BuildableItem>(); if (woodCount < this.maxWoodCount) { posibleItems.Add(this.buildableItems[0]); } if (stonesCount < this.maxStonesCount) { posibleItems.Add(this.buildableItems[1]); } if (coralsCount < this.maxCoralsCount) { posibleItems.Add(this.buildableItems[2]); } BuildableItem buildableItem = posibleItems[Random.Range(0, posibleItems.Count)]; if (buildableItem.material == ItemMaterial.Wood) { woodCount++; } else if (buildableItem.material == ItemMaterial.Stone) { stonesCount++; } else if (buildableItem.material == ItemMaterial.Coral) { coralsCount++; } int stage = buildableItem.stage; if (stage == 1) { if (Random.Range(1, 6) == 1) { stage = 2; } } else { stage = Random.Range(2, 3); } float randomPositionX = Random.Range(this.minX.position.x, this.maxX.position.x); float randomPositionY = Random.Range(this.stagesY[stage - 1].position.y, this.stagesY[stage].position.y); Vector2 position = new Vector2(randomPositionX, randomPositionY); GameObject newItem = Instantiate(collectablePrefab, position, Quaternion.identity) as GameObject; newItem.GetComponent <CollectableItem>().buildableItem = buildableItem; }
public BuildOrder(BuildableItem buildableItem, IItemFilter[] userFilters) { this.BuildableItem = buildableItem; this.UserItemFilters = userFilters; if (this.BuildableItem.MaterialID.HasValue) this.Name = String.Format("{0} {1}", this.BuildableItem.MaterialID, this.BuildableItem.ItemInfo.Name); else this.Name = this.BuildableItem.ItemInfo.Name; this.SourceItems = new ItemObject[this.BuildableItem.FixedBuildMaterials.Count]; }
public void Build(GameObject t, GameObject item) { Tile tile = t.GetComponent <Tile>(); BuildableItem build = item.GetComponent <BuildableItem>(); resources.RemoveResource(build.requiredResource, build.resourceCost); Instantiate(item, t.GetComponent <Renderer>().bounds.center, Quaternion.identity); if (!build.passable) { t.GetComponent <Node>().SetPassable(false); } }
public void HoldBuilding(BuildableItem item, int slotNum) { mainCam = Camera.main; onHoldItem = item; onHoldItemSlotNum = slotNum; // create building this.building = Instantiate(item.buildingModel, Vector2.zero, Quaternion.identity) as GameObject; buildingTrans = building.transform; // update toggle isBuildingOnHold = true; }
static bool VerifyBuildItem(LivingObject builder, BuildableItem buildableItem, IEnumerable<ObjectID> sourceObjects) { return true; /* if (!Contains(builder.Location)) return false; var srcArray = sourceObjects.Select(oid => this.World.FindObject<ItemObject>(oid)).ToArray(); if (srcArray.Any(o => o == null || !this.Contains(o.Location))) return false; return buildableItem.MatchItems(srcArray); */ }
public bool CanBuild(GameObject item) { BuildableItem build = item.GetComponent <BuildableItem>(); int resourcesNeededForTags = manager.GetNumberOfResourcesRequiredForTaggedBuildingTiles(build.requiredResource); if ((resources.GetResourceQuantity(build.requiredResource) - resourcesNeededForTags) >= build.resourceCost) { return(true); } else { Debug.Log("Not enough resources! " + "You need " + build.resourceCost + " " + build.requiredResource.ToString() + ", but you only have " + resources.GetResourceQuantity(build.requiredResource) + "!"); return(false); } }
public void removeItem(BuildableItem item) { if (item.material == ItemMaterial.Wood) { woodCount--; } else if (item.material == ItemMaterial.Stone) { stonesCount--; } else if (item.material == ItemMaterial.Coral) { coralsCount--; } }
static bool VerifyBuildItem(LivingObject builder, BuildableItem buildableItem, IEnumerable <ObjectID> sourceObjects) { return(true); /* * if (!Contains(builder.Location)) * return false; * * var srcArray = sourceObjects.Select(oid => this.World.FindObject<ItemObject>(oid)).ToArray(); * * if (srcArray.Any(o => o == null || !this.Contains(o.Location))) * return false; * * return buildableItem.MatchItems(srcArray); */ }
private void PlaceBuilding() { // 1. place the building // 2. unhold the building // 3. remove item from inventory // 4. onHoldItem.OnBuild(buildingTrans.position); Destroy(building); isBuildingOnHold = false; // remove from inventory InventoryPanel.instance.inventory.RemoveItemAtSlot(onHoldItemSlotNum); onHoldItemSlotNum = -1; onHoldItem = null; }
public int GetNumberOfResourcesRequiredForTaggedBuildingTiles(Resource resource) { int count = 0; List <GameObject> taggedTiles = GetTaggedBuildingTiles(); foreach (GameObject taggedTile in taggedTiles) { GameObject itemToBuild = taggedTile.GetComponent <Tile>().toBuild; if (itemToBuild != null) { BuildableItem bI = itemToBuild.GetComponent <BuildableItem>(); if (bI.requiredResource == resource) { count += bI.resourceCost; } } } return(count); }
static ItemObject PerformBuildItem(LivingObject builder, BuildableItem buildableItem, IEnumerable <ObjectID> sourceObjects) { if (!VerifyBuildItem(builder, buildableItem, sourceObjects)) { return(null); } var obs = sourceObjects.Select(oid => builder.World.FindObject <ItemObject>(oid)); MaterialID materialID; if (buildableItem.MaterialID.HasValue) { materialID = buildableItem.MaterialID.Value; } else { materialID = obs.First().MaterialID; } var skillLevel = builder.GetSkillLevel(buildableItem.SkillID); var itemBuilder = new ItemObjectBuilder(buildableItem.ItemID, materialID) { Quality = skillLevel, }; var item = itemBuilder.Create(builder.World); foreach (var ob in obs) { ob.Destruct(); } item.MoveToMustSucceed(builder.Environment, builder.Location); return(item); }
public void OnPointerClick(PointerEventData eventData) { // left click if (eventData.button == PointerEventData.InputButton.Left) { // slot not empty if (ContainsItem()) { // swap dragged item if is dragging // if (inventory.isDraggingItem) { SwapDraggedItem(); return; } // item selection if (inventory.hasSelectedItem) { inventory.UnselectItem(); } else { inventory.SelectItem(slotNum); } } // slot empty else { // place dragged item if dragging if (inventory.isDraggingItem) { inventory.items[slotNum] = inventory.draggedItem; inventory.HideDraggedItem(); return; } // unselect item if selected if (inventory.hasSelectedItem) { inventory.UnselectItem(); } } } // ******** // TODO: combine with above. contains item/ not contain // ******** // double click to use / equip if (eventData.clickCount == 2) { Item item = inventory.items[slotNum]; if (item is EquipableItem) { if (!isEquipped) { inventory.EquipItem(slotNum); } else { inventory.UnEquipItem(slotNum); } isEquipped = !isEquipped; equippedMark.enabled = isEquipped; } // TODO: right click to cancel on hold building else if (item is BuildableItem) { BuildableItem building = (BuildableItem)item; BuildingManager buildManager = BuildingManager.instance; if (buildManager.isBuildingOnHold) { // cancel previous holding // hold the new building } else { buildManager.HoldBuilding(building, slotNum); } } } /* if same item -> unselect it * if (inventory.selectedItemNum == slotNum) * inventory.UnselectItem(); * * if different -> unselect old -> select new * else * { * inventory.UnselectItem(); * inventory.SelectItem(slotNum); * } */ // not selected item //else // inventory.SelectItem(slotNum); }
public void addCollectable(BuildableItem item) { currentTotalEndurance += item.endurance; updateCastle(); }
public void BuildItem (BuildableItem Item) { if (CheckRequirements(Item)) { if (ItemBuilding == null || string.IsNullOrEmpty(ItemBuilding.Name)) { ItemBuilding = Item; bFactoryActive = true; Debug.Log("Building " + ItemBuilding.Name + "..." ); } else if (Item != null && !string.IsNullOrEmpty(Item.Name)) { Debug.Log("Adding Item To Queue"); BuildQueue.Add(Item); bFactoryActive = true; } CheckResources (); } else { //Requirements failed } }
/// <summary> /// Invokes the command. /// </summary> public override void Invoke() { OnInvoking(); string cityPickerTitle = ClientResources.GetString("sabotage_cityPickerTitle"); SelectCity(cityPickerTitle); if (this.City == null) { OnCanceled(); return; } BuildableItem improvement = this.City.NextImprovement; EspionageResult result = this.DiplomaticTie.Sabotage(this.City); string text = string.Empty; switch (result) { case EspionageResult.Failure: break; case EspionageResult.ImmuneToEspionage: text = ClientResources.GetString("sabotage_immune"); text = string.Format( CultureInfo.CurrentCulture, text, this.DiplomaticTie.ForeignCountry.Civilization.Adjective); break; case EspionageResult.SpyCaught: text = ClientResources.GetString("sabotage_spycaught"); text = string.Format( CultureInfo.CurrentCulture, text, this.City.Name, this.DiplomaticTie.ForeignCountry.Government.LeaderTitle, this.DiplomaticTie.ForeignCountry.LeaderName); break; case EspionageResult.Success: text = ClientResources.GetString("sabotage_success"); text = string.Format( CultureInfo.CurrentCulture, text, this.City.Name, improvement.Name); break; case EspionageResult.SuccessWithCapturedSpy: text = ClientResources.GetString("sabotage_success_spycaught"); text = string.Format( CultureInfo.CurrentCulture, text, this.City.Name, improvement.Name, this.DiplomaticTie.ForeignCountry.Government.LeaderTitle, this.DiplomaticTie.ForeignCountry.LeaderName); break; } IGameWindow gw = ClientApplication.Instance.GameWindow; gw.ShowMessageBox(text, ClientResources.GetString(StringKey.GameTitle)); OnInvoked(); }
private bool CheckRequirements (BuildableItem Item) { int RequiredCounter = Item.RequiredStructures.Count; for (int i = 0; i < Item.RequiredStructures.Count; i++) { for (int j = 0; j < Structures.Count; j++) { if (Item.RequiredStructures[i] == Structures[j].Name) { RequiredCounter--; } } } if (RequiredCounter == 0) { return true; } else { return false; } }
private void CompleteItem () { //TODO: Add Logic That Handles Specific Cases of Construction Debug.Log (ItemBuilding.Name + " Complete!"); ItemBuilding = null; bIsBuilding = false; if (BuildQueue.Count > 0) { using (BuildableItem tempItem = BuildQueue[0]) { Debug.Log (tempItem.Name); BuildQueue.RemoveAt(0); BuildItem (tempItem); } } else { bFactoryActive = false; } }
/// <summary> /// Initializes a new instance of the <c>ImprovementBuiltEventArgs</c> class. /// </summary> /// <param name="improvement"></param> /// <param name="city"></param> /// <param name="recommendedNextImprovement"></param> public ImprovementBuiltEventArgs(BuildableItem improvement, City city, BuildableItem recommendedNextImprovement) { this.improvement = improvement; this.recommendedImprovement = recommendedNextImprovement; this.city = city; }
void Awake() { instance = this; items = new List <Item>(); // init icon spritesheet; icons = Resources.LoadAll <Sprite>("itemicon"); iconSpriteSheet = new Dictionary <string, Sprite>(); // store item icon in dictionary for (int i = 0; i < icons.Length; i++) { iconSpriteSheet.Add(icons[i].name, icons[i]); } // init item objects itemObjects = Resources.LoadAll <GameObject>("Prefab/Items"); itemObjectsDic = new Dictionary <string, GameObject>(); // store item icon in dictionary for (int i = 0; i < itemObjects.Length; i++) { itemObjectsDic.Add(itemObjects[i].name, itemObjects[i]); } // init weapon spritesheet // weaponSprites = Resources.LoadAll<Sprite>("itemSprite"); // weaponSpriteSheet = new Dictionary<string, Sprite>(); // store item sprite in dictionary //for (int i = 0; i < weaponSprites.Length; i++) // weaponSpriteSheet.Add(weaponSprites[i].name, weaponSprites[i]); // items int itemIDCounter = -1; // ID: 0 ConsumableItem rawMeat = new ConsumableItem("Meat"); rawMeat.itemID = ++itemIDCounter; rawMeat.itemDes = "Raw Meat"; //rawMeat.itemDes = "羊腿把子"; rawMeat.itemAmount = 1; //refreshingWater.itemEffects.Add(new OnUseRecoverSP(4)); //refreshingWater.InitEffect(); items.Add(rawMeat); // ID: 1 ConsumableItem logs = new ConsumableItem("Logs"); //logs.itemName = "Logs"; logs.itemID = ++itemIDCounter; logs.itemDes = "Logs"; //logs.itemDes = "木材"; logs.itemAmount = 1; //refreshingWater.itemEffects.Add(new OnUseRecoverSP(4)); //refreshingWater.InitEffect(); items.Add(logs); // ID: 2 ConsumableItem flint = new ConsumableItem("Flint"); //flint.itemName = "Flint"; flint.itemID = ++itemIDCounter; flint.itemDes = "Flint"; //logs.itemDes = "木材"; flint.itemAmount = 1; //refreshingWater.itemEffects.Add(new OnUseRecoverSP(4)); //refreshingWater.InitEffect(); items.Add(flint); // ID: 3 EquipableItem Torch = new EquipableItem("Torch", true); Torch.igniteToItem_ID = 4; //Torch.itemName = "Torch"; Torch.itemID = ++itemIDCounter; Torch.itemDes = "Torch"; Torch.equipType = EquipableItem.EquipType.Weapon_LeftHand; //Torch.workTimeNeeded = 200; this doesnt work ** remember always set for upgraded item //logs.itemDes = "木材"; Torch.itemAmount = 1; //refreshingWater.itemEffects.Add(new OnUseRecoverSP(4)); //refreshingWater.InitEffect(); items.Add(Torch); // ID:4 EquipableItem Torch_Ignited = new EquipableItem("Ignited Torch"); //Torch_Ignited.itemName = "Ignited Torch"; Torch_Ignited.itemID = ++itemIDCounter; Torch_Ignited.itemDes = "Ignited Torch"; Torch_Ignited.equipType = EquipableItem.EquipType.Weapon_LeftHand; Torch_Ignited.itemAmount = 1; //refreshingWater.itemEffects.Add(new OnUseRecoverSP(4)); //refreshingWater.InitEffect(); Torch_Ignited.workTimeNeeded = 90; items.Add(Torch_Ignited); // ID:5 BuildableItem Campfire = new BuildableItem("Campfire"); Campfire.itemID = ++itemIDCounter; Campfire.itemAmount = 1; items.Add(Campfire); // keep this at the bottom ItemAmout = itemIDCounter; /* * EquipableItem axe = new EquipableItem(); * axe.itemName = "Axe"; * axe.itemID = ++itemIDCounter; * axe.itemDes = "mighty axe"; * axe.itemAmount = 1; * axe.equipType = EquipableItem.EquipType.Weapon; * axe.itemEffects.Add(new OnEquipAddDmg(2)); * axe.InitEffect(); * axe.LoadIcon(); * axe.LoadWeaponSprite(); * items.Add(axe); * * EquipableItem alchemistPotion = new EquipableItem(); * alchemistPotion.itemName = "Alchemist Potion"; * alchemistPotion.itemID = ++itemIDCounter; * alchemistPotion.itemDes = "Alchemist Potion"; * alchemistPotion.itemAmount = 1; * alchemistPotion.equipType = EquipableItem.EquipType.Weapon; * alchemistPotion.itemEffects.Add(new OnEquipAddDmg(2)); * alchemistPotion.InitEffect(); * alchemistPotion.LoadIcon(); * alchemistPotion.LoadWeaponSprite(); * items.Add(alchemistPotion); * * EquipableItem Khopesh = new EquipableItem(); * Khopesh.itemName = "Khopesh"; * Khopesh.itemID = ++itemIDCounter; * Khopesh.itemDes = "Khopesh"; * Khopesh.itemAmount = 1; * Khopesh.equipType = EquipableItem.EquipType.Weapon; * Khopesh.itemEffects.Add(new OnEquipAddDmg(2)); * Khopesh.InitEffect(); * Khopesh.LoadIcon(); * Khopesh.LoadWeaponSprite(); * items.Add(Khopesh); * * EquipableItem Rapier = new EquipableItem(); * Rapier.itemName = "Rapier"; * Rapier.itemID = ++itemIDCounter; * Rapier.itemDes = "Rapier"; * Rapier.itemAmount = 1; * Rapier.equipType = EquipableItem.EquipType.Weapon; * Rapier.itemEffects.Add(new OnEquipAddDmg(2)); * Rapier.InitEffect(); * Rapier.LoadIcon(); * Rapier.LoadWeaponSprite(); * items.Add(Rapier); * * EquipableItem Sword = new EquipableItem(); * Sword.itemName = "Sword"; * Sword.itemID = ++itemIDCounter; * Sword.itemDes = "Sword"; * Sword.itemAmount = 1; * Sword.equipType = EquipableItem.EquipType.Weapon; * Sword.itemEffects.Add(new OnEquipAddDmg(2)); * Sword.InitEffect(); * Sword.LoadIcon(); * Sword.LoadWeaponSprite(); * items.Add(Sword); * * EquipableItem WizardStaff = new EquipableItem(); * WizardStaff.itemName = "Wizard Staff"; * WizardStaff.itemID = ++itemIDCounter; * WizardStaff.itemDes = "Wizard Staff"; * WizardStaff.itemAmount = 1; * WizardStaff.equipType = EquipableItem.EquipType.Weapon; * WizardStaff.itemEffects.Add(new OnEquipAddDmg(2)); * WizardStaff.InitEffect(); * WizardStaff.LoadIcon(); * WizardStaff.LoadWeaponSprite(); * items.Add(WizardStaff); * * EquipableItem Gun = new EquipableItem(); * Gun.itemName = "Gun"; * Gun.itemID = ++itemIDCounter; * Gun.itemDes = "Gun"; * Gun.itemAmount = 1; * Gun.equipType = EquipableItem.EquipType.Weapon; * Gun.itemEffects.Add(new OnEquipAddDmg(2)); * Gun.InitEffect(); * Gun.LoadIcon(); * Gun.LoadWeaponSprite(); * items.Add(Gun); * * ConsumableItem rawTurkey = new ConsumableItem(); * rawTurkey.itemName = "Raw Turkey"; * rawTurkey.itemID = ++itemIDCounter; * rawTurkey.itemDes = "Surprisingly nourishing, this item heals the player character for 2 points."; * rawTurkey.itemAmount = 1; * rawTurkey.itemEffects.Add(new OnUseHeal(2)); * rawTurkey.InitEffect(); * rawTurkey.LoadIcon(); * items.Add(rawTurkey); * */ }
/// <summary> /// Event handler for the <i>ImprovementBuilt</i> event of a city using this strategy. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void OnImprovementBuilt(object sender, ImprovementBuiltEventArgs e) { AICity city = e.City as AICity; BuildableItem nextImprovement = null; GameRoot root = GameRoot.Instance; //what to do with what we just built? if (e.Improvement.GetType() == typeof(AIUnit)) { AIUnit unit = e.Improvement as AIUnit; switch (city.PrimaryNeed) { case AICityNeed.Commerce: break; case AICityNeed.Culture: break; case AICityNeed.Food: break; case AICityNeed.UnitDefense: unit.Fortified = true; break; } } else if (e.Improvement.GetType() == typeof(AISettler)) { } else if (e.Improvement.GetType() == typeof(AIWorker)) { AIWorker worker = e.Improvement as AIWorker; worker.ParentCity = e.City; worker.Automated = true; } //next item to build switch (city.PrimaryNeed) { case AICityNeed.Commerce: if (!city.HasWorkerInFields()) { nextImprovement = UnitFactory.CreateWorker(city); } else { nextImprovement = city.GetBuildableItemForNeed(city.PrimaryNeed, typeof(Improvement)); } break; case AICityNeed.Culture: nextImprovement = city.GetBuildableItemForNeed(city.PrimaryNeed, typeof(Improvement)); break; case AICityNeed.Food: if (!city.HasWorkerInFields()) { nextImprovement = UnitFactory.CreateWorker(city); } else { nextImprovement = city.GetBuildableItemForNeed(city.PrimaryNeed, typeof(Improvement)); } break; case AICityNeed.UnitDefense: nextImprovement = city.GetBuildableItemForNeed(city.PrimaryNeed, typeof(Unit)); break; } city.NextImprovement = nextImprovement; }
public BuildOrderEditable(BuildableItem buildableItem) { this.BuildableItem = buildableItem; }