예제 #1
0
    private void SpawnPillows()
    {
        pillows = new List <Pillow>();

        Transform spawnDatas = levelData.PillowSpawnDatas.GetChild(0);
        Transform spawnData;
        Pillow    pillow;

        for (int i = 0; i < spawnDatas.childCount; i++)
        {
            spawnData        = spawnDatas.GetChild(i);
            pillow           = Instantiate(ResourceUtility.GetPrefab <Pillow>("Pillow"), spawnData.position, spawnData.rotation, transform);
            pillow.spawnData = spawnData;
            pillows.Add(pillow);
        }

        spawnDatas = levelData.PillowSpawnDatas.GetChild(1);

        for (int i = 0; i < spawnDatas.childCount; i++)
        {
            Random.InitState(TimeUtility.localTime + i + 4);
            if (Random.Range(0, 100) < 50)
            {
                spawnData        = spawnDatas.GetChild(i);
                pillow           = Instantiate(ResourceUtility.GetPrefab <Pillow>("Pillow"), spawnData.position, spawnData.rotation, transform);
                pillow.spawnData = spawnData;
                pillows.Add(pillow);
            }
        }
    }
예제 #2
0
    private void HandleHandChange(ChangeType change, Card card)
    {
        switch (change)
        {
        case ChangeType.Incremental:
            Transform listTransform = cardList.transform;
            int       i             = uiCards.Count;
            UICard    uiCard;
            if (i < listTransform.childCount)
            {
                uiCard = listTransform.GetChild(i).GetComponent <UICard>();
            }
            else
            {
                uiCard = Instantiate(ResourceUtility.GetPrefab <UICard>("Card"), listTransform);
            }
            uiCards.Add(card, uiCard);
            UpdateCard(uiCard, card);
            cardList.Refresh();
            break;

        case ChangeType.Decremental:
            uiCards[card].gameObject.SetActive(false);
            uiCards.Remove(card);
            cardList.Refresh();
            break;
        }
    }
예제 #3
0
    private void SpawnPlayers()
    {
        int numPlayers = playerInfos.Count;

        List <Transform> spawnDatas = new List <Transform>();

        for (int i = 0; i < levelData.PlayerSpawnDatas.childCount; i++)
        {
            spawnDatas.Add(levelData.PlayerSpawnDatas.GetChild(i));
        }

        players = new Player[numPlayers];
        Player    player;
        Transform spawnData;
        int       r;

        for (int id = 0; id < numPlayers; id++)
        {
            Random.InitState(TimeUtility.localTime + id);

            r         = Random.Range(0, spawnDatas.Count);
            spawnData = spawnDatas[r];
            spawnDatas.RemoveAt(r);

            player = Instantiate(ResourceUtility.GetPrefab <Player>("Player" + id), spawnData.position, spawnData.rotation, transform);
            player.Initialize(playerInfos[id], spawnData);
            players[id] = player;
        }
    }
예제 #4
0
    public CombatManager CreateCombat(string name)
    {
        if (combatIDs.Count == 0)
        {
            combatIDs.Push(numOngoingCombats);
        }

        int id = combatIDs.Pop();

        CombatManager combat = Instantiate(ResourceUtility.GetPrefab <CombatManager>(name), new Vector3((id + 1) * 1000, 0, 0), Quaternion.identity);

        combat.ID = id;
        ++numOngoingCombats;

        if (name == "Level/FinalLevel")
        {
            emitter.SetParameter("FinalBossBattle", 1);
            emitter.SetParameter("DarkDimension", 0);
            emitter.SetParameter("Forest", 0);
        }
        else
        {
            emitter.SetParameter("NormalBattle", 1);
            emitter.SetParameter("DarkDimension", 0);
            emitter.SetParameter("Forest", 0);
        }
        return(combat);
    }
예제 #5
0
    private void LoadPlayer(int id)
    {
        Player.CreatePlayer(id, 3, 1, 1, 1);
        PlayerExplorationController explorationController = Instantiate(ResourceUtility.GetPrefab <PlayerExplorationController>("PlayerE"));

        explorationController.Initialize(id);
        playerExplorationControllers[id] = explorationController;
        PlayerCombatController combatController = Instantiate(ResourceUtility.GetPrefab <PlayerCombatController>("PlayerCombat"));

        combatController.Initialize(id);
        playerCombatControllers[id] = combatController;
    }
예제 #6
0
    public CombatManager CreateCombat(string name)
    {
        if (combatIDs.Count == 0)
        {
            combatIDs.Push(numOngoingCombats);
        }

        int id = combatIDs.Pop();

        CombatManager combat = Instantiate(ResourceUtility.GetPrefab <CombatManager>(name), new Vector3((id + 1) * 1000, 0, 0), Quaternion.identity);

        combat.ID = id;
        ++numOngoingCombats;
        MusicManager.Instance.inBattle = numOngoingCombats > 0;

        return(combat);
    }
