Пример #1
0
 protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras)
 {
     if (tgi == leftPortal && type == TriggerInteractionType.Portal_Player)
     {
         shouldAdvance = true;
     }
 }
Пример #2
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);
         }
     }
 }
Пример #3
0
    public override void Create(Transform parent)
    {
        savedParent = parent;

        leftPortal = CreateTGI(
            LevelItemType.Portal,
            new Vector3(-7f, 0, 0),
            Quaternion.identity,
            parent
            );
        AddTrigger(leftPortal, TriggerInteractionType.Portal_Player, TriggerData.leftPortalNormal);
        AddTrigger(leftPortal, TriggerInteractionType.Portal_Inanimate, TriggerData.leftPortalNormal);

        rightPortal = CreateTGI(
            LevelItemType.Portal,
            new Vector3(7f, 0, 0),
            Quaternion.AngleAxis(180, Vector3.up),
            parent
            );
        AddTrigger(rightPortal, TriggerInteractionType.Portal_Player, TriggerData.rightPortalNormal);
        AddTrigger(rightPortal, TriggerInteractionType.Portal_Inanimate, TriggerData.rightPortalNormal);

        crate = CreateSimpleLevelItem(
            LevelItemType.Crate,
            new Vector3(0, 8f, 0),
            Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward),
            parent
            );
    }
Пример #4
0
    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);
        }
    }
Пример #5
0
    public override void Create(Transform parent)
    {
        leftPortal = CreateTGI(
            LevelItemType.Portal,
            new Vector3(-7f, 0, 0),
            Quaternion.identity,
            parent
            );
        TriggerData td = new TriggerData()
        {
            playerPositionOffset = new Vector3(13.1f, 0f, 0f), moveObject = true
        };

        AddTrigger(leftPortal, TriggerInteractionType.Portal_Player, td);
        AddTrigger(leftPortal, TriggerInteractionType.Portal_Inanimate, td);

        rightPortal = CreateTGI(
            LevelItemType.Portal,
            new Vector3(7f, 0f, 0),
            Quaternion.AngleAxis(180, Vector3.up),
            parent
            );
        td = new TriggerData()
        {
            playerPositionOffset = new Vector3(-13.1f, 0f, 0f), moveObject = true
        };
        AddTrigger(rightPortal, TriggerInteractionType.Portal_Player, td);
        AddTrigger(rightPortal, TriggerInteractionType.Portal_Inanimate, td);

        crate = CreateSimpleLevelItem(
            LevelItemType.Crate,
            new Vector3(2f, 8f, 0),
            Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward),
            parent
            );

        ball = CreateSimpleLevelItem(
            LevelItemType.Ball,
            new Vector3(2f, 10f, 0),
            Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward),
            parent
            );

        plate = CreateSimpleLevelItem(
            LevelItemType.Plate,
            new Vector3(-2f, 0f, 0),
            Quaternion.identity,
            parent
            ).GetComponent <PlateGameItem>();

        plate.SetGoodColliders(new List <Collider>()
        {
            ball.GetComponent <Collider>()
        });
    }
Пример #6
0
    protected void AddTrigger(TriggeringGameItem tgi, TriggerInteractionType type, TriggerData tData)
    {
        if (!triggers.ContainsKey(tgi))
        {
            triggers.Add(tgi, new Dictionary <TriggerInteractionType, TriggerData>());
        }

        if (triggers[tgi].ContainsKey(type))
        {
            triggers[tgi][type] = tData;
        }
        else
        {
            triggers[tgi].Add(type, tData);
        }
    }
Пример #7
0
    protected TriggeringGameItem CreateTGI(LevelItemType type, Vector3 position, Quaternion rotation, Transform parent)
    {
        TriggeringGameItem tgi = GameObject.Instantiate(
            GameSceneManager.INSTANCE.GetPrefab(type),
            position,
            rotation,
            parent
            ).GetComponent <TriggeringGameItem>();

        if (tgi != null)
        {
            tgi.level = this;
        }

        return(tgi);
    }
Пример #8
0
    public override void Create(Transform parent)
    {
        savedParent = parent;

        CreateSimpleLevelItem(
            LevelItemType.MediumPlatform,
            new Vector3(-7f, 1.5f, 0),
            Quaternion.identity,
            parent
            );

        leftPortal = CreateTGI(
            LevelItemType.Portal,
            new Vector3(-7f, 3, 0),
            Quaternion.identity,
            parent
            );
        TriggerData td = new TriggerData()
        {
            playerPositionOffset = new Vector3(13.1f, -3f, 0f), moveObject = true
        };

        AddTrigger(leftPortal, TriggerInteractionType.Portal_Player, td);
        AddTrigger(leftPortal, TriggerInteractionType.Portal_Inanimate, td);

        rightPortal = CreateTGI(
            LevelItemType.Portal,
            new Vector3(7f, 0, 0),
            Quaternion.AngleAxis(180, Vector3.up),
            parent
            );
        td = new TriggerData()
        {
            playerPositionOffset = new Vector3(-13.1f, 3f, 0f), moveObject = true
        };
        AddTrigger(rightPortal, TriggerInteractionType.Portal_Player, td);
        AddTrigger(rightPortal, TriggerInteractionType.Portal_Inanimate, td);

        ball = CreateSimpleLevelItem(
            LevelItemType.Ball,
            new Vector3(-4.5f, 3.5f, 0),
            Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward),
            parent
            );
    }
Пример #9
0
    public override void Create(Transform parent)
    {
        leftPortal = CreateTGI(
            LevelItemType.Portal,
            new Vector3(-7f, 0, 0),
            Quaternion.identity,
            parent
            );
        AddTrigger(leftPortal, TriggerInteractionType.Portal_Player, TriggerData.leftPortalNormal);

        TriggeringGameItem rightPortal = CreateTGI(
            LevelItemType.Portal,
            new Vector3(7f, 0, 0),
            Quaternion.AngleAxis(180, Vector3.up),
            parent
            );

        AddTrigger(rightPortal, TriggerInteractionType.Portal_Player, TriggerData.rightPortalNormal);
    }
Пример #10
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();
         }
     }
 }
Пример #11
0
 protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras)
 {
     shouldAdvance = true;
 }
Пример #12
0
 protected abstract void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras);
Пример #13
0
 public void Trigger(TriggeringGameItem tgi, TriggerInteractionType type)
 {
     Trigger(tgi, type, new ExtraTriggerData());
 }