示例#1
0
        public void StartUp()
        {
            //DLog.Log("Dungeon start up");
            foreach (Component component in components)
            {
                component.StartUp();
            }

            CheckStagesIsConfigProperly();
            activeStage          = stages[0];
            activeStageComponent = new StageComponent(activeStage);
            AddComponent(activeStageComponent);

            CheckStageCountMatchGateCount();
            if (gates.Count > 0)
            {
                activeGateController = gates[0];
            }

            CheckStageCountMatchStageActivatorCount();
            if (stageActivators.Count > 0)
            {
                activeStageActivator = stageActivators[0];
            }

            activeStage.OnStart();
            activeStage.ListenToWaveCycle(OnWaveCycle);

            DungeonActionComponent actionComponent = new DungeonActionComponent(actions);

            AddComponent(actionComponent);
        }
示例#2
0
    // Update is called once per frame
    void FixedUpdate()
    {
        UpdatePlayerGroundPosition();

        if (PlayerTransform.transform.position.z - DoorsCurrent.transform.position.z > PlayerBeyondDoorThreshold)
        {
            DoorController[] doors = DoorsCurrent.GetComponentsInChildren <DoorController>();
            foreach (DoorController d in doors)
            {
                d.CloseInstant();
            }

            Vector3 doorsPos = DoorsCurrent.transform.position;
            doorsPos.Set(doorsPos.x, doorsPos.y, doorsPos.z + Radius * 2.0f);
            DoorsCurrent.transform.position = doorsPos;
            GateController gate = DoorsCurrent.GetComponent <GateController>();
            if (gate != null)
            {
                gate.DoorChangeFrequency = Random.Range(0.5f, 3.0f);
                gate.StartFlipping();
            }

            GameObject temp = DoorsCurrent;
            DoorsCurrent = DoorsNext;
            DoorsNext    = temp;
        }
    }
示例#3
0
        private void WaitForStageActivatorToActiveThenMoveToNextStage()
        {
            if (!activeStageActivator.IsActive())
            {
                return;
            }

            isGateOpenedLastTimeCheck = false;
            //close and seal the gate so that it would not be opened again
            //DLog.Log("Close gate");
            activeGateController.Close();
            activeGateController.Seal();

            int indexOfActiveStageActivator = stageActivators.IndexOf(activeStageActivator);

            if (indexOfActiveStageActivator < stageActivators.Count - 1)
            {
                activeStageActivator = stageActivators[indexOfActiveStageActivator + 1];
                components.Remove(activeStageActivatorComponent);
            }

            int indexOfActiveGate = gates.IndexOf(activeGateController);

            if (indexOfActiveGate < gates.Count - 1)
            {
                activeGateController = gates[indexOfActiveGate + 1];
//				components.Remove(activeGateComponent);
            }

            MoveToNextStage();
        }
示例#4
0
    // Start is called before the first frame update
    void Start()
    {
        PillarsRequired  = new List <GameObject>(GameObject.FindGameObjectsWithTag("Pillar"));
        PillarsCompleted = new List <GameObject>(PillarsRequired.Count);

        myGateController = FindObjectOfType <GateController>();
    }
示例#5
0
    public void ResetGame()
    {
        TerrainFront.position           = TerrainFrontStartPosition;
        TerrainBack.position            = TerrainBackStartPosition;
        DoorsCurrent.transform.position = DoorsCurrentStartPosition;
        DoorsNext.transform.position    = DoorsNextStartPosition;
        PlayerTransform.position        = PlayerStartPosition;
        PlayerTransform.gameObject.GetComponent <PlayerController>().SetMovementEnabled(false);
        DoorController[] doors = DoorsCurrent.GetComponentsInChildren <DoorController>();
        foreach (DoorController d in doors)
        {
            d.CloseInstant();
        }
        doors = DoorsNext.GetComponentsInChildren <DoorController>();
        foreach (DoorController d in doors)
        {
            d.CloseInstant();
        }
        GateController gate = DoorsCurrent.GetComponent <GateController>();

        if (gate != null)
        {
            gate.DoorChangeFrequency = Random.Range(0.5f, 3.0f);
            gate.StartFlipping();
        }
        ButtonObject.SetActive(true);
        Instructions.gameObject.SetActive(true);
        DestroySpikes();

        AkSoundEngine.StopPlayingID(MusicPlayingID);
        AkSoundEngine.SetRTPCValue("Dare", 0.0f);
    }
