Example #1
0
    void OnTriggerEnter(Collider other)
    {
        var otherObject = other.gameObject.GetComponent <CollisionEntity>();

        if (otherObject == null)
        {
            return;
        }
        EntityType      otherType = otherObject.entityType;
        CollisionEffect effect    = CollisionEffect.None;

        switch (otherType)
        {
        case EntityType.Red:
            effect = hitRed;
            break;

        case EntityType.Green:
            effect = hitGreen;
            break;

        case EntityType.Blue:
            effect = hitBlue;
            break;
        }
        ResolveCollision(effect);
    }
Example #2
0
    void OnTriggerEnter(Collider other)
    {
        var otherObject = other.gameObject.GetComponent <CollisionEntity>();

        if (otherObject == null)
        {
            return;
        }
        EntityType      otherType = otherObject.entityType;
        CollisionEffect effect    = CollisionEffect.None;

        switch (otherType)
        {
        case EntityType.Player:
            effect             = hitPlayer;
            ScoreKeeper.Score += scorePlayer;
            break;

        case EntityType.Red:
            effect             = hitRed;
            ScoreKeeper.Score += ((float)scoreRed / 4);
            break;

        case EntityType.Green:
            effect             = hitGreen;
            ScoreKeeper.Score += ((float)scoreGreen / 4);
            break;

        case EntityType.Blue:
            effect             = hitBlue;
            ScoreKeeper.Score += ((float)scoreBlue / 4);
            break;
        }
        ResolveCollision(effect, otherObject);
    }
Example #3
0
        public CollisionEffect GetEffect(int effectID)
        {
            CollisionEffect effect = null;

            collisionEffects.TryGetValue(effectID, out effect);

            return(effect);
        }
Example #4
0
        protected override void Collision(BaseEntity col, Direction dir)
        {
            base.Collision(col, dir);
            CollisionEffect effect = new CollisionEffect(col, dir);

            collisionEffects.Add(effect);
            Game.AddEntity(effect);
        }
Example #5
0
 void Awake()
 {
     util     = new Util();
     rules    = GameObject.Find("Ruleset").GetComponent <Ruleset>();
     hitRed   = rules.CollisionEffects[util.CollisionEffectsIndex(EntityType.Player, EntityType.Red)];
     hitGreen = rules.CollisionEffects[util.CollisionEffectsIndex(EntityType.Player, EntityType.Green)];
     hitBlue  = rules.CollisionEffects[util.CollisionEffectsIndex(EntityType.Player, EntityType.Blue)];
     speed    = rules.PlayerSpeed;
 }
Example #6
0
        //initialise the collisionEffects array to the default effect of none
        private CollisionEffect[] DefaultCollisionEffects()
        {
            int numCollisionEffects = Enum.GetNames(typeof(CollisionEffect)).Length;

            CollisionEffect[] defaultEffects = new CollisionEffect[numCollisionEffects * numCollisionEffects];
            for (int i = 0; i < defaultEffects.Length; i++)
            {
                defaultEffects[i] = CollisionEffect.None;
            }
            return(defaultEffects);
        }
Example #7
0
    private void Start()
    {
        _collisionEffect    = GetComponentInChildren <CollisionEffect>();
        _platformStartScale = transform.localScale;
        _startBoundary      = new Boundary()
        {
            xMin = boundary.xMin, xMax = boundary.xMax
        };

        GameManager.Instance.BallsManager.BallCountChanged += DecreaseScaleX;
    }
Example #8
0
    private void UpdatePushDirection()
    {
        //work out if the other entity is pushed by us
        CollisionEffect otherEffect = rules.CollisionEffects[util.CollisionEffectsIndex(this.pushList[0].entityType, this.entityType)];

        if (this.pushList.Count == 1)
        {
            CollisionEntity pusher = this.pushList[0];
            this.moving           = pusher.moving;
            this.currentMoveSpeed = pusher.currentMoveSpeed;
        }
    }
Example #9
0
    private void ResolveCollision(CollisionEffect effect)
    {
        switch (effect)
        {
        case CollisionEffect.None:
            return;

        case CollisionEffect.Teleport:
            Teleport();
            return;

        case CollisionEffect.Death:
            scoreKeeper.GameLost();
            return;
            //TODO: rest of the effects
        }
    }
Example #10
0
    private void ResolveCollision(CollisionEffect effect, CollisionEntity other)
    {
        switch (effect)
        {
        case CollisionEffect.None:
            return;

        case CollisionEffect.Teleport:
            Teleport();
            return;

        case CollisionEffect.Death:
            Destroy(gameObject);
            return;

        case CollisionEffect.Push:
            Push(other);
            return;
        }
    }
