Inheritance: MonoBehaviour
 // Start is called before the first frame update
 void Awake()
 {
     ob   = GameObject.FindObjectOfType <Floor>();
     obj  = GameObject.FindObjectOfType <Coins>();
     sobj = GameObject.FindObjectOfType <Spikes>();
     sm   = GameObject.FindObjectOfType <ScoreManager>();
 }
Example #2
0
    void OnCollisionEnter2D(Collision2D other)
    {
        float diffVel = (float)Math.Pow(other.relativeVelocity.magnitude / 4, 2);

        if (diffVel > 0.7 && !walking)
        {
            collisionSound.volume = diffVel * 2;
            collisionSound.pitch  = UnityEngine.Random.Range(0.6f, 0.8f);
            collisionSound.Play();
        }


        if (other.gameObject.tag == "GROUND" || other.gameObject.tag == "PICKUP")
        {
            groundCollisions.Add(other.gameObject);



//			foreach (GameObject o in groundCollisions) {
//				print(o);
//			}
        }

        if (other.gameObject.tag == "Spikes")
        {
            Spikes s = other.gameObject.GetComponent <Spikes>();
            ch.damage(s.damage);
        }
    }
Example #3
0
    public override void Initialize()
    {
        base.Initialize();

        spikes = Instantiate(spikesPrefab, transform);
        spikes.CreateSpikes();
    }
Example #4
0
    void OnGUI()
    {
        GUILayout.Label("Character", EditorStyles.boldLabel);
        character = (Character)EditorGUILayout.ObjectField("Character", character, typeof(Character), false);

        tileGroupEnabled = EditorGUILayout.ToggleLeft("Tile Menu", tileGroupEnabled);
        float showTileGroup = 0;

        if (tileGroupEnabled)
        {
            showTileGroup = 1;
        }
        if (EditorGUILayout.BeginFadeGroup(showTileGroup))
        {
            dirt   = (Dirt)EditorGUILayout.ObjectField("Dirt", dirt, typeof(Dirt), false);
            water  = (Water)EditorGUILayout.ObjectField("Water", water, typeof(Water), false);
            spikes = (Spikes)EditorGUILayout.ObjectField("Spikes", spikes, typeof(Spikes), false);
        }
        EditorGUILayout.EndFadeGroup();

        doodadGroupEnabled = EditorGUILayout.ToggleLeft("Doodad Menu", doodadGroupEnabled);
        float showDoodadGroup = 0;

        if (doodadGroupEnabled)
        {
            showDoodadGroup = 1;
        }
        if (EditorGUILayout.BeginFadeGroup(showDoodadGroup))
        {
            entrance = (Entrance)EditorGUILayout.ObjectField("Entrance", entrance, typeof(Entrance), false);
            exit     = (Exit)EditorGUILayout.ObjectField("Exit", exit, typeof(Exit), false);
            boulder  = (Boulder)EditorGUILayout.ObjectField("Boulder", boulder, typeof(Boulder), false);
        }
        EditorGUILayout.EndFadeGroup();

        if (GUILayout.Button("Select stage file"))
        {
            stageFilePath = EditorUtility.OpenFilePanel("Load stage file", "", "");
        }
        if (stageFilePath != null)
        {
            GUILayout.Label("Stage File Path: " + stageFilePath);
        }
        if (GUILayout.Button("Generate Stage"))
        {
            if (stageFilePath == null)
            {
                EditorUtility.DisplayDialog("Error", "You need to select a stage file.", "OK");
            }
            else if (dirt == null || water == null || entrance == null || exit == null || boulder == null)
            {
                EditorUtility.DisplayDialog("Error", "You must assign prefabs to all tile and doodad fields.", "OK");
            }
            else
            {
                string stageStr = System.IO.File.ReadAllText(stageFilePath);
                CreateStage(stageStr);
            }
        }
    }
Example #5
0
 // Update is called once per frame
 void Update()
 {
     if (Trap.transform.position.x - Player.transform.position.x < 13)
     {
         Trap.SetActive(true);
     }
     if (Zombie1.transform.position.x - Player.transform.position.x < 13)
     {
         Zombie1.SetActive(true);
     }
     if (Zombie2.transform.position.x - Player.transform.position.x < 13)
     {
         Zombie2.SetActive(true);
     }
     if (Spikes.transform.position.x - Player.transform.position.x < 13)
     {
         Spikes.SetActive(true);
     }
     if (Vampire1.transform.position.x - Player.transform.position.x < 13)
     {
         Vampire1.SetActive(true);
     }
     if (Vampire2.transform.position.x - Player.transform.position.x < 13)
     {
         Vampire2.SetActive(true);
     }
     if (Golem.transform.position.x - Player.transform.position.x < 13)
     {
         Golem.SetActive(true);
     }
 }
