Ejemplo n.º 1
0
 private bool RuleFulFilled(Rule rule)
 {
     if (rule != null)                                           //Addition: handling of "selected" item restriction
     {
         rule.inputs[0].gameItem = this;
         if (!this.FulFillsProperties(rule.inputs[0]))
         {
             return(false);
         }
         if (rule.inputs.Count > 1)
         {
             int i = 1;
             if (!rule.selectedInput)
             {
                 GameItem selectedItem = Player.Instance.getSelectedItem();
                 if (selectedItem != null)
                 {
                     if (selectedItem.name == rule.inputs[1].name || selectedItem.dbItem.GetSuperTypes().Contains(rule.inputs[1].name))
                     {
                         if (selectedItem.FulFillsProperties(rule.inputs[1]))
                         {
                             rule.inputs[1].gameItem = selectedItem;
                             i = 2;
                         }
                         else
                         {
                             return(false);
                         }
                     }
                 }
                 else
                 {
                     return(false);
                 }
             }
             List <GameItem> inventory = Player.Instance.GetInventory();
             if (inventory.Count == 0 && !rule.HasPlayerInput())
             {
                 return(false);
             }
             for (; i < rule.inputs.Count; i++)
             {
                 bool found = false;
                 if (rule.inputs[i].name == "Player")
                 {
                     if (PuzzleManager.Instance.GetPlayer().FulFillsProperties(rule.inputs[i]))
                     {
                         found = true;
                         rule.inputs[i].gameItem = PuzzleManager.Instance.GetPlayer();
                     }
                 }
                 foreach (GameItem inventoryItem in inventory)
                 {
                     if (inventoryItem.name == rule.inputs[i].name || inventoryItem.dbItem.GetSuperTypes().Contains(rule.inputs[i].name))
                     {
                         if (inventoryItem.FulFillsProperties(rule.inputs[i]))
                         {
                             found = true;
                             rule.inputs[i].gameItem = inventoryItem;
                         }
                     }
                 }
                 if (!found)
                 {
                     return(false);
                 }
             }
         }
         return(true);
     }
     return(false);
 }