示例#6
0
    // Use this for initialization
    void Start()
    {
        rb          = GetComponent <Rigidbody>();
        enemySounds = GetComponent <AudioSource>();

        gate      = GameObject.FindWithTag("Gate");
        nwHouse   = GameObject.FindWithTag("NW House");
        neHouse   = GameObject.FindWithTag("NE House");
        swHouse   = GameObject.FindWithTag("SW House");
        seHouse   = GameObject.FindWithTag("SE House");
        houses    = new GameObject[4];
        houses[0] = nwHouse;
        houses[1] = neHouse;
        houses[2] = swHouse;
        houses[3] = seHouse;

        postGateCheckpoint1 = gate.transform.GetChild(0);
        postGateCheckpoint2 = gate.transform.GetChild(1);
        gateController      = gate.GetComponent <GateController>();
        attackAnimation     = transform.GetChild(0).GetComponent <Animation>();
        nextAttack          = 0.0f;

        checkpoint = (gate.transform.GetChild(numCheckpoints).gameObject.activeSelf) ? 0 : 1;

        objectID = (int)(Time.time * 100000);
    }
示例#7
0
 // Use this for initialization
 void Start()
 {
     healthBar      = transform.GetChild(2).gameObject;
     gateController = gate.GetComponent <GateController>();
     initGateHealth = gateController.health;
     currGateHealth = initGateHealth;
 }
示例#8
0
 void DestroyAllInstantiatables()
 {
     EnemyController.DestroyAll();
     ForeshadowController.DestroyAll();
     GateController.DestroyAll();
     ExplosionController.DestroyAll();
     SelfDestruct.DestroyAll();
 }
示例#9
0
        public IEnumerator GateAndTriggerPairShouldHaveSameOwner()
        {
            //The idea is that the trigger sets the o
            GateController    gc = GameObject.Find("RedGate").GetComponent <GateController>();
            TriggerController tc = GameObject.Find("RedTrigger").GetComponent <TriggerController>();

            Assert.True(gc.Owner == tc.owner);
            yield break;
        }
示例#10
0
 IEnumerator SpawnGateCoroutine()
 {
     while (enabled)
     {
         Instantiate(gatePrefab, transform.position, Quaternion.identity);
         GateController g = SpawnGate();
         g.transform.position = transform.position + (Vector3)Random.insideUnitCircle * spawnRadius;
         yield return(new WaitForSeconds(spawnTime));
     }
 }
        private void SpawnGate()
        {
            Vector3 pos = Vector3.zero;

            pos.x = Random.Range(levelBoundsMinX + 5, levelBoundsMaxX - 5);

            var i = Instantiate(gateTemplate, pos, Quaternion.identity);

            timeIndicator.transform.position = pos + timeIndicatorOffset;
            _gateController = i.GetComponent <GateController>();
        }
示例#12
0
    private void OnControllerColliderHit(ControllerColliderHit hit)
    {
        GateController gate = hit.gameObject.GetComponentInParent <GateController>();

        if (gate != null)
        {
            gate.StopFlipping();
        }
        //DoorController door = hit.gameObject.GetComponentInParent<DoorController>();
        //if (door != null)
        //    door.Open();
    }
示例#13
0
    //This script unlocks a door when called by an NPC...
    void OnEnable()
    {
        if(!alreadyEnabledOnce){
            alreadyEnabledOnce = true;
            gateController = GetComponent<GateController> ();
            gateController.ActivateGate ();

            //if there is a chained action...
            if(targetGO){
                (targetGO.GetComponent(scriptNameToEnable) as MonoBehaviour).enabled = true;
            }
        }
    }
示例#14
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        PlayerController player = collision.GetComponentInParent <PlayerController>();

        if (player)
        {
            GateController gate = transform.parent.GetComponentInChildren <GateController>();
            if (gate)
            {
                gate.keyFound = true;
            }
            Destroy(gameObject);
        }
    }
示例#15
0
    private void Awake()
    {
        audioSource = GetComponent <AudioSource>();
        if (audioSource && activatedAudioClip)
        {
            audioSource.clip   = activatedAudioClip;
            audioSource.volume = audioVolume;
        }

        if (!_gateController)
        {
            _gateController = FindObjectOfType <GateController>();
        }
    }
示例#16
0
        public IEnumerator GateShouldOpenUp()
        {
            GateController gc = GameObject.Find("RedGate").GetComponent <GateController>();

            gc.OpenDirection = Direction.Up;

            Vector3 startPos      = gc.transform.position;
            Vector3 assumedEndPos = new Vector3(startPos.x, startPos.y, startPos.z + 1);

            gc.Open();
            yield return(new WaitForSeconds(waitTime));

            Assert.True(gc.transform.position == assumedEndPos);
        }