Example #6
0
    public void RefreshReferences()
    {
        door     = GetComponent <Door> ();
        spikes   = GetComponent <Spikes> ();
        ladder   = GetComponent <Ladder> ();
        pullPush = GetComponent <PullPush> ();

        if (door != null)
        {
            interactableType = InteractableType.Door;
        }
        else if (spikes != null)
        {
            interactableType = InteractableType.Spikes;
        }
        else if (ladder != null)
        {
            interactableType = InteractableType.Ladder;
        }
        else if (pullPush != null)
        {
            interactableType = InteractableType.PullPush;
        }
        else
        {
            Debug.LogError("Error: Interactable component with no compatible component included.");
            Debug.Break();
        }
    }
Example #7
0
    //получение урона от шипов и монстров
    private void OnTriggerEnter2D(Collider2D other)
    {
        Spikes      _spikes = other.GetComponent <Spikes>();
        EnemyMoving _enemy  = other.GetComponent <EnemyMoving>();

        if (_spikes != null && canTakeDamage == true)
        {
            _slider.value -= spikesDamage;
            canTakeDamage  = false;
            StartCoroutine("SpriteChanger");
            Audio.StaticFxAudioSource2.pitch = Random.Range(0.9f, 1.1f);
            Audio.StaticFxAudioSource2.clip  = Audio.StaticFxAudioClips[1];
            Audio.StaticFxAudioSource2.Play();
            StartCoroutine("WaitToDamage");
        }
        if (_enemy != null && canTakeDamage == true)
        {
            _slider.value -= enemyDamage;
            canTakeDamage  = false;
            StartCoroutine("SpriteChanger");
            Audio.StaticFxAudioSource2.pitch = Random.Range(0.9f, 1.1f);
            Audio.StaticFxAudioSource2.clip  = Audio.StaticFxAudioClips[1];
            Audio.StaticFxAudioSource2.Play();
            StartCoroutine("WaitToDamage");
        }
    }
Example #8
0
    private void ConnectAll()
    {
        foreach (Node2D node in this.GetChildren())
        {
            Spikes s = AttemptCast <Spikes>(node);
            if (s != null)
            {
                // Connect this node's NewPlayer signal to the spike's OnNewPlayer method
                this.Connect("NewPlayer", s, "OnNewPlayer");
            }

            Checkpoint c = AttemptCast <Checkpoint>(node);
            if (c != null)
            {
                // Connect the checkpoint's Activated signal to this node's OnCheckpointActivate method
                c.Connect("Activated", this, nameof(OnCheckpointActivate));
                // Add the checkpoint name to the list of checkpoint node names
                listCheckpointNodeNames.Add(c.Name);
            }

            Goalpoint g = AttemptCast <Goalpoint>(node);
            if (g != null)
            {
                // Connect the goalpoint's Activated signal to this node's OnGoalpointActivated method
                g.Connect("Activated", this, nameof(OnGoalpointActivated));
            }
        }
    }