예제 #7
0
    private void LoadPlayer(int id, PlayerClass playerClass)
    {
        switch (playerClass)
        {
        case PlayerClass.Knight:
        {
            Player.CreatePlayer(id, 3, 1, 1, 1);
            PlayerExplorationController explorationController = Instantiate(ResourceUtility.GetPrefab <PlayerExplorationController>("KnightE"));
            explorationController.Initialize(id);
            playerExplorationControllers[id] = explorationController;
            PlayerCombatController combatController = Instantiate(ResourceUtility.GetPrefab <PlayerCombatController>("KnightC"));
            combatController.Initialize(id);
            playerCombatControllers[id] = combatController;
        }
        break;

        case PlayerClass.Heavy:
        {
            Player.CreatePlayer(id, 6, 2, 1, 1);
            PlayerExplorationController explorationController = Instantiate(ResourceUtility.GetPrefab <PlayerExplorationController>("HeavyE"));
            explorationController.Initialize(id);
            playerExplorationControllers[id] = explorationController;
            PlayerCombatController combatController = Instantiate(ResourceUtility.GetPrefab <PlayerCombatController>("HeavyC"));
            combatController.Initialize(id);
            playerCombatControllers[id] = combatController;
        }
        break;

        case PlayerClass.Nurse:
        {
            Player.CreatePlayer(id, 2, 1, 1, 1);
            PlayerExplorationController explorationController = Instantiate(ResourceUtility.GetPrefab <PlayerExplorationController>("NurseE"));
            explorationController.Initialize(id);
            playerExplorationControllers[id] = explorationController;
            PlayerCombatController combatController = Instantiate(ResourceUtility.GetPrefab <PlayerCombatController>("NurseC"));
            combatController.Initialize(id);
            playerCombatControllers[id] = combatController;
        }
        break;
        }
    }
예제 #8
0
    private void UpdateHand(List <Card> hand)
    {
        Transform listTransform = cardList.transform;

        uiCards.Clear();

        int numCards            = hand.Count;
        int numExistedListItems = listTransform.childCount;

        for (int i = 0; i < Math.Max(numExistedListItems, numCards); i++)
        {
            if (i < numCards)
            {
                Card card = hand[i];

                UICard uiCard;

                if (i < numExistedListItems)
                {
                    uiCard = listTransform.GetChild(i).GetComponent <UICard>();
                }
                else
                {
                    uiCard = Instantiate(ResourceUtility.GetPrefab <UICard>("Card"), listTransform);
                }

                uiCards.Add(card, uiCard);

                UpdateCard(uiCard, card);
            }
            else
            {
                listTransform.GetChild(i).gameObject.SetActive(false);
            }
        }

        cardList.Refresh();
    }
예제 #9
0
    private void SpawnEntities()
    {
        if (Player)
        {
            Destroy(Player.gameObject);
        }

        foreach (Enemy enemy in Enemies)
        {
            Destroy(enemy.gameObject);
        }

        Enemies.Clear();

        List <EnemyController> enemies = new List <EnemyController>();
        int enemyUID = 0;

        foreach (SpawnData spawnData in currentLevel.spawns)
        {
            Vector3    spawnPosition = GridManager.Instance.GetWorldPosition(spawnData.position.x, spawnData.position.y) + new Vector3(0, 1, 0);
            Quaternion spawnRotation = Quaternion.identity;

            string heading = spawnData.GetSetting("heading");

            if (heading != null)
            {
                float yRot = 0;

                switch (heading)
                {
                case "north":
                    yRot = 0;
                    break;

                case "east":
                    yRot = 90;
                    break;

                case "west":
                    yRot = 270;
                    break;

                case "south":
                    yRot = 180;
                    break;
                }

                spawnRotation = Quaternion.Euler(0, yRot, 0);
            }

            switch (spawnData.SpawnType)
            {
            case SpawnData.Type.Player:
                Player = GridManager.Instance.Spawn(ResourceUtility.GetPrefab <player>("player_temp"), spawnPosition, spawnRotation);    //Instantiate(ResourceUtility.GetPrefab<player>("player_temp"), spawnPosition, spawnRotation, GridManager.Instance.EnvironmentRoot);
                Player.onStatisticChange.AddListener(HandlePlayerStatisticChange);
                break;

            case SpawnData.Type.Guard:
                Enemy enemy = GridManager.Instance.Spawn(ResourceUtility.GetPrefab <Enemy>("GuardDummy"), spawnPosition, spawnRotation);    //Instantiate(ResourceUtility.GetPrefab<GameObject>("GuardDummy"), spawnPosition, spawnRotation, GridManager.Instance.EnvironmentRoot);
                enemy.onStatisticChange.AddListener(delegate(Statistic statistic, float previousValue, float currentValue)
                {
                    if (statistic == Statistic.Hp && currentValue <= 0)
                    {
                        StartCoroutine(enemy.Dead());
                    }
                });
                EnemyController enemyController = enemy.GetComponent <EnemyController>();
                enemyController.SetWayPoints(spawnData.GetPath());
                enemyController.Mode = EnemyMode.Patrolling;
                enemyController.UID  = enemyUID++;
                Enemies.Add(enemy);
                enemies.Add(enemyController);
                break;
            }
        }

        EnemyManager.Instance.Initialize(enemies);
    }
예제 #10
0
    /// <summary>
    /// generated grid map
    /// map_size : the number of cube in row and column
    /// node_radius: the cube radius
    /// parameter: None
    /// </summary>
    public void GenerateMap(LevelManager.LevelData levelData)
    {
        if (!gridRoot)
        {
            gridRoot = transform.Find("GridRoot");
        }

        if (!gridRoot)
        {
            gridRoot        = new GameObject("GridRoot").transform;
            gridRoot.parent = transform;
        }

        // Setup tilesets
        Dictionary <int, TilesetElement> tElements = new Dictionary <int, TilesetElement>();

        foreach (TilesetElement te in tilesetElements)
        {
            tElements.Add(te.id, te);
        }

        // Extract data from levelData
        if (levelData != null)
        {
            mapSize = new Vector2Int(levelData.width, Mathf.CeilToInt(levelData.tiles.Length / levelData.width));
        }

        // new grid with size [mapSize.x,mapSize.y]
        grid = new Tile[mapSize.x, mapSize.y];

        int numExistedTiles = gridRoot.childCount;

        for (int x = 0; x < mapSize.x; x++)
        {
            for (int y = 0; y < mapSize.y; y++)
            {
                int            i        = x + y * levelData.tiles.Length;
                int            tileType = levelData.GetTile(x, y);
                TilesetElement te;
                tElements.TryGetValue(tileType, out te);

                // parse position for tile
                Vector3 tilePosition = GetWorldPosition(x, y);

                Transform tileTransform = i < numExistedTiles?gridRoot.GetChild(i) : Instantiate(tilePrefab, tilePosition, Quaternion.Euler(Vector3.right * 90), gridRoot);

                // initiate outline
                tileTransform.localScale = Vector3.one * (1 - outlinePercent);

                // set tile value
                Tile tile = tileTransform.GetComponent <Tile>();
                tile.walkable     = (te != null ? te.walkable : true);
                tile.gridPosition = new Vector2Int(x, y);

                // insertion
                grid[x, y] = tile;

                // Tile display
                if (te != null)
                {
                    Tileset.TileCollection tileCollection = null;
                    float envTileRotation;
                    GetEnvTileType(levelData, x, y, te.tileset, out tileCollection, out envTileRotation);
                    if (tileCollection.objects.Length == 0)
                    {
                        tileCollection = te.tileset.fallback;
                    }

                    GameObject envTilePrefab = tileCollection.GetRandom();
                    if (envTilePrefab == null)
                    {
                        envTilePrefab = te.tileset.fallback.GetRandom();
                    }
                    Vector3 envTilePosition = tilePosition;
                    envTilePosition.y = -0.55f;

                    Spawn(envTilePrefab, envTilePosition, Quaternion.Euler(0, envTileRotation, 0));
                }
            }
        }

        for (int i = 0; i < levelData.endingPoints.Length; i += 2)
        {
            Spawn(ResourceUtility.GetPrefab("EndingPoint"), GetWorldPosition(levelData.endingPoints[i], levelData.endingPoints[i + 1]) + new Vector3(0, TileSize * 0.9f, 0), Quaternion.identity);
        }

        //light map initialize
        Instantiate(ResourceUtility.GetPrefab <GameObject>("LightMap"), Vector3.zero, Quaternion.identity, EnvironmentRoot);
        //change when light config implemented.
    }
예제 #11
0
    private void LoadImage(string actor)
    {
        Sprite img = ResourceUtility.GetPrefab <Sprite>("Portraits/" + actor) as Sprite;

        dialogueIllustration.GetComponent <Image>().overrideSprite = img;
    }
예제 #12
0
    public void QuestionPop(Transform enemy)
    {
        var temp = Object.Instantiate(ResourceUtility.GetPrefab <GameObject>("QuestionBubble"), enemy.position, Quaternion.identity, enemy);

        Object.Destroy(temp, 1.5f);
    }
예제 #13
0
 private void LoadLevel(string name)
 {
     levelData = Instantiate(ResourceUtility.GetPrefab <LevelData>(name), transform);
 }