Example #11
0
 private void GetRules()
 {
     collisionEffects = new CollisionEffect[Enum.GetNames(typeof(CollisionEffect)).Length];
     //TODO: better way of doing this - just use this.entitytype
     if (entityType == EntityType.Red)
     {
         speed        = rules.RedSpeed;
         movementType = rules.RedMovement;
         target       = rules.RedTarget;
         scorePlayer  = rules.ScorePlayerRed;
         scoreRed     = rules.ScoreRedRed;
         scoreGreen   = rules.ScoreRedGreen;
         scoreBlue    = rules.ScoreRedBlue;
     }
     else if (entityType == EntityType.Green)
     {
         speed        = rules.GreenSpeed;
         movementType = rules.GreenMovement;
         target       = rules.GreenTarget;
         scorePlayer  = rules.ScorePlayerGreen;
         scoreRed     = rules.ScoreRedGreen;
         scoreGreen   = rules.ScoreGreenGreen;
         scoreBlue    = rules.ScoreGreenBlue;
     }
     else if (entityType == EntityType.Blue)
     {
         speed        = rules.BlueSpeed;
         movementType = rules.BlueMovement;
         target       = rules.BlueTarget;
         scorePlayer  = rules.ScorePlayerBlue;
         scoreRed     = rules.ScoreRedBlue;
         scoreGreen   = rules.ScoreGreenBlue;
         scoreBlue    = rules.ScoreBlueBlue;
     }
     hitPlayer             = rules.CollisionEffects[util.CollisionEffectsIndex(this.entityType, EntityType.Player)];
     hitRed                = rules.CollisionEffects[util.CollisionEffectsIndex(this.entityType, EntityType.Red)];
     hitGreen              = rules.CollisionEffects[util.CollisionEffectsIndex(this.entityType, EntityType.Green)];
     hitBlue               = rules.CollisionEffects[util.CollisionEffectsIndex(this.entityType, EntityType.Blue)];
     this.currentMoveSpeed = this.speed;
 }
Example #12
0
        /// <summary>
        /// Handles a message sent to this component.
        /// </summary>
        /// <param name="message">Message to be handled</param>
        /// <returns>True, if handled, otherwise false</returns>
        public override bool ExecuteMessage(IMessage message)
        {
            switch (message.Type)
            {
            case MessageType.AddCollisionEffect:
            {
                MsgAddCollisionEffect msgAddEffect = message as MsgAddCollisionEffect;
                message.TypeCheck(msgAddEffect);

                AddEffect(msgAddEffect.EffectType, msgAddEffect.EffectID);
            }
                return(true);

            case MessageType.RemoveCollisionEffect:
            {
                MsgRemoveCollisionEffect msgRemEffect = message as MsgRemoveCollisionEffect;
                message.TypeCheck(msgRemEffect);

                if (msgRemEffect.RemoveAll)
                {
                    RemoveAllEffectsOfType(msgRemEffect.EffectType);
                }
                else
                {
                    RemoveEffect(msgRemEffect.EffectID);
                }
            }
                return(true);

            case MessageType.InitCollisionEffect:
            {
                MsgInitCollisionEffect msgInitEffect = message as MsgInitCollisionEffect;
                message.TypeCheck(msgInitEffect);

                CollisionEffect effect = GetEffect(msgInitEffect.EffectID);

                if (effect != null)
                {
                    if (msgInitEffect.DirectionalEffect)
                    {
                        if (!effect.InitializeDirectionalEffect(msgInitEffect.Direction, msgInitEffect.Strength))
                        {
                            throw new Exception("This collision effect doesn't handle directional effects");
                        }
                    }
                    else
                    {
                        if (!effect.InitializeNonDirectionalEffect(msgInitEffect.Strength))
                        {
                            throw new Exception("This collision effect doesn't handle non-directional effects");
                        }
                    }
                }
            }
                return(true);

            case MessageType.Collision:
            {
                MsgOnCollision msgCollData = message as MsgOnCollision;
                message.TypeCheck(msgCollData);

                NofityEffectsOfCollision(msgCollData.EntityID);
            }
                return(true);

            case MessageType.CollisionOff:
            {
                MsgOffCollision msgCollData = message as MsgOffCollision;
                message.TypeCheck(msgCollData);

                NofityEffectsOfCollisionOff(msgCollData.EntityID);
            }
                return(true);

            default:
                return(false);
            }
        }
Example #13
0
        public void InitializeCollisionEffect(CollisionEffectDefinition effectDef)
        {
            CollisionEffect effect = GetEffect(effectDef.EffectUniqueID);

            effect.InitializeEffect(effectDef);
        }