Example #9
0
    void FixedUpdate()
    {
        gameTimer -= Time.deltaTime;
        gameTimer  = (gameTimer < 0.0f) ? 0.0f : gameTimer;
        if (!spikesDropped)
        {
            timerText.GetComponent <Text> ().text = Mathf.Floor(gameTimer).ToString();
        }
        else
        {
            theText.fontSize = 1;
            theText.text     = "Balloons\nDestroyed\n" + balloonsDestroyed;
            Debug.Log(totalEvilBalloons);
            Debug.Log(evilBalloonsKilled);
            if (reportingSpikes == expectedSpikes && evilBalloonsKilled == totalEvilBalloons)
            {
                endWaitTimer = (endWaitTimer <= 0.0f) ? 0.0f : endWaitTimer - Time.deltaTime;
                if (endWaitTimer <= 0.0f)
                {
                    nextLevelTimer = (nextLevelTimer <= 0.0f) ? 0.0f : nextLevelTimer - Time.deltaTime;
                    if (balloonsDestroyed == 0)
                    {
                        theText.text = "Next level\nin " + ((nextLevelTimer > 0.0f) ? Mathf.Floor(nextLevelTimer) : 0);
                    }
                    else if (balloonsDestroyed >= 1)
                    {
                        theText.text = "Retry in\nin " + ((nextLevelTimer > 0.0f) ? Mathf.Floor(nextLevelTimer) : 0);
                    }
                    if (nextLevelTimer <= 0.0f)
                    {
                        if (balloonsDestroyed == 0)
                        {
                            DontDestroyOnLoad(tracker);
                            tracker.completedLevel();
                        }
                        else if (tracker.currLevel != 0)
                        {
                            DontDestroyOnLoad(tracker);
                        }
                        SceneManager.LoadScene(tracker.getLevelName());
                    }
                }
            }
        }

        if (gameTimer >= 0 && gameTimer <= 8.0f && !gameObject.GetComponent <AudioSource>().isPlaying)
        {
            gameObject.GetComponent <AudioSource>().Play();
        }
        if (gameTimer == 0.0f)
        {
            if (!spikesDropped)
            {
                spikesDropped = true;
                Spikes spikes = GameObject.FindObjectOfType <Spikes>();
                spikes.dropSpikes();
            }
        }
    }
Example #10
0
        public void ActivateBottomSpike() //This activates a bottom spike when called.
        {
            Spike spike2 = new Spike(Height, Width);

            Spikes.Add(spike2);
            Controls.Add(spike2);
            Spikes[Spikes.Count - 1].BottomSpike();
        }
Example #11
0
    public void DropSpike(float spikeSpeed)
    {
        // Dejar un spike en su lugar y luego caer
        Spikes spike = Instantiate(this, transform.position, transform.rotation);

        GetComponent <Rigidbody2D>().velocity = new Vector2(0, spikeSpeed);
        Destroy(gameObject, 2);
    }
Example #12
0
        public void ActivateTopSpike() //This activates a top spike when called.
        {
            Spike spike1 = new Spike(Height, Width);

            Spikes.Add(spike1);
            Controls.Add(spike1);
            Spikes[Spikes.Count - 1].TopSpike();
        }
Example #13
0
        private static void OnCollideHook(On.Celeste.Spikes.orig_OnCollide orig, Spikes spikes, Player player)
        {
            // If the player is picking up a holdable, don't kill them.
            if (player.StateMachine.State == 8)
            {
                return;
            }

            orig(spikes, player);
        }
Example #14
0
    public void Start()
    {
        singleton       = this;
        mapCam          = GetComponentInChildren <Camera>();
        spikes          = GetComponentInChildren <Spikes>();
        maxPlayerHeight = camTop;
        baseMapHeight   = camTop;

        createBlockTypeDict();
    }
Example #15
0
 private void ClearAll()
 {
     for (int i = 0; i < Spikes.GetLength(0); i++)
     {
         for (int j = 0; j < Spikes.GetLength(1); j++)
         {
             Spikes[i, j].PreviewMode = false;
             Spikes[i, j].OutMode     = false;
             Spikes[i, j].Marked      = false;
         }
     }
 }
Example #16
0
    private void AutoRotateSpikes(Spikes spikes)
    {
        if (spikes == null)
        {
            return;
        }                               // Not spikes? No gazpacho.
        // What rect are we in??
        GroundSideRect gsrIn = GetGroundSideRectAt(spikes.PosLocal);

        if (!GroundSideRect.IsUndefined(gsrIn))   // We're touching one!
        {
            float rotation = -gsrIn.side * 90;
            spikes.Debug_SetRotation(rotation);
        }
    }
Example #17
0
        private bool TryCreateEntity(string entityType, float worldX, float worldY)
        {
            CCNode entityAsNode = null;

            switch (entityType)
            {
            case "Player":
                player       = new Player();
                entityAsNode = player;
                break;

            case "Coin":
                Coin coin = new Coin();
                entityAsNode = coin;
                coins.Add(coin);
                break;

            case "Door":
                door         = new Door();
                entityAsNode = door;
                break;

            case "Spikes":
                var spikes = new Spikes();
                this.damageDealers.Add(spikes);
                entityAsNode = spikes;
                break;

            case "Enemy":
                var enemy = new Enemy();
                this.damageDealers.Add(enemy);
                this.enemies.Add(enemy);
                entityAsNode = enemy;
                break;
            }

            if (entityAsNode != null)
            {
                entityAsNode.PositionX = worldX;
                entityAsNode.PositionY = worldY;
                gameplayLayer.AddChild(entityAsNode);
            }

            return(entityAsNode != null);
        }