示例#17
0
 void OnTriggerEnter2D(Collider2D c)
 {
     if (c.gameObject.tag == "Key")
     {
         c.gameObject.GetComponent <KeyController> ().CollectKey();
         UpdateUI();
     }
     else if (c.gameObject.name == "Gate")
     {
         if (GateController.IsOpen())
         {
             LoadNextLevel();
         }
     }
 }
示例#18
0
 IEnumerator SpawnCoroutine()
 {
     while (enabled)
     {
         for (int i = 0; i < 1; i++)
         {
             GateController g             = SpawnGate();
             Vector3        worldPosition = Camera.main.ViewportToWorldPoint(new Vector3(Random.value, Random.value, 0));
             worldPosition.z      = 0;
             g.transform.position = worldPosition;
         }
         Debug.Log("Instantiation");
         yield return(new WaitForSeconds(GameManager.instance.spawnInterval));
     }
 }
示例#19
0
        public IEnumerator GateShouldComeBackToOriginalPositionWhenClosing()
        {
            GateController gc = GameObject.Find("RedGate").GetComponent <GateController>();

            gc.OpenDirection = Direction.Down;

            Vector3 startPos = gc.transform.position;

            gc.Open();
            yield return(new WaitForSeconds(waitTime));

            gc.Close();
            yield return(new WaitForSeconds(waitTime));

            Assert.True(gc.transform.position == startPos);
        }
示例#20
0
文件: Goal.cs 项目: JordanTama/GDS2
    private void Awake()
    {
        _collider = GetComponent <Collider>();

        if (goalOpenAudioSource && goalOpenClip)
        {
            goalOpenAudioSource.clip = goalOpenClip;
        }
        if (goalEnteredAudioSource && goalEnteredClip)
        {
            goalEnteredAudioSource.clip = goalEnteredClip;
        }

        if (!_gateController)
        {
            _gateController = FindObjectOfType <GateController>();
        }
    }
示例#21
0
    GateController SpawnGate()
    {
        GateController gate = null;

        for (int i = 0; i < gatePool.Count; i++)
        {
            GateController g = gatePool[i];
            if (!g.gameObject.activeSelf)
            {
                gate = g;
                break;
            }
        }
        if (gate == null)
        {
            gate = Instantiate(gatePrefab) as GateController;
            gatePool.Add(gate);
        }
        gate.gameObject.SetActive(true);
        return(gate);
    }
示例#22
0
    void Start()
    {
        // запрашиваем у GateController какие кубики нужно уничтожить

        List <int> destroyedCubes = GateController.GetDestroyedCubesList();

        foreach (int cubeIndex in destroyedCubes)
        {
            Destroy(cubesArray[cubeIndex]);
        }

        // запрашиваем у GateController материал для нашего объекта Gate


        gateMaterial = MaterialAppointer.GetGateMaterial();

        MeshRenderer[] renderers = GetComponentsInChildren <MeshRenderer>();

        foreach (MeshRenderer renderer in renderers)
        {
            renderer.material = gateMaterial;
        }
    }
示例#23
0
        public IEnumerator GreenWallShouldCloseWhenGreenLeavesTriggerAndGateCloseOnTriggerIsEnabled()
        {
            _gameHandler.SpawnNewPlayer(Player.Green);
            TriggerController tc = GameObject.Find("GreenTrigger").GetComponent <TriggerController>();

            tc.closeOnExit = true;

            PlayerController pc        = _gameHandler.GetPlayerController(Player.Green);
            GateController   GreenGate = GameObject.Find("GreenGate").GetComponent <GateController>();

            Vector3 GreenGateStartPosition = GreenGate.transform.position;

            //Setting the easeMethod and animation time to be faster
            GreenGate.easeMethod    = LeanTweenType.linear;
            GreenGate.animationTime = 0.3f;

            Vector2 greenTriggerPos = new Vector2(10, 6);

            pc.MoveToPos(greenTriggerPos.x, greenTriggerPos.y);

            while (pc.GetPosition() != greenTriggerPos)
            {
                yield return(null);
            }
            yield return(new WaitForSeconds(waitTime));

            //Making sure the wall actually moved
            Assert.That(GreenGate.transform.position != GreenGateStartPosition);

            pc.MovePlayer(Direction.Left);

            yield return(new WaitForSeconds(waitTime));

            //testing if it have moved back
            Assert.That(GreenGate.transform.position == GreenGateStartPosition);
        }
