예제 #1
0
    void PlaceCharacter(CharacterResourceManager.Cards card, int player)
    {
        ClueData.Instance.SetPlayerLocation(new int[] { startingPositions[player, 0], startingPositions[player, 1] }, player);
        Vector3    spawn = RowColToBoardLocation(startingPositions[player, 0], startingPositions[player, 1]);
        GameObject gm    = null;

        switch (card)
        {
        case CharacterResourceManager.Cards.Freddie:
            gm = PlaceObject(FreddiePrefab, spawn);
            break;

        case CharacterResourceManager.Cards.Sherlock:
            gm = PlaceObject(SherlockPrefab, spawn);
            break;

        case CharacterResourceManager.Cards.Blackwidow:
            gm = PlaceObject(BlackWidowPrefab, spawn);
            break;

        case CharacterResourceManager.Cards.Echo:
            gm = PlaceObject(EchoPrefab, spawn);
            break;

        case CharacterResourceManager.Cards.MurderV:
            gm = PlaceObject(MurderVPrefab, spawn);
            break;

        case CharacterResourceManager.Cards.ScoobyDoo:
            gm = PlaceObject(ScoobyPrefab, spawn);
            break;
        }
        gm.transform.Rotate(0, 180, 0);
        ClueData.Instance.SetPlayerGameObject(gm, player);
    }
예제 #2
0
    private ClueData.RowCol AIChooseSpot()
    {
        List <CharacterResourceManager.Cards> targetRooms = new List <CharacterResourceManager.Cards>();

        foreach (CharacterResourceManager.Cards room in CharacterResourceManager.Rooms)
        {
            if (!ClueData.Instance.HasPlayerSeenCard(room, turnManager.CurrentTurn - 1))
            {
                targetRooms.Add(room);
            }
        }
        List <ClueData.RowCol> tiles = new List <ClueData.RowCol>();

        foreach (GameObject tile in highlights)
        {
            ClueData.RowCol tilePos = tile.GetComponent <TileSelector>().location;
            if (IsEntrance(tilePos))
            {
                CharacterResourceManager.Cards room = GetEntranceRoom(tilePos);
                if (targetRooms.Contains(room))
                {
                    return(tilePos);
                }
            }
            tiles.Add(tilePos);
        }
        return(tiles[UnityEngine.Random.Range(0, tiles.Count - 1)]);
    }
예제 #3
0
 public void SelectCharacter(CharacterResourceManager.Cards card)
 {
     if (CharacterResourceManager.Characters.Contains(card))
     {
         if (!selected)
         {
             selected = true;
             List <CharacterResourceManager.Cards> selectedCards = new List <CharacterResourceManager.Cards>();
             selectedCards.Add(card);
             ClueData.Instance.SetPlayer(0, card);
             int numCards = CharacterResourceManager.Characters.Count;
             for (int i = 1; i < 4; i++)
             {
                 CharacterResourceManager.Cards aiCard;
                 do
                 {
                     aiCard = CharacterResourceManager.Characters[Random.Range(0, numCards - 1)];
                 } while (selectedCards.Contains(aiCard));
                 selectedCards.Add(aiCard);
                 ClueData.Instance.SetPlayer(i, aiCard);
             }
             ClueData.Instance.GenerateSolutionAndDistributeCards();
             SceneManager.LoadScene("DaGame");
         }
     }
     else
     {
         throw new System.Exception("Dude thats not a f*****g character");
     }
 }
예제 #4
0
    private GameObject GetWeaponPrefab(CharacterResourceManager.Cards weapon)
    {
        GameObject gameObject = MachetePrefab;

        switch (weapon)
        {
        case CharacterResourceManager.Cards.Machete:
            gameObject = MachetePrefab;
            break;

        case CharacterResourceManager.Cards.Bazooka:
            gameObject = BazookaPrefab;
            break;

        case CharacterResourceManager.Cards.Antifreeze:
            gameObject = AntifreezePrefab;
            break;

        case CharacterResourceManager.Cards.Chainsaw:
            gameObject = ChainsawPrefab;
            break;

        case CharacterResourceManager.Cards.Spoon:
            gameObject = SpoonPrefab;
            break;

        case CharacterResourceManager.Cards.Syringe:
            gameObject = SyringePrefab;
            break;
        }
        return(gameObject);
    }
예제 #5
0
 public void SelectGuessWeapon(CharacterResourceManager.Cards card)
 {
     if (!isSelected)
     {
         isSelected  = true;
         guessWeapon = card;
     }
 }
예제 #6
0
 public void SelectGuessCharacter(CharacterResourceManager.Cards character)
 {
     if (!isSelected)
     {
         isSelected     = true;
         guessCharacter = character;
     }
 }
예제 #7
0
    private void MoveWeaponLocation(CharacterResourceManager.Cards weapon, CharacterResourceManager.Cards room)
    {
        Vector3 location = CharacterResourceManager.RoomLocation(room) + RandomXZVector(0.5f, 1f);

        if (weaponObjects == null || !weaponObjects.ContainsKey(weapon))
        {
            if (weaponObjects == null)
            {
                weaponObjects = new Dictionary <CharacterResourceManager.Cards, GameObject>();
            }
            GameObject gameObject = Instantiate(GetWeaponPrefab(weapon), location, Quaternion.identity);
            weaponObjects[weapon] = gameObject;
        }
        else
        {
            weaponObjects[weapon].transform.position = location;
        }
        weaponObjects[weapon].transform.Rotate(0, UnityEngine.Random.Range(0, 360f), 0);
    }
예제 #8
0
 private void Moving()
 {
     if (isSelected)
     {
         if (isMoving)
         {
             GameObject player = ClueData.Instance.GetPlayerGameObject(turnManager.CurrentTurn - 1);
             player.transform.position += (targetPosition - player.transform.position) / 25f;
             if ((targetPosition - player.transform.position).magnitude < (boardManager.TileWidth / 30f))
             {
                 player.transform.position = targetPosition;
                 isMoving = false;
             }
         }
         else
         {
             if (IsEntrance(ClueData.Instance.GetPlayerRowCol(turnManager.CurrentTurn - 1)))
             {
                 humanCardsDisplay.HideAll();
                 characterGuessParent.SetActive(true);
                 isSelected = false;
                 isMoving   = false;
                 CharacterResourceManager.Cards room = GetEntranceRoom(ClueData.Instance.GetPlayerRowCol(turnManager.CurrentTurn - 1));
                 guessRoom = room;
                 ClueData.Instance.GetPlayerGameObject(turnManager.CurrentTurn - 1).transform.position = CharacterResourceManager.RoomLocation(room);
                 turnState = TurnState.ChoosingGuessCharacter;
             }
             else
             {
                 turnState = TurnState.PostTurn;
             }
         }
     }
     else if (!IsCurrentTurnHuman())
     {
         aiTimer += Time.deltaTime;
         if (aiTimer >= 1)
         {
             aiTimer = 0;
             SelectTile(AIChooseSpot());
         }
     }
 }
예제 #9
0
 public Guess(CharacterResourceManager.Cards character, CharacterResourceManager.Cards weapon, CharacterResourceManager.Cards room)
 {
     this.Character = character;
     this.Weapon    = weapon;
     this.Room      = room;
 }
예제 #10
0
    public void FindingCards()
    {
        CharacterResourceManager.Cards cardToShow = CharacterResourceManager.Cards.Antifreeze;
        TurnState targetState      = TurnState.PreTurn;
        int       showedCardSource = -1; // sure

        turnManager.PushStack();

        int  cT      = turnManager.CurrentTurn;
        bool control = true; // yes, this is how lazy i am, no need to bother writing a real algorithm

        while (control)
        {
            turnManager.NextTurn();
            if (turnManager.CurrentTurn == cT)
            {
                targetState = TurnState.AccusationOption;
                control     = false;
            }
            else
            {
                // Yes, this is going to be how it works, deal with it (in real clue there is a choice of what card to show)
                if (ClueData.Instance.HasPlayerCard(guess.Character, turnManager.CurrentTurn - 1))
                {
                    control          = false;
                    targetState      = TurnState.ShowingCards;
                    cardToShow       = guess.Character;
                    showedCardSource = turnManager.CurrentTurn;
                }
                else if (ClueData.Instance.HasPlayerCard(guess.Weapon, turnManager.CurrentTurn - 1))
                {
                    control          = false;
                    targetState      = TurnState.ShowingCards;
                    cardToShow       = guess.Weapon;
                    showedCardSource = turnManager.CurrentTurn;
                }
                else if (ClueData.Instance.HasPlayerCard(guess.Room, turnManager.CurrentTurn - 1))
                {
                    control          = false;
                    targetState      = TurnState.ShowingCards;
                    cardToShow       = guess.Room;
                    showedCardSource = turnManager.CurrentTurn;
                }
            }
        }

        turnManager.PopStack();

        if (targetState.Equals(TurnState.ShowingCards))
        {
            ClueData.Instance.ShowPlayerCard(cardToShow, turnManager.CurrentTurn - 1);
            if (IsCurrentTurnHuman() || showedCardSource == 1)
            {
                cardShow.Set(CharacterResourceManager.CardImageTexture(cardToShow), showedCardSource);
            }
            else
            {
                cardShow.Set(cardBack, showedCardSource);
            }
            guessDisplay.gameObject.SetActive(false);
            humanCardsDisplay.ShowAll();
            cardShow.gameObject.SetActive(true);
            turnState = TurnState.ShowingCards;
        }
        else if (targetState.Equals(TurnState.AccusationOption))
        {
            guessDisplay.gameObject.SetActive(false);
            humanCardsDisplay.ShowAll();
            isSelected     = false;
            aiTimer        = 0;
            makeAccusation = false;
            accusationOption.Set(guess);
            accusationOption.gameObject.SetActive(true);
            turnState = TurnState.AccusationOption;
        }
    }
예제 #11
0
 public bool HasSeenCard(CharacterResourceManager.Cards card)
 {
     return(cardsSeen.Contains(card));
 }
예제 #12
0
 public void ShowCard(CharacterResourceManager.Cards card)
 {
     cardsSeen.Add(card);
 }
예제 #13
0
 public void GiveCard(CharacterResourceManager.Cards card)
 {
     cards.Add(card);
     ShowCard(card);
 }
예제 #14
0
 public void SetPlayer(int player, CharacterResourceManager.Cards card)
 {
     players[player] = card;
 }
예제 #15
0
 public bool HasPlayerCard(CharacterResourceManager.Cards card, int player)
 {
     return(playerData[player].HasCard(card));
 }
예제 #16
0
 public void ShowPlayerCard(CharacterResourceManager.Cards card, int player)
 {
     playerData[player].ShowCard(card);
 }