Example #18
0
 public Block(Position position, Size size, Directions spikeDirections, Level level)
     : base(new string(wall, size.Width).Repeat(size.Height).To2DCharArray(size.Width), position, level)
 {
     if (spikeDirections.HasFlag(Directions.Left))
     {
         Spikes.Add(new Spike(Direction.Left, Height, Position - new Position(1, 0), Level));
     }
     if (spikeDirections.HasFlag(Directions.Down))
     {
         Spikes.Add(new Spike(Direction.Down, Width, Position - new Position(0, 1), Level));
     }
     if (spikeDirections.HasFlag(Directions.Right))
     {
         Spikes.Add(new Spike(Direction.Right, Height, Position + new Position(Width, 0), Level));
     }
     if (spikeDirections.HasFlag(Directions.Up))
     {
         Spikes.Add(new Spike(Direction.Up, Width, Position + new Position(0, Height), Level));
     }
 }
Example #19
0
        private void TentacleOutline(On.Celeste.Spikes.orig_Render orig, Spikes self)
        {
            if (this.InRandomizer && (string)typeof(Spikes).GetField("spikeType", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(self) == "tentacles")
            {
                self.SetSpikeColor(Color.Black);
                var onShake = typeof(Spikes).GetMethod("OnShake", BindingFlags.Instance | BindingFlags.NonPublic);
                onShake.Invoke(self, new object[] { new Vector2(1, 0) });
                orig(self);
                onShake.Invoke(self, new object[] { new Vector2(-1, 1) });
                orig(self);
                onShake.Invoke(self, new object[] { new Vector2(-1, -1) });
                orig(self);
                onShake.Invoke(self, new object[] { new Vector2(1, -1) });
                orig(self);
                onShake.Invoke(self, new object[] { new Vector2(0, 1) });
                self.SetSpikeColor(Color.White);
            }

            orig(self);
        }
Example #20
0
    private void OnCollisionEnter2D(Collision2D other)
    {
        Platform platform = other.collider.GetComponentInParent <Platform>();

        if (platform != null)
        {
            transform.parent = other.transform;

            if (OnCollide != null)
            {
                OnCollide(platform);
            }
        }

        Spikes spikes = other.collider.GetComponentInParent <Spikes>();

        if (spikes != null)
        {
            GameManager.Instance.LoseGame(LevelManager.Instance.CurrentLevel.Score);
        }
    }
        public override void Awake(Scene scene)
        {
            base.Awake(scene);
            Color color         = Calc.HexToColor("667da5");
            Color disabledColor = new Color(color.R / 255f * (color.R / 255f), color.G / 255f * (color.G / 255f), color.B / 255f * (color.B / 255f), 1f);

            foreach (var mover in staticMovers)
            {
                Spikes spikes = mover.Entity as Spikes;
                if (spikes != null)
                {
                    spikes.EnabledColor        = Color.White;
                    spikes.DisabledColor       = disabledColor;
                    spikes.VisibleWhenDisabled = true;
                }
                Spring spring = mover.Entity as Spring;
                if (spring != null)
                {
                    spring.DisabledColor       = disabledColor;
                    spring.VisibleWhenDisabled = true;
                }
            }
        }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        if (mySpikes == null)
        {
            mySpikes = (Spikes)target;
        }

        //if (GUILayout.Button("Rotate 90°")) { mySpikes.Debug_RotateCW(); }
        if (!mySpikes.HasOnOffer())
        {
            if (GUILayout.Button("Add OnOffer"))
            {
                mySpikes.AddOnOffer(new OnOfferData(0.3f, 1.7f, 0f));
            }
        }
        else
        {
            if (GUILayout.Button("Remove OnOffer"))
            {
                mySpikes.RemoveOnOffer();
            }
        }
    }
Example #23
0
 void Start()
 {
     spikes = GetComponent <Spikes>();
     Invoke("Death", lifeTime);
 }
 public Spikes_IdleState(Entity _entity, FiniteStateMachine _stateMachine, string _animBoolName, D_IdleState _stateData, Spikes _enemy) : base(_entity, _stateMachine, _animBoolName, _stateData)
 {
     enemy = _enemy;
 }