示例#24
0
    private void Awake()
    {
        instance = this;
        GateDeck = new List <GameObject>();

        GateDeck.Add(AbyssGate);
        GateDeck.Add(CeleanoGate);
        GateDeck.Add(DementionGate);
        GateDeck.Add(DreamLandGate);
        GateDeck.Add(GreatRaceGate);
        GateDeck.Add(PlateauOfLengGate);
        GateDeck.Add(RlyehGate);
        GateDeck.Add(YuggoyhGate);
        GateDeck.Add(AbyssGate);
        GateDeck.Add(CeleanoGate);
        GateDeck.Add(DementionGate);
        GateDeck.Add(DreamLandGate);
        GateDeck.Add(GreatRaceGate);
        GateDeck.Add(PlateauOfLengGate);
        GateDeck.Add(RlyehGate);
        GateDeck.Add(YuggoyhGate);

        GateDeck = ShuffleList <GameObject>(GateDeck);
    }
示例#25
0
    private void Awake()
    {
        instance = this;
        gateDeck = new List <GameObject>();

        gateDeck.Add(dreamLandGate);
        gateDeck.Add(abyssGate);
        gateDeck.Add(celeanoGate);
        gateDeck.Add(dementionGate);
        gateDeck.Add(greatRaceGate);
        gateDeck.Add(plateauOfLengGate);
        gateDeck.Add(rlyehGate);
        gateDeck.Add(yuggoyhGate);
        gateDeck.Add(abyssGate);
        gateDeck.Add(celeanoGate);
        gateDeck.Add(dementionGate);
        gateDeck.Add(dreamLandGate);
        gateDeck.Add(greatRaceGate);
        gateDeck.Add(plateauOfLengGate);
        gateDeck.Add(rlyehGate);
        gateDeck.Add(yuggoyhGate);

        gateDeck = ShuffleList <GameObject>(gateDeck);
    }
示例#26
0
 public void CollectKey()
 {
     GateController.RemoveKeyFromGate();
     Destroy(gameObject);
 }
示例#27
0
 void Start()
 {
     // make sure that the gate knows that this key is bound to it
     GateController.AddKeyToGate();
 }
示例#28
0
    void Start()
    {
        animator.SetBool("isDown", false);

        gateController = gate.GetComponent <GateController>();
    }
示例#29
0
        public void AddGate(GateController gateController)
        {
            notNullReference.Check(gateController, "gate");

            gates.Add(gateController);
        }
示例#30
0
 void Awake()
 {
     Gate        = ControllingGate.GetComponentInChildren <GateController>();
     SoundOrigin = GetComponentInChildren <SoundManager>();
     Origin      = PlateTransform.transform.localPosition;
 }
示例#31
0
        public async Task InitializeHardware()
        {
            if (LightningProvider.IsLightningEnabled)
            {
                LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider();

                var pmwProvider = LightningPwmProvider.GetPwmProvider();

//                var pwmControllers = await Windows.Devices.Pwm.PwmController.GetControllersAsync(pmwProvider);
                var pwmControllers = Windows.Devices.Pwm.PwmController.GetControllersAsync(pmwProvider).GetAwaiter().GetResult();
                var pwmController  = pwmControllers[1]; // the on-device controller

                // This seems to go bad
                //pwmController.SetDesiredFrequency(100);

                _gpioController = await GpioController.GetDefaultAsync();

                IPin GetInputPin(int pinNr)
                {
                    return(new GpioPinWrapper(_gpioController.OpenPin(pinNr, GpioSharingMode.Exclusive), GpioPinDriveMode.InputPullUp));
                }

                _gateStates = new GateStates();
                _gateStates.Add(
                    // Center switches (on bread board)
                    new GateState(
                        // Yellow button, Closed
                        GetInputPin(27),
                        // Red button, Open
                        GetInputPin(22)),
                    1);
                _gateStates.Add(
                    // Top switches (on bread board)
                    new GateState(
                        // Yellow button, Closed
                        GetInputPin(4),
                        // Red button, Open
                        GetInputPin(17)),
                    2);

                IPwmPin GetPwmPin(int pinNr)
                {
                    //var pin = _gpioController.OpenPin(pinNr);
                    //pin.SetDriveMode(GpioPinDriveMode.Output);
                    return(new PwmPinWrapper(pwmController.OpenPin(pinNr)));
                }

                GateController =
                    new GateController(
                        // TODO : pins in settings, selector: 6, 13, 19
                        new Selector(GetOutputPins(6, 13, 19)),
                        new PwmController(
                            // TODO : pins in settings: 20, 21
                            GetPwmPin(20),
                            GetPwmPin(21),
                            // TODO : steps per change in settings
                            3),
                        _gateStates);

                // TODO : pins in settings: 24
                _heartBeatPin   = GetOutputPins(24).First();
                _heartBeatTimer = new Timer(HandleHeartBeat, _heartBeatState, 100, Timeout.Infinite);
            }
        }
 void Start()
 {
     myGateController = GetComponentInParent<GateController>();
 }