public void TriggerPoint(bool advanceLevel, TriggerData tData, ExtraTriggerData extras)
    {
        if (advanceLevel)
        {
            IncrementLevel();
        }

        if (tData.moveObject)
        {
            TeleportableGameItem tgi = extras.colliderLevelItem.GetComponent <TeleportableGameItem>();

            if (tgi != null)
            {
                Vector3 dPos = tData.playerPositionOffset;

                if (tData.playerPositionOffset.x > 0)
                {
                    dPos -= new Vector3(extras.objectSize.x / 2f, 0, 0);
                }
                else if (tData.playerPositionOffset.x < 0)
                {
                    dPos += new Vector3(extras.objectSize.x / 2f, 0, 0);
                }

                if (positionChanges.ContainsKey(tgi.rigidBody))
                {
                    positionChanges[tgi.rigidBody] = dPos;
                }
                else
                {
                    positionChanges.Add(tgi.rigidBody, dPos);
                }
            }
        }
    }
    public void Trigger(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras)
    {
        TriggerActivated(tgi, type, extras);

        if (triggers.ContainsKey(tgi) && triggers[tgi].ContainsKey(type))
        {
            GameSceneManager.INSTANCE.TriggerPoint(shouldAdvance, triggers[tgi][type], extras);
        }
    }
Beispiel #3
0
 protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras)
 {
     if (ballLeft && crateRight)
     {
         if (tgi == rightPortal && type == TriggerInteractionType.Portal_Player)
         {
             shouldAdvance = true;
         }
     }
     else if (crateRight)
     {
         if (tgi == leftPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == ball)
         {
             ballLeft = true;
             ParticlesManager.INSTANCE.DestroyCrateParticles(ball.transform.position);
             ball.SetActive(false);
             GameObject.Destroy(ball);
         }
     }
     else if (plate.IsPlateGood)
     {
         if (tgi == rightPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate)
         {
             crateRight = true;
             ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position);
             crate.SetActive(false);
             GameObject.Destroy(crate);
         }
     }
 }
Beispiel #4
0
 protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras)
 {
     if (plate.IsPlateGood && plate2.IsPlateGood)
     {
         if (tgi == rightPortal && type == TriggerInteractionType.Portal_Player)
         {
             shouldAdvance = true;
         }
     }
 }
Beispiel #5
0
 protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras)
 {
     shouldAdvance = true;
 }
 protected abstract void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras);
Beispiel #7
0
 protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras)
 {
     if (crateRight && crateLeft)
     {
         if (tgi == leftPortal && type == TriggerInteractionType.Portal_Player)
         {
             shouldAdvance = true;
         }
     }
     else if (crateLeft)
     {
         if (tgi == rightPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate)
         {
             crateRight = true;
             ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position);
             crate.SetActive(false);
             GameObject.Destroy(crate);
             PortalsAudio.INSTANCE.right2.Play();
         }
     }
     else
     {
         if (tgi == leftPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate)
         {
             crateLeft = true;
             ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position);
             crate.SetActive(false);
             GameObject.Destroy(crate);
             crate = CreateSimpleLevelItem(
                 LevelItemType.Crate,
                 new Vector3(0, 8f, 0),
                 Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward),
                 savedParent
                 );
             PortalsAudio.INSTANCE.left2.Play();
         }
     }
 }