Example #25
0
        public static Entity CreateEntityCopy(Entity savedEntity, string tag = "EntitiesSavedButNotLoaded")
        {
            Entity loadedEntity = null;
            Type   savedType    = savedEntity.GetType();

            if (savedEntity.GetEntityData() != null)
            {
                // 一般 Entity 都是 EntityData + Vector2
                loadedEntity = (savedType.GetConstructor(new[] { typeof(EntityData), typeof(Vector2) })
                                ?.Invoke(new object[] { savedEntity.GetEntityData(), Vector2.Zero })) as Entity;

                if (loadedEntity == null)
                {
                    // 部分例如草莓则是 EntityData + Vector2 + EntityID
                    loadedEntity = savedType
                                   .GetConstructor(new[] { typeof(EntityData), typeof(Vector2), typeof(EntityID) })
                                   ?.Invoke(new object[] {
                        savedEntity.GetEntityData(), Vector2.Zero, savedEntity.GetEntityId2().EntityId
                    }) as Entity;
                }

                if (loadedEntity == null && savedType.IsType <CrystalStaticSpinner>())
                {
                    loadedEntity = new CrystalStaticSpinner(savedEntity.GetEntityData(), Vector2.Zero,
                                                            (CrystalColor)savedEntity.GetField(typeof(CrystalStaticSpinner), "color"));
                }

                if (loadedEntity == null && savedType.IsType <TriggerSpikes>())
                {
                    loadedEntity = new TriggerSpikes(savedEntity.GetEntityData(), Vector2.Zero,
                                                     (TriggerSpikes.Directions)savedEntity.GetField(typeof(TriggerSpikes), "direction"));
                }

                if (loadedEntity == null && savedType.IsType <Spikes>())
                {
                    loadedEntity = new Spikes(savedEntity.GetEntityData(), Vector2.Zero,
                                              ((Spikes)savedEntity).Direction);
                }

                if (loadedEntity == null && savedType.IsType <TriggerSpikes>())
                {
                    loadedEntity = new Spring(savedEntity.GetEntityData(), Vector2.Zero, ((Spring)savedEntity).Orientation);
                }

                if (loadedEntity != null)
                {
                    loadedEntity.Position = savedEntity.Position;
                    loadedEntity.CopyEntityData(savedEntity);
                    loadedEntity.CopyEntityId2(savedEntity);
                    return(loadedEntity);
                }
            }

            // TODO 如果是他们的子类该怎么办……
            if (savedType.IsType <BadelineDummy>())
            {
                loadedEntity = new BadelineDummy(savedEntity.GetStartPosition());
            }
            else if (savedType.IsType <AngryOshiro>())
            {
                loadedEntity = new AngryOshiro(savedEntity.GetStartPosition(),
                                               (bool)savedEntity.GetField("fromCutscene"));
            }
            else if (savedType.IsType <Snowball>())
            {
                loadedEntity = new Snowball();
            }
            else if (savedType.IsType <SlashFx>() && savedEntity is SlashFx slashFx)
            {
                loadedEntity = slashFx.Clone();
            }
            else if (savedType.IsType <SpeedRing>() && savedEntity is SpeedRing speedRing)
            {
                loadedEntity = speedRing.Clone();
            }
            else if (savedType.IsType <FinalBossShot>() && savedEntity is FinalBossShot finalBossShot)
            {
                loadedEntity = finalBossShot.Clone();
            }
            else if (savedType.IsType <FinalBossBeam>() && savedEntity is FinalBossBeam finalBossBeam)
            {
                loadedEntity = finalBossBeam.Clone();
            }
            else if (savedType.IsType <BirdTutorialGui>() && savedEntity is BirdTutorialGui birdTutorialGui)
            {
                loadedEntity = birdTutorialGui.Clone();
            }
            else if (savedType.IsType <SoundEmitter>() && savedEntity is SoundEmitter soundEmitter)
            {
                loadedEntity = SoundEmitter.Play(soundEmitter.Source.EventName,
                                                 new Entity(soundEmitter.Position));
                if (SoundSourceAction.PlayingSoundSources.FirstOrDefault(source =>
                                                                         source.EventName == soundEmitter.Source.EventName) == null)
                {
                    (loadedEntity as SoundEmitter)?.Source.TryCopyObject(soundEmitter.Source);
                }
                else
                {
                    (loadedEntity as SoundEmitter)?.Source.Stop();
                }
            }
            else if (savedType.IsType <Debris>() && savedEntity is Debris debris)
            {
                loadedEntity = Engine.Pooler.Create <Debris>()
                               .Init(debris.GetStartPosition(), (char)debris.GetField("tileset"),
                                     (bool)debris.GetField("playSound"));
            }
            else if (savedType == typeof(TalkComponent.TalkComponentUI))
            {
                // ignore
            }
            else if (savedType.IsType <Entity>())
            {
                loadedEntity = new Entity(savedEntity.GetStartPosition());
            }
            else
            {
                if (savedEntity.GetType().FullName == "Celeste.MoveBlock+Debris")
                {
                    loadedEntity = (savedEntity as Actor).CloneMoveBlockDebris();
                }
                else if (savedEntity.ForceCreateInstance(tag) is Entity newEntity)
                {
                    loadedEntity = newEntity;
                }
            }


            if (loadedEntity == null)
            {
                return(null);
            }

            loadedEntity.Position = savedEntity.Position;
            loadedEntity.CopyEntityId2(savedEntity);
            loadedEntity.CopyStartPosition(savedEntity);

            return(loadedEntity);
        }
Example #26
0
 public override void onAwake()
 {
     spikes = GetComponent <Spikes>();
 }
Example #27
0
    // ----------------------------------------------------------------
    //	Initialize
    // ----------------------------------------------------------------
    public void Initialize(GameController _gameControllerRef, Transform tf_world, RoomData _roomData)
    {
        gameControllerRef    = _gameControllerRef;
        MyRoomData           = _roomData;
        this.gameObject.name = MyRoomData.RoomKey;

        GameUtils.ParentAndReset(this.gameObject, tf_world);
        this.transform.localPosition = PosGlobal; // Position me!

        // Initialize channels!
        gateChannels = new GateChannel[5];
        for (int i = 0; i < gateChannels.Length; i++)
        {
            gateChannels[i] = new GateChannel(this, i);
        }

        // Instantiate my props!
        RoomData         rd  = MyRoomData;
        ResourcesHandler rh  = ResourcesHandler.Instance;
        int numProgressGates = 0; // for deteriming their indexes.
        int numVeils         = 0; // for determining their indexes.

        foreach (PropData propData in rd.allPropDatas)
        {
            System.Type pt = propData.GetType();
            if (false)
            {
            }
            // Enemies
            else if (pt == typeof(DweebData))
            {
                Dweeb newProp = Instantiate(rh.Dweeb).GetComponent <Dweeb>();
                newProp.Initialize(this, propData as DweebData);
            }
            // Grounds
            else if (pt == typeof(CrateData))
            {
                Crate newProp = Instantiate(rh.Crate).GetComponent <Crate>();
                newProp.Initialize(this, propData as CrateData);
            }
            else if (pt == typeof(DispGroundData))
            {
                DispGround newProp = Instantiate(rh.DispGround).GetComponent <DispGround>();
                newProp.Initialize(this, propData as DispGroundData);
            }
            else if (pt == typeof(GateData))
            {
                Gate newProp = Instantiate(rh.Gate).GetComponent <Gate>();
                newProp.Initialize(this, propData as GateData);
                gateChannels[newProp.ChannelID].AddGate(newProp);
            }
            else if (pt == typeof(ToggleGroundData))
            {
                ToggleGround newProp = Instantiate(rh.ToggleGround).GetComponent <ToggleGround>();
                newProp.Initialize(this, propData as ToggleGroundData);
            }
            else if (pt == typeof(PlatformData))
            {
                Platform newProp = Instantiate(rh.Platform).GetComponent <Platform>();
                newProp.Initialize(this, propData as PlatformData);
            }
            else if (pt == typeof(GroundData))
            {
                Ground newProp = Instantiate(rh.Ground).GetComponent <Ground>();
                newProp.Initialize(this, propData as GroundData);
            }
            // Everything else!
            else if (pt == typeof(BatteryData))
            {
                Battery newProp = Instantiate(rh.Battery).GetComponent <Battery>();
                newProp.Initialize(this, propData as BatteryData);
            }
            else if (pt == typeof(BuzzsawData))
            {
                Buzzsaw newProp = Instantiate(rh.Buzzsaw).GetComponent <Buzzsaw>();
                newProp.Initialize(this, propData as BuzzsawData);
            }
            else if (pt == typeof(CharBarrelData))
            {
                CharBarrel newProp = Instantiate(rh.CharBarrel).GetComponent <CharBarrel>();
                newProp.Initialize(this, propData as CharBarrelData, charBarrels.Count);
                charBarrels.Add(newProp);
            }
            else if (pt == typeof(CharUnlockOrbData))
            {
                CharUnlockOrb newProp = Instantiate(rh.CharUnlockOrb).GetComponent <CharUnlockOrb>();
                newProp.Initialize(this, propData as CharUnlockOrbData);
            }
            else if (pt == typeof(CameraBoundsData))
            {
                CameraBounds newProp = Instantiate(rh.CameraBounds).GetComponent <CameraBounds>();
                newProp.Initialize(this, propData as CameraBoundsData);
            }
            else if (pt == typeof(GateButtonData))
            {
                GateButton newProp = Instantiate(rh.GateButton).GetComponent <GateButton>();
                newProp.Initialize(this, propData as GateButtonData);
                gateChannels[newProp.ChannelID].AddButton(newProp);
            }
            else if (pt == typeof(GemData))
            {
                Gem newProp = Instantiate(rh.Gem).GetComponent <Gem>();
                newProp.Initialize(this, propData as GemData, gems.Count);
                gems.Add(newProp);
            }
            else if (pt == typeof(InfoSignData))
            {
                InfoSign newProp = Instantiate(rh.InfoSign).GetComponent <InfoSign>();
                newProp.Initialize(this, propData as InfoSignData);
            }
            else if (pt == typeof(LaserData))
            {
                Laser newProp = Instantiate(rh.Laser).GetComponent <Laser>();
                newProp.Initialize(this, propData as LaserData);
            }
            else if (pt == typeof(LiftData))
            {
                Lift newProp = Instantiate(rh.Lift).GetComponent <Lift>();
                newProp.Initialize(this, propData as LiftData);
            }
            else if (pt == typeof(PlayerStartData))
            {
                PlayerStart newProp = Instantiate(rh.PlayerStart).GetComponent <PlayerStart>();
                newProp.Initialize(this, propData as PlayerStartData);
            }
            else if (pt == typeof(ProgressGateData))
            {
                ProgressGate newProp = Instantiate(rh.ProgressGate).GetComponent <ProgressGate>();
                newProp.Initialize(this, propData as ProgressGateData, numProgressGates++);
            }
            else if (pt == typeof(RoomDoorData))
            {
                RoomDoor newProp = Instantiate(rh.RoomDoor).GetComponent <RoomDoor>();
                newProp.Initialize(this, propData as RoomDoorData);
            }
            else if (pt == typeof(SnackData))
            {
                Snack newProp = Instantiate(rh.Snack).GetComponent <Snack>();
                newProp.Initialize(this, propData as SnackData, snacks.Count);
                snacks.Add(newProp);
            }
            else if (pt == typeof(SpikesData))
            {
                Spikes newProp = Instantiate(rh.Spikes).GetComponent <Spikes>();
                newProp.Initialize(this, propData as SpikesData);
            }
            else if (pt == typeof(TurretData))
            {
                Turret newProp = Instantiate(rh.Turret).GetComponent <Turret>();
                newProp.Initialize(this, propData as TurretData);
            }
            else if (pt == typeof(VeilData))
            {
                Veil newProp = Instantiate(rh.Veil).GetComponent <Veil>();
                newProp.Initialize(this, propData as VeilData, numVeils++);
            }
            else
            {
                Debug.LogWarning("PropData not recognized: " + propData);
            }
        }

        AddHardcodedRoomElements();

        // For development, add bounds so we don't fall out of unconnected rooms!
        AutoAddInvisibounds();
        roomGizmos.Initialize(this);
        shutters.Initialize(this);
    }
Example #28
0
 void Start()
 {
     spike  = GetComponent <Spikes>();
     target = GameObject.FindGameObjectWithTag("Player").GetComponent <Transform>();
 }
Example #29
0
 void CreateSpike()
 {
     spike        = Instantiate(spikePrefab, transform.position, spikePrefab.transform.rotation).GetComponent <Spikes>();
     spike.spiker = this;
 }
Example #30
0
    // Update is called once per frame
    void Update()
    {
        movementUpdate();

        if (Input.GetKeyDown(KeyCode.Z))
        {
            FindObjectOfType <PlayerValues>().changeXP(100);
            combatManager.xpText.text = "XP " + player.getXP() + "/" + player.getXPForLevel(player.getLevel());
        }

        if (Input.GetKeyDown(KeyCode.U))
        {
            FindObjectOfType <PlayerValues>().saveStats();
            SceneManager.LoadScene("Level2");
        }

        if (player.getHP() <= 0 && !combatManager.inCombat)
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().name);
        }

        invincibility = Mathf.Max(0, invincibility - 1);
        if (!combatManager.inCombat)
        {
            combatTimeout = Mathf.Max(0, combatTimeout - 1);
        }

        attackTime = Mathf.Max(0, attackTime - 1);

        if (attackTime == 15)
        {
            Instantiate(playerHitbox, transform);
        }

        if (Input.GetButtonDown("Attack") && !activeTextBox)
        {
            anim.SetTrigger("Attack");
            attackTime = 20;
            if (!grounded)
            {
                checkFlip(Input.GetAxis("Horizontal"));
            }
        }

        if (!combatManager.getInCombat())
        {
            //Spieler wird bewegt
            collisionBox.movement();

            //Prüft ob der Spieler auf dem Boden ist
            grounded = collisionBox.isGrounded();

            if (grounded)
            {
                //Stacheln
                if (invincibility == 0)
                {
                    Spikes floorDamage = collisionBox.getGround().GetComponent <Spikes>();
                    if (floorDamage != null)
                    {
                        spikeDamage();
                    }
                }

                //Spieler ist auf dem boden
                if (isStomping)
                {
                    //Spieler landet von einer Stampfattacke
                    GameObject ground = collisionBox.getGround();
                    if (ground != null)
                    {
                        Destructable des = ground.GetComponent <Destructable>();
                        if (des != null && des.stomp)
                        {
                            des.dealDamage(1);
                            collisionBox.setVSpeed(0.4f);
                        }
                    }
                }
                else
                {
                    if (collisionBox.velocity.x != 0)
                    {
                        GameObject wall = collisionBox.getWall(collisionBox.velocity.x > 0 ? Vector3.right : Vector3.left);
                        if (wall != null)
                        {
                            Pushable push = wall.GetComponent <Pushable>();
                            if (push != null)
                            {
                                wall.GetComponent <CollisionBox>().wallCollisionH(collisionBox.velocity.x > 0 ? push.pushSpeed : -push.pushSpeed);
                            }
                        }
                    }
                }
                canDoubleJump = true;
                isStomping    = false;

                if (Input.GetAxis("Horizontal") != 0 && !activeTextBox)
                {
                    anim.SetTrigger("Walking");
                }
                else
                {
                    anim.SetTrigger("Standing");
                }
            }
            else
            {
                anim.SetTrigger("Jumping");
            }

            if (invincibility == 0)
            {
                GameObject spikeWall = collisionBox.getWall(collisionBox.velocity.x < 0 ? Vector3.left : Vector3.right);
                if (spikeWall != null)
                {
                    Spikes spike = spikeWall.GetComponent <Spikes>();
                    if (spike != null)
                    {
                        spikeDamage();
                    }
                }
            }

            if (Input.GetButtonDown("Jump") && !activeTextBox)
            {
                if (grounded)
                {
                    //Sprung von dem Boden
                    anim.ResetTrigger("Standing");
                    anim.ResetTrigger("Walking");
                    anim.ResetTrigger("Stomp");
                    anim.SetTrigger("Jumping");
                    collisionBox.setVSpeed(jumpForce);
                    grounded = false;
                }
                else if (canDoubleJump && abilityDoubleJump)
                {
                    //Doppelsprung
                    canDoubleJump = false;
                    //Stampfattacke wird abgrbrochen
                    isStomping = false;
                    anim.SetTrigger("DoubleJump");
                    collisionBox.setVSpeed(doubleJumpForce);
                }
            }
            if (abilityStomp && Input.GetButtonDown("Stomp") && !grounded)
            {
                //Stampfattacke
                anim.ResetTrigger("Jumping");
                anim.SetTrigger("Stomp");
                isStomping = true;
            }

            //Prüft auf Gegnerberührung
            checkEnemies();
        }
        hpText.text = "HP " + player.getHP() + "/" + player.getFullHP();
    }