예제 #1
0
    IEnumerator LoadFinish()
    {
        if (GameObject.FindGameObjectWithTag("Player") != null)
        {
            Transform playerTrans = GameObject.FindGameObjectWithTag("Player").transform;
            playerTrans.GetComponent <PlayerChange>().ForceChangeForm(OKAID_now);

            if (SceneManager.GetActiveScene().buildIndex == 1)
            {
                playerTrans.position = LevelDoor.get_lastEnterDoorPos();
            }
            else
            {
                playerTrans.position = Vector3.zero;
            }

            GameObject.Find("ParallaxCamera").transform.position = Vector3.zero;
            playerTrans.GetComponent <PlayerEnergy>().ResetEnegy();
            PlayerStatus.set_inSeason(PlayerStatus.Season.none);

            yield return(new WaitForSeconds(0.5f));  //等待攝影機規定位
        }

        changeScene_canvasGroup.DOFade(0f, BlackFadeTime);

        yield return(new WaitForSeconds(BlackFadeTime));

        PlayerStatus.canControl = true;
    }
예제 #2
0
 private IPromise TransitionRight()
 {
     // animate the doors
     Promise[] doorAnimations = this.levelDoors.map((door, index) => {
         int indexWaypoint = this.goRightOrder[index];
         Vector2 position  = this.waypoints[indexWaypoint].position;
         if (index == 2)
         {
             var promise = new Promise();
             door.SetPosition(position);
             promise.Resolve();
             return(promise);
         }
         return(door.MoveTo(position));
     }).ToArray();
     //animation world up change when not visible and then go down
     Promise[] extraAnimations = new Promise[] {
         new Promise((resolve, reject) => {
             Sequence mySequence      = DOTween.Sequence();
             Vector2 targetPosition   = this.highScore.GetComponentInChildren <WaypointUi>().GetPosition();
             Vector2 originalPosition = this.highScore.position;
             mySequence.Append(this.highScore.DOMove(targetPosition, 0.5f, false));
             mySequence.AppendCallback(() => {
                 string worldName         = this.levelDoors.First().GetWorldName();
                 WorldSave foundWorldSave = Array.Find(this.worldSaves, (worldSave) => worldSave.name == worldName);
                 this.highScoreText.text  = foundWorldSave.highScore.ToString();
             });
             mySequence.Append(this.highScore.DOMove(originalPosition, 0.5f, false));
             mySequence.AppendCallback(() => resolve());
         }),
         new Promise((resolve, reject) => {
             string worldName         = this.levelDoors.First().GetWorldName();
             Sequence mySequence      = DOTween.Sequence();
             Vector2 targetPosition   = this.worldTitle.GetComponentInChildren <WaypointUi>().GetPosition();
             Vector2 originalPosition = this.worldTitle.position;
             mySequence.Append(this.worldTitle.DOMove(targetPosition, 0.5f, false));
             mySequence.AppendCallback(() => this.worldTitle.GetComponent <WorldTitle>().ChangeTextImage(worldName));
             mySequence.Append(this.worldTitle.DOMove(originalPosition, 0.5f, false));
             mySequence.AppendCallback(() => resolve());
         }),
         new Promise((resolve, reject) => {
             this.levelDoors.First()
             .ResetVolkaRotation()
             .AnimateEnterVolka(worldSaves[this.makeInsideBoundaries(this.startingIndex - 1, WorldsConfig.names.Length)].unlocked)
             .Then(() => resolve());
         }),
     };
     Promise[] animations = doorAnimations.Union(extraAnimations).ToArray();
     // set highScore world
     return(Promise.All(animations)
            .Then(() => {
         // move last element to first position
         LevelDoor lastDoor = this.levelDoors.Last();
         this.levelDoors.Remove(lastDoor);
         this.levelDoors.Insert(0, lastDoor);
         this.startingIndex--;
         this.startingIndex = this.makeInsideBoundaries(this.startingIndex, WorldsConfig.names.Length);
         AssingLevelDoorValues(this.startingIndex, this.levelDoors);
     }));
 }
예제 #3
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        HeroRabbit rabit = collider.GetComponent <HeroRabbit>();

        if (rabit != null)
        {
            current = this;
            GameObject parent = UICamera.first.transform.parent.gameObject;
            GameObject obj    = NGUITools.AddChild(parent, winPrefab);
        }
    }
예제 #4
0
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "SlidingElement")
        {
            SimpleMovableElement element = other.gameObject.GetComponentInParent <SimpleMovableElement>();
            transform.parent = element.transform;
            element.SetPlayerOnTop(true);
        }

        if (other.gameObject.tag == "EndScreen")
        {
            int clicks = GameManager.GetInstance().GetTotalClicks();
            UIManager.GetInstance().showEndPanel(clicks);
        }

        if (other.gameObject.tag == "Gate")
        {
            Gate gate = other.gameObject.GetComponentInParent <Gate>();
            if (gate != null)
            {
                gate.TryToOpen();
            }
        }

        if (other.gameObject.tag == "LevelEntry")
        {
            LevelEntryDoor door = other.gameObject.GetComponentInParent <LevelEntryDoor>();
            if (door != null)
            {
                door.startLevel();
            }
        }

        if (other.gameObject.tag == "LevelDoor")
        {
            LevelDoor door = other.gameObject.GetComponentInParent <LevelDoor>();
            if (door != null)
            {
                door.startLevel();
            }
        }

        if (other.gameObject.tag == "Key")
        {
            Key key = other.gameObject.GetComponent <Key> ();
            if (key != null)
            {
                key.setFound();
                key.GetComponent <PathElement> ().SetActive(false);
            }
        }
    }
예제 #5
0
    // Enter a door
    public void UseDoor()
    {
        Collider2D col = Physics2D.OverlapPoint(transform.FindChild("Head").position, DoorLayer);

        if (Me == Character.NANO && col)
        {
            LevelDoor door = col.GetComponent <LevelDoor>();
            if (!door.isLocked)
            {
                canMove = false;
                door.EndScene();
            }
        }
    }
예제 #6
0
    private LevelSelector InitializeDoors(WorldSave[] worldSaves)
    {
        this.worldSaves = worldSaves;
        this.levelDoors = this.waypoints.map((waypoint, index) => {
            LevelDoor levelDoor = Resources.Door.Instantiate().GetComponent <LevelDoor>();
            levelDoor.Initialize(worldSaves);
            levelDoor.SetPosition(waypoint.position);
            levelDoor.transform.SetParent(this.gameObject.transform, false);
            return(levelDoor);
        }).ToList();
        AssingLevelDoorValues(this.startingIndex, this.levelDoors);
        WorldSave foundWorldSave = this.worldSaves.First();

        this.highScoreText.text = foundWorldSave.highScore.ToString();
        return(this);
    }
예제 #7
0
    // Update is called once per frame
    void Update()
    {
        if (m_exterminateTargets.Count > 0)
        {
            bool exterminatedEnemies = true;

            foreach (GameObject target in m_exterminateTargets)
            {
                if (target.activeSelf)
                {
                    exterminatedEnemies = false;
                    break;
                }
            }

            if (exterminatedEnemies)
            {
                if (m_fadeMusic)
                {
                    Singleton_Sound.m_instance.fadeOutSound(0.15f);
                }

                if (m_soundToPlayWhenItemSpawns.Length != 0)
                {
                    Singleton_Sound.m_instance.PlayAudioClipOneShot(m_soundToPlayWhenItemSpawns, 0.4f);
                }

                if (null != m_itemToSpawn)
                {
                    GameObject spawnedItem = System_Spawn.instance.GetObjectFromPool(m_itemToSpawn, true);
                    spawnedItem.transform.position = m_spawnLocation.transform.position;
                }

                m_exterminateTargets.Clear();

                if (null != m_levelDoor)
                {
                    LevelDoor door = m_levelDoor.GetComponent <LevelDoor>();

                    if (null != door)
                    {
                        door.SetDoorOpen(true);
                    }
                }
            }
        }
    }
예제 #8
0
    public void KillEntity()
    {
        foreach (GameObject levelDoor in m_levelDoors)
        {
            if (null == levelDoor)
            {
                continue;
            }

            LevelDoor door = levelDoor.GetComponent <LevelDoor>();

            if (null != door)
            {
                door.SetDoorOpen(true);
            }
        }

        foreach (GameObject rewardSpawner in m_rewardSpawners)
        {
            if (null == rewardSpawner)
            {
                continue;
            }

            ISpawner spawner = rewardSpawner.GetComponent <ISpawner>();

            if (null != spawner)
            {
                spawner.ForceSpawn();
            }
        }

        Singleton_Sound.m_instance.PlayAudioClip(m_defeatedSound);

        Singleton_Sound.m_instance.fadeOutSound(0.005f);

        gameObject.SetActive(false);
    }
예제 #9
0
        public override void Paint(Level level)
        {
            // WallRegistry.Paint(level, this, EntranceWallPool.Instance);

            var w = GetTileCenter();
            var d = w + new Dot(0, -2);

            Painter.Fill(level, d.X - 1, d.Y - 1, 3, 3, Tile.WallA);
            Painter.Set(level, d.X, d.Y, Tiles.RandomFloor());
            Painter.Set(level, d.X, d.Y + 1, Tiles.RandomFloor());

            var door = new LevelDoor();

            level.Area.Add(door);

            door.X = d.X * 16;
            door.Y = d.Y * 16 + 16;

            PlaceExit(level, d);
            PlaceEntrance(level, w + new Dot(0, 1));

            MakeSafe(level);
        }
예제 #10
0
 private void OnTriggerEnter2D(Collider2D other)
 {
     elevator   = other.gameObject.GetComponent <DoorScript>();
     levelVator = other.gameObject.GetComponent <LevelDoor>();
     // Debug.Log("collision happinin");
 }