Пример #1
0
    /// <summary>
    /// Use this for initialization.
    /// </summary>
    private void Start()
    {
        currentScoreText  = TextFormatting.AddSpacingBetweenCharacters(string.Format(scoreFormat, 0, 1));
        currentScoreText2 = TextFormatting.AddSpacingBetweenCharacters(string.Format(scoreFormat, 0, 2));

        game          = MemoryGame.Current;
        game.GameMode = GameMode;
        game.StartNewGame();

        PlayersPlaying = DataMessenger.NumberOfPlayers;
        game.Players   = PlayersPlaying;

        Score         = game.Scores;
        CurrentPlayer = game.CurrentPlayer;

        CardsLeft = 0;

        int numberOfCards = game.DifficultyToNumberOfCards(DataMessenger.Difficulty) / 2;
        var fieldSize     = DeckLayoutProvider.GetGridSize(numberOfCards * 2);

        if (IsDebuggingQuestionsEnabled)
        {
            DebugQuestionPopup();
        }

        List <CardData> cards;

        if (DataMessenger.SelectedDeck != null)
        {
            cards     = DataMessenger.SelectedDeck.Cards.OrderBy(a => Guid.NewGuid()).Take(numberOfCards).ToList();
            gameTitle = DataMessenger.SelectedDeck.ResourceName;
        }
        else
        {
            cards     = CardFactory.GetRandomDeck(numberOfCards);
            gameTitle = "Fossils";
        }

        gameTitle = TextFormatting.AddSpacingBetweenCharactersWithSmallSpace(gameTitle, (int)(Initialize.Scale * 14));

        while (cards.Count < numberOfCards)
        {
            cards.AddRange(cards);
        }

        if (cards.Count > numberOfCards)
        {
            cards = cards.Take(numberOfCards).ToList();
        }

        cards.AddRange(cards);
        cards = cards.OrderBy(c => Guid.NewGuid()).ToList();

        var field = WorldToRect.GetRect(SpawnLocation, SpawnEndLocation);

        field.x     = 20;
        field.width = Screen.width - field.x - field.x;
        var list = CalculateLayout.Calculate(
            (int)fieldSize.y,
            (int)fieldSize.x,
            field.width,
            field.height,
            field.x,
            field.y,
            10 * Initialize.Scale);
        float scale   = 1f;
        float offsetY = 0f;

        switch (DataMessenger.Difficulty)
        {
        case 0:
            scale = 1f;
            break;

        case 1:
            scale   = 0.8f;
            offsetY = 8f;
            break;

        case 2:
            scale   = 0.6f;
            offsetY = 12f;
            break;

        case 3:
            scale   = 0.5f;
            offsetY = 14f;
            break;

        case 4:
            scale   = 0.4f;
            offsetY = 20f;
            break;
        }

        if (CardObject != null && SpawnLocation != null)
        {
            int i = 0;
            for (int y = 0; y < fieldSize.y; ++y)
            {
                for (int x = 0; x < fieldSize.x; ++x)
                {
                    ++CardsLeft;
                    var card = (GameObject)Instantiate(CardObject);
                    card.SendMessage("SetCard", cards[i]);

                    Vector3 newPosition = Camera.main.ScreenToWorldPoint(
                        new Vector3(list[i].x + (list[i].width / 2.0f), list[i].y + (list[i].height / 3.0f) - offsetY));
                    newPosition.z = -2;

                    GameObject obj = new GameObject();
                    obj.transform.position   = newPosition;
                    obj.transform.parent     = SpawnLocation.transform;
                    obj.transform.localScale = new Vector3(scale, scale, 1);

                    card.transform.parent        = obj.transform;
                    card.transform.localPosition = new Vector3();

                    ++i;
                }
            }
        }
    }
Пример #2
0
 private void Start()
 {
     Title = TextFormatting.AddSpacingBetweenCharactersWithSmallSpace(Title, (int)(8 * Initialize.Scale));
 }