コード例 #1
0
    private Carriage CreateCarriage(CarriageDefinition def)
    {
        Carriage carriage = Instantiate(m_carriagePrefab, Vector3.zero, Quaternion.identity);

        carriage.Init(def);
        return(carriage);
    }
コード例 #2
0
    /// <summary>
    /// Creates the hand
    /// </summary>
    public void Generate(List <CarriageDefinition> exclude = null)
    {
        m_hand.Clear();

        List <CarriageDefinition> filteredDeck = new List <CarriageDefinition>();

        if (exclude == null)
        {
            filteredDeck = m_deck;
        }
        else
        {
            for (int i = 0; i < m_deck.Count; i++)
            {
                CarriageDefinition c = m_deck[i];
                if (!exclude.Contains(c))
                {
                    filteredDeck.Add(c);
                }
            }
        }

        for (int i = 0; i < m_handSize; ++i)
        {
            CarriageDefinition c = GetRandomCarriage(filteredDeck);
            m_hand.Add(c);
        }

        Shuffle();
    }
コード例 #3
0
    private CarriageDefinition GetRandomCarriage(List <CarriageDefinition> deck)
    {
        int index = UnityEngine.Random.Range(0, deck.Count);
        CarriageDefinition def = deck[index];

        m_deck.Remove(def);
        return(def);
    }
コード例 #4
0
    public void Init(CarriageDefinition c, State state = State.Selectable)
    {
        m_carriageDefinition = c;

        Debug.Log(CarriageDefinition.ToString());

        m_carriageImage.Init(c);
        m_carriageImage.SetVisibleState(state);

        m_button.enabled = state == State.Selectable;

        if (state == State.Selectable)
        {
            m_button.onClick.AddListener(() => Select(this));
        }
    }
コード例 #5
0
    public Color GetDominantColor()
    {
        //if (CarriageCount < GameConstants.MAX_CARRIAGE_CAPACITY)
        //{
        //    Debug.LogError(string.Format("Beetle {0} did not return a dominant color — Hand size is not complete", this.name));
        //}

        Dictionary <Color, int> m_colorsFound = new Dictionary <Color, int>();

        foreach (Carriage carriage in m_carriageList)
        {
            CarriageDefinition cs = carriage.CarriageDefinition;

            Color col = cs.GetColor();

            // Dictionary does not contain colour value
            if (!m_colorsFound.ContainsKey(col))
            {
                m_colorsFound.Add(col, 1);
            }
            else
            {
                m_colorsFound[col]++;
            }
        }

        Color dominantColor = Color.None;
        int   dominantNum   = 0;

        foreach (var c in m_colorsFound)
        {
            if (c.Value > dominantNum)
            {
                dominantNum   = c.Value;
                dominantColor = c.Key;
            }
            else if (c.Value == dominantNum)
            {
                dominantColor = Color.None;
            }
        }

        Debug.Log(string.Format("Beetle {0} returned dominant color: {1}", this.name, dominantColor));
        //Debug.Log(string.Format("Beetle {0} does not have a dominant color", this.name));

        return(dominantColor);
    }
コード例 #6
0
    public void AddCarriage(Color carriageColor)
    {
        if (CarriageCount >= GameConstants.MAX_CARRIAGE_CAPACITY)
        {
            Debug.LogWarning(string.Format("Beetle {0} carriage count is maxed out", this.name));
            return;
        }

        Debug.Log(string.Format("Beetle {0} added carriage color {1}", this.name, carriageColor));

        CarriageDefinition newDef      = new CarriageDefinition(carriageColor, CarriageDefinition.Ability.None);
        Carriage           newCarriage = Instantiate(carriagePrefab, Vector3.zero, Quaternion.identity);

        newCarriage.transform.SetParent(m_layoutGroup.transform, false);
        newCarriage.Init(newDef, Carriage.State.Attached);
        m_carriageList.Add(newCarriage);

        Color color = GetDominantColor();

        Debug.Log("dominant color: " + color);

        Transform beetleImage = null;

        foreach (Transform child in transform)
        {
            if (child.name == "Beetle" + m_playerNumber)
            {
                beetleImage = child;
                break;
            }
        }

        foreach (Transform child in beetleImage)
        {
            if (child.name == color.ToString())
            {
                child.gameObject.SetActive(true);
            }
            else
            {
                child.gameObject.SetActive(false);
            }
        }
    }
コード例 #7
0
    public void Init(CarriageDefinition definition)
    {
        switch (definition.GetColor())
        {
        case CarriageDefinition.Color.Red:
        {
            m_baseImage.sprite     = CarriageImageDatabase.Instance.CarriageBaseRed;
            m_attachedImage.sprite = CarriageImageDatabase.Instance.CarriageAttachedRed;
        }
        break;

        case CarriageDefinition.Color.Green:
        {
            m_baseImage.sprite     = CarriageImageDatabase.Instance.CarriageBaseGreen;
            m_attachedImage.sprite = CarriageImageDatabase.Instance.CarriageAttachedGreen;
        }
        break;

        case CarriageDefinition.Color.Blue:
        {
            m_baseImage.sprite     = CarriageImageDatabase.Instance.CarriageBaseBlue;
            m_attachedImage.sprite = CarriageImageDatabase.Instance.CarriageAttachedBlue;
        }
        break;

        case CarriageDefinition.Color.Wild:
        {
            m_baseImage.sprite = CarriageImageDatabase.Instance.CarriageBaseWild;
        }
        break;

        case CarriageDefinition.Color.None:
        {
            m_baseImage.sprite = CarriageImageDatabase.Instance.CarriageBaseCopy;
        }
        break;
        }

        switch (definition.GetAbility())
        {
        case CarriageDefinition.Ability.None:
        {
            m_coatImage.sprite = CarriageImageDatabase.Instance.CarriageCoatNone;
        }
        break;

        case CarriageDefinition.Ability.Copy:
        {
            m_coatImage.sprite = CarriageImageDatabase.Instance.CarriageCoatNone;
        }
        break;

        case CarriageDefinition.Ability.DoubleDip:
        {
            m_coatImage.sprite = CarriageImageDatabase.Instance.CarriageCoatDoubleDip;
        }
        break;

        case CarriageDefinition.Ability.Send:
        {
            m_coatImage.sprite = CarriageImageDatabase.Instance.CarriageCoatSend;
        }
        break;

        case CarriageDefinition.Ability.Shuffle:
        {
            m_coatImage.sprite = CarriageImageDatabase.Instance.CarriageCoatShuffle;
        }
        break;

        case CarriageDefinition.Ability.Swap:
        {
            m_coatImage.sprite = CarriageImageDatabase.Instance.CarriageCoatSwap;
        }
        break;
        }
    }