Esempio n. 1
0
 public bool ResolveSpy(List<Hunter> huntersEncountered, UserInterface ui)
 {
     ui.TellUser(huntersEncountered.First().Name + " encountered a spy" + (huntersEncountered.Count() > 1 ? " with his group" : ""));
     foreach (Hunter h in huntersEncountered)
     {
         List<String> itemsAlreadyKnownToDracula = new List<String>();
         for (int i = 0; i < h.NumberOfItems; i++)
         {
             string line = "";
             do
             {
                 line = ui.GetNameOfItemInHandFromHunter(h.Name);
                 if (GetItemByNameFromItemDeck(line).Name == "Unknown item" && h.ItemsKnownToDracula.FindIndex(item => item.Name == line) == -1)
                 {
                     ui.TellUser("I didn't recognise that card name");
                 }
             } while (GetItemByNameFromItemDeck(line).Name == "Unknown item" && h.ItemsKnownToDracula.FindIndex(item => item.Name == line) == -1);
             itemsAlreadyKnownToDracula.Add(line);
         }
         List<ItemDetail> itemsToAddToKnownItems = new List<ItemDetail>();
         itemsToAddToKnownItems.AddRange(h.ItemsKnownToDracula);
         foreach (string name in itemsAlreadyKnownToDracula)
         {
             if (itemsToAddToKnownItems.FindIndex(it => it.Name == name) > -1)
             {
                 itemsToAddToKnownItems.Remove(itemsToAddToKnownItems.Find(it => it.Name == name));
             }
             else
             {
                 h.ItemsKnownToDracula.Add(GetItemByNameFromItemDeck(name));
             }
         }
         List<String> eventsAlreadyKnownToDracula = new List<String>();
         for (int i = 0; i < h.NumberOfItems; i++)
         {
             string line = "";
             do
             {
                 line = ui.GetNameOfEventInHandFromHunter(h.Name);
                 if (GetEventByNameFromEventDeck(line).name == "Unknown event" && h.EventsKnownToDracula.FindIndex(ev => ev.name == line) == -1)
                 {
                     ui.TellUser("I didn't recognise that card name");
                 }
             } while (GetEventByNameFromEventDeck(line).name == "Unknown event" && h.EventsKnownToDracula.FindIndex(ev => ev.name == line) == -1);
             eventsAlreadyKnownToDracula.Add(line);
         }
         List<EventDetail> eventsToAddToKnownEvents = new List<EventDetail>();
         eventsToAddToKnownEvents.AddRange(h.EventsKnownToDracula);
         foreach (string name in eventsAlreadyKnownToDracula)
         {
             if (eventsToAddToKnownEvents.FindIndex(eve => eve.name == name) > -1)
             {
                 eventsToAddToKnownEvents.Remove(eventsToAddToKnownEvents.Find(eve => eve.name == name));
             }
             else
             {
                 h.EventsKnownToDracula.Add(GetEventByNameFromEventDeck(name));
             }
         }
         h.TravelType = ui.AskHunterWhatTravelTypeForSpy(h.Name);
         string lineB;
         do
         {
             lineB = ui.AskHunterWhichLocationTheyAreMovingToNextTurn(h.Name);
         } while (GetLocationFromName(lineB).Name == "Unknown location" || GetLocationFromName(lineB).Name == "Multiple locations");
         h.Destination = GetLocationFromName(lineB);
     }
     return true;
 }
Esempio n. 2
0
 private void PlayVampiricInfluence(GameState g, UserInterface ui)
 {
     Hunter hunterToInfluence = logic.DecideWhoToInfluence(g);
     Logger.WriteToDebugLog("Playing Vampiric Influence on " + hunterToInfluence.Name);
     ui.TellUser(hunterToInfluence.Name + " was affected by Dracula's Vampiric Influence and must reveal all cards and tell Dracula their next move");
     Logger.WriteToDebugLog("Resetting everything known about " + hunterToInfluence.Name + "'s cards");
     foreach (ItemDetail item in hunterToInfluence.ItemsKnownToDracula)
     {
         g.MoveItemFromKnownItemsToItemDeck(hunterToInfluence, item);
     }
     foreach (EventDetail e in hunterToInfluence.EventsKnownToDracula)
     {
         g.MoveEventFromKnownEventsToEventDeck(hunterToInfluence, e);
     }
     for (int i = 0; i < hunterToInfluence.NumberOfItems; i++)
     {
         string line;
         do
         {
             line = ui.AskHunterToRevealItemByVampiricInfluence(hunterToInfluence.Name);
             ui.TellUser(g.GetItemByNameFromItemDeck(line).Name);
         } while (g.GetItemByNameFromItemDeck(line).Name == "Unknown item");
         g.MoveItemFromItemDeckToKnownItems(hunterToInfluence, g.GetItemByNameFromItemDeck(line));
     }
     for (int i = 0; i < hunterToInfluence.NumberOfEvents; i++)
     {
         string line;
         do
         {
             line = ui.AskHunterToRevealEventByVampiricInfluence(hunterToInfluence.Name);
             ui.TellUser(g.GetEventByNameFromEventDeck(line).name);
         } while (g.GetEventByNameFromEventDeck(line).name == "Unknown event");
         g.MoveEventFromEventDeckToKnownEvents(hunterToInfluence, g.GetEventByNameFromEventDeck(line));
     }
     string lineA;
     do
     {
         lineA = ui.AskHunterWhichLocationTheyAreMovingToNextTurn(hunterToInfluence.Name);
         ui.TellUser(g.GetLocationFromName(lineA).Name);
     } while (g.GetLocationFromName(lineA).Name == "Unknown location" || g.GetLocationFromName(lineA).Name == "Multiple locations");
     hunterToInfluence.Destination = g.GetLocationFromName(lineA);
     ui.TellUser(hunterToInfluence.Destination.Name);
     hunterToInfluence.TravelType = ui.AskHunterWhatTravelTypeForSpy(hunterToInfluence.Name);
     ui.TellUser(hunterToInfluence.TravelType);
     Logger.WriteToDebugLog(hunterToInfluence.Name + "'s next move recorded as " + hunterToInfluence.Destination.Name + " by " + hunterToInfluence.TravelType);
 }