Example #1
0
    protected override void Execute()
    {
        Debug.Log("Execute pregnancy");
        if (setPregnant)
        {
            parent.isPregnant = true;
            if (parent.childPart == null)
            {
                var commandEvent = new CommandEvent(new BirthCommand(parent, position), 1);
                EgoEvents <CommandEvent> .AddEvent(commandEvent);

                var commandEvent2 = new CommandEvent(new PregnancyCommand(parent, position, false), 1);
                EgoEvents <CommandEvent> .AddEvent(commandEvent2);
            }
            else
            {
                if (!parent.childPart.isPregnant)
                {
                    var commandEvent = new CommandEvent(new PregnancyCommand(parent.childPart, position, true), 1);
                    EgoEvents <CommandEvent> .AddEvent(commandEvent);

                    var commandEvent2 = new CommandEvent(new PregnancyCommand(parent, position, false), 1);
                    EgoEvents <CommandEvent> .AddEvent(commandEvent2);
                }
            }
        }
        else
        {
            parent.isPregnant = false;
        }
    }
Example #2
0
    public override void Update()
    {
        constraint.ForEachGameObject(
            (ego, player) =>
        {
            float moveVertical = Input.GetAxis("Vertical");
            if (gameIsOver)
            {
                // do nothing is game is over
            }
            else
            {
                if (Input.GetKey(KeyCode.UpArrow))
                {
                    Vector3 now = player.transform.position;
                    player.transform.position = new Vector3(now.x, now.y + player.speed, now.z);
                    //
                    // invoke an event to check if the player car has crossed the line
                    //
                    if (ego.gameObject.name == "Player")
                    {
                        var eve = new CheckEndOfLineEvent(ego);
                        EgoEvents <CheckEndOfLineEvent> .AddEvent(eve);
                    }
                }
            }
        }

            );
    }
Example #3
0
    void Handle(InputDataReceivedEvent e)
    {
        constraint.ForEachGameObject((ego, ready) => {
            if (e.data == 5 && e.playerID == 1)
            {
                ready.playerOneReady = true;
                EgoEvents <PlayerReadyEvent> .AddEvent(new PlayerReadyEvent(1));
            }
            if (e.data == 6 && e.playerID == 1)
            {
                ready.playerOneReady = false;
                EgoEvents <PlayerNotReadyEvent> .AddEvent(new PlayerNotReadyEvent(1));
            }
            if (e.data == 5 && e.playerID == 2)
            {
                ready.playerTwoReady = true;
                EgoEvents <PlayerReadyEvent> .AddEvent(new PlayerReadyEvent(2));
            }

            if (e.data == 6 && e.playerID == 2)
            {
                ready.playerOneReady = false;
                EgoEvents <PlayerNotReadyEvent> .AddEvent(new PlayerNotReadyEvent(2));
            }
        });
    }
Example #4
0
 protected override void Execute()
 {
     parent.isPregnant = false;
     if (parent.childPart == null)
     {
         child                    = Ego.AddGameObject(Object.Instantiate <GameObject>(parent.snakePrefab)).GetComponent <SnakePartComponent>();
         child.snakePrefab        = parent.snakePrefab;
         child.transform.position = position;
         child.transform.rotation = parent.transform.rotation;
         child.transform.parent   = parent.container;
         child.container          = parent.container;
         parent.childPart         = child;
         //child.parentPart = parent;
         createdNew = true;
     }
     else
     {
         createdNew = false;
         if (!parent.childPart.isPregnant)
         {
             parent.childPart.isPregnant = true;
             var commandEvent = new CommandEvent(new PregnancyCommand(parent.childPart, position, true), 1);
             EgoEvents <CommandEvent> .AddEvent(commandEvent);
         }
     }
 }
        void OnTriggerExit2D(Collider2D collider2d)
        {
            var e = new TriggerExit2DEvent(egoComponent, collider2d.gameObject.GetComponent <EgoComponent>(),
                                           collider2d);

            EgoEvents <TriggerExit2DEvent> .AddEvent(e);
        }
 private void Handle(CheckEndOfLineEvent e)
 {
     //
     // Check to see if Ego entity "car" or "opps_x" has crossed the finish line
     //
     constraint.ForEachGameObject(
         (egoComp, endofline) =>
     {
         //
         // If any car crosses the finish line, then game ends
         //
         if (e.car.transform.position.y > endofline.transform.position.y)
         {
             //
             // Following is a play line to see how to add a component to an entity
             // Issue the pause component to the car the just crossed the finish line
             //
             Ego.AddComponent <PauseComponent>(egoComp);
             //
             // Invoke the event that causes the EndOfGameSystem to turn on "Game Over" text
             //
             EgoEvents <EndOfGameEvent> .AddEvent(new EndOfGameEvent(true));
         }
     }
         );
 }
        void OnCollisionStay2D(Collision2D collision)
        {
            var e = new CollisionStay2DEvent(egoComponent, collision.gameObject.GetComponent <EgoComponent>(),
                                             collision);

            EgoEvents <CollisionStay2DEvent> .AddEvent(e);
        }
Example #8
0
    public override void Update()
    {
        //HasSpeedUpComponent speedUp;
        constraint.ForEachGameObject((egoComponent, transform, powerUpComponent, movementComponent) => {
            if (powerUpComponent.powerUpActivated)
            {
                movementComponent.flySpeed  = 4;
                movementComponent.curvspeed = 2.9f;
                Ego.DestroyComponent <HasSpeedUpComponent>(egoComponent);
            }

            if (powerUpComponent.powerUpActivated)
            {
                powerUpComponent.playerPowerUpTimer += Time.deltaTime;
            }
            if (powerUpComponent.playerPowerUpTimer >= 2)
            {
                powerUpComponent.playerPowerUpTimer = -1f;
                movementComponent.flySpeed          = 2;
                movementComponent.curvspeed         = 2;
                powerUpComponent.powerUpActivated   = false;
            }

            HasSpeedUpComponent speed;
            if ((KutiInput.Instance.GetButtonDown(powerUpComponent.powerUpButton) || Input.GetKey(powerUpComponent.powerUpButtonPC) && egoComponent.TryGetComponents(out speed)))
            {
                var ev = new OnActivatePowerUp(powerUpComponent.playerID, egoComponent);
                EgoEvents <OnActivatePowerUp> .AddEvent(ev);
            }
        });
    }
        public static EgoComponent GenerateGun()
        {
            EntityBuilder entity = EntityBuilder.Generate().WithPhysics(typeof(BoxCollider2D), .5f).WithGraphics("Images/gun");
            Interactive   c      = Ego.AddComponent <Interactive>(entity);

            c.InteractAction = e => EgoEvents <AttachEvent> .AddEvent(new AttachEvent(c.GetComponent <EgoComponent>(), e));

            Ego.AddComponent <Mountpoint>(entity);
            Useable u = Ego.AddComponent <Useable>(entity);

            u.UseAction = e => {
                Transform transform = u.transform;
                double    theta     = transform.rotation.eulerAngles.z * Mathf.Deg2Rad;
                Vector2   force     = new Vector2((float)Math.Cos(theta), (float)Math.Sin(theta));
                force.Normalize();
                // generate new projectile, add motion in direction at speed

                EgoComponent bullet = Ego.AddGameObject(GenerateBullet().gameObject);
                bullet.transform.rotation = transform.rotation;
                bullet.transform.position = transform.position;
                bullet.gameObject.SetActive(true);
                EgoEvents <SetVelocityByEvent> .AddEvent(new SetVelocityByEvent(bullet, force));
            };
            return(entity);
        }
Example #10
0
 public static void SetParent(EgoComponent parent, EgoComponent child)
 {
     if (child == null)
     {
         Debug.LogWarning("Cannot set the Parent of a null Child");
     }
     EgoEvents <SetParent> .AddEvent(new SetParent( parent, child ));
 }
Example #11
0
    public static EgoComponent AddGameObject(GameObject gameObject)
    {
        var egoComponent = AddGameObjectToChildren(gameObject.transform);

        EgoEvents <AddedGameObject> .AddEvent(new AddedGameObject( gameObject, egoComponent ));

        return(egoComponent);
    }
Example #12
0
    void TryDash(Movement movement, ActorComponent actor)
    {
        movement.velocity.x  = (-movement.velocity.x) + Mathf.Sign(movement.velocity.x) * 30f;
        movement.velocity.y -= movement.velocity.y;
        var e = new DashEvent(actor.guid, movement.velocity);

        EgoEvents <DashEvent> .AddEvent(e);
    }
Example #13
0
    public static void Destroy(GameObject gameObject)
    {
        var egoComponent = gameObject.GetComponent <EgoComponent>();

        EgoEvents <DestroyedGameObject> .AddEvent(new DestroyedGameObject( gameObject, egoComponent ));

        EgoCleanUp.Destroy(gameObject);
    }
Example #14
0
    public static void DestroyGameObject(EgoComponent egoComponent)
    {
        var gameObject = egoComponent.gameObject;

        EgoEvents <DestroyedGameObject> .AddEvent(new DestroyedGameObject( gameObject, egoComponent ));

        EgoCleanUp.Destroy(egoComponent.gameObject);
    }
 void SetOffGround(BottomComponent bottom)
 {
     if (bottom.touchingGround)
     {
         var e = new TouchGroundEvent(bottom.actor.guid, false);
         EgoEvents <TouchGroundEvent> .AddEvent(e);
     }
     bottom.touchingGround = false;
 }
Example #16
0
 void Handle(JumpEvent e)
 {
     constraint.ForEachGameObject((egoComponent, transform, movement) =>
     {
         MovementComponent.ViewDirection moveDirectionVar;
         moveDirectionVar = movement.viewDirection;
         EgoEvents <JumpEvent> .AddEvent(new JumpEvent(moveDirectionVar.ToString()));
     });
 }
 void SetOnGround(BottomComponent bottom)
 {
     if (!bottom.touchingGround)
     {
         var e = new TouchGroundEvent(bottom.actor.guid, true);
         EgoEvents <TouchGroundEvent> .AddEvent(e);
     }
     bottom.touchingGround = true;
 }
Example #18
0
 public override void Update()
 {
     constraint.ForEachGameObject((ego, ready) => {
         if (ready.playerOneReady && ready.playerTwoReady)
         {
             var e = new SwitchSceneEvent();
             EgoEvents <SwitchSceneEvent> .AddEvent(e);
         }
     });
 }
Example #19
0
    public override void FixedUpdate()
    {
        //CHeck for overlapping points with SpceTrail
        constraint.ForEachGameObject((egoComponent, spriteRenderer, collisionComponent, lineRenderer, movement, player) => {
            if (movement.myFlyStatus == MovementComponent.FlyStatus.flying)
            {
                constraint.ForEachGameObject((egoComponent2, spriteRenderer2, collisionComponent2, lineRenderer2, movement2, player2) => {
                    if (player.playerID != player2.playerID)
                    {
                        Collider2D[] hits = new Collider2D[1];
                        //check lineRenderer for overlapping points
                        for (int i = 0; i < lineRenderer2.lineRendererPointCount; i++)
                        {
                            bool b = false;
                            Physics2D.OverlapPointNonAlloc(lineRenderer2.gameObject.GetComponent <LineRenderer> ().GetPosition(i), hits, 1);
                            foreach (Collider2D coll in hits)
                            {
                                if (coll != null && movement2.myFlyStatus == MovementComponent.FlyStatus.flying)
                                {
                                    string collTag;
                                    if (player2.playerID == 1)
                                    {
                                        collTag = "Player2";
                                    }
                                    else if (player2.playerID == 2)
                                    {
                                        collTag = "Player";
                                    }
                                    else
                                    {
                                        collTag = "none";
                                    }

                                    if (coll.tag == collTag)
                                    {
                                        DamageEvent e = new DamageEvent(player.playerID, true);
                                        Debug.Log("Damage Event called cause line renderer overlap for player " + player.playerID);
                                        EgoEvents <DamageEvent> .AddEvent(e);
                                        EgoEvents <DamageEvent> .AddEvent(e);                                        //cause hacking skills are true
                                        b = true;
                                        break;
                                    }
                                }
                            }
                            if (b)
                            {
                                break;
                            }
                        }
                    }
                });
            }
        });
    }
Example #20
0
 void Handle(TickEvent e)
 {
     constraint.ForEachGameObject((egoComponent, transform, movement) =>
     {
         movement.currentMovement = movement.nextMovement;
         if (!e.reverse)
         {
             var commandEvent = new CommandEvent(new MovementCommand(transform, movement.currentMovement, movement), 0);
             EgoEvents <CommandEvent> .AddEvent(commandEvent);
         }
     });
 }
Example #21
0
        public override CompletionState Act(EgoComponent root)
        {
            Hardpoint hardpoint;

            if (root.TryGetComponents(out hardpoint) && hardpoint.Attached != null)
            {
                EgoEvents <DetachEvent> .AddEvent(new DetachEvent(hardpoint.Attached));

                return(CompletionState.SUCCESS);
            }
            return(CompletionState.FAIL);
        }
    protected override void Execute()
    {
        edible.gameObject.SetActive(false);
        //TODO this should be handled by the edibles strategy instead
        SnakePartComponent snakePart;

        if (mouth.TryGetComponents(out snakePart))
        {
            var pregEvent = new PregnancyEvent(snakePart);
            EgoEvents <PregnancyEvent> .AddEvent(pregEvent);
        }
    }
Example #23
0
    void Handle(CountDownEvent e)
    {
        constraint.ForEachGameObject((egoComponent, mainMenuComponent) => {
            mainMenuComponent.myMenuStatus = MainMenuComponent.MenuStatus.inactive;
            egoComponent.gameObject.SetActive(false);
        });
        InitializeNewGameEvent newGame = new InitializeNewGameEvent();

        EgoEvents <InitializeNewGameEvent> .AddEvent(newGame);

        Debug.Log("started new game");
    }
Example #24
0
 public override void FixedUpdate()
 {
     constraint.ForEachGameObject((egoComponent, transform, lineRenderer, lineRendererComponent) => {
         lineRendererComponent.timeElapsed += Time.deltaTime;
         if (lineRendererComponent.lineRendererTimeThreshold <= lineRendererComponent.timeElapsed)
         {
             var e = new LineRendererDrawEvent();
             EgoEvents <LineRendererDrawEvent> .AddEvent(e);
             lineRendererComponent.timeElapsed -= lineRendererComponent.lineRendererTimeThreshold;
         }
     });
 }
Example #25
0
    void Handle(CollisionEnter2DEvent e)
    {
        Debug.Log("Enter Collision Event");
        constraint.ForEachGameObject((egoComponent, spriteRenderer, collisionComponent, lineRenderer, movement, player) => {
            SpriteRenderer shipSprite;
            PlayerComponent playerC;
            //Return if colliding Object has no SpriteRenderer
            if (!e.egoComponent1.TryGetComponents(out shipSprite))
            {
                return;
            }
            //Else change Sprite to Explosion, if you collided with a spaceship
            else if (e.egoComponent2.TryGetComponents(out playerC) && e.egoComponent1.TryGetComponents(out playerC))
            {
                //e.egoComponent1.GetComponent<SpriteRenderer>().sprite = collisionComponent.explodingSprite;
                if (e.egoComponent1.GetComponent <MovementComponent>().myFlyStatus == MovementComponent.FlyStatus.flying &&
                    e.egoComponent2.GetComponent <MovementComponent>().myFlyStatus == MovementComponent.FlyStatus.flying)
                {
                    var ev = new DamageEvent(player.playerID, false);
                    Debug.Log("Damage Event called cause players collided");
                    EgoEvents <DamageEvent> .AddEvent(ev);
                }

                //Unschön, vielleicht geht das ja auch aus dem DamageEvent heraus?

                /*MovementComponent movementComponent;
                 * if (!e.egoComponent1.TryGetComponents(out movementComponent)) {
                 *      return;
                 * }
                 * else {
                 *      movementComponent.myFlyStatus = MovementComponent.FlyStatus.notFlying;
                 * }*/
            }

            PowerUpComponent powerup;
            if (!e.egoComponent2.TryGetComponents(out powerup))
            {
                return;
            }
            else if (e.egoComponent2.TryGetComponents(out powerup))
            {
                Debug.Log("powerup collected");
                Ego.AddComponent <HasSpeedUpComponent>(e.egoComponent1);
                e.egoComponent1.GetComponent <PlayerPowerUpComponent>().playerPowerUpTimer = 0;
                //e.egoComponent2.gameObject.SetActive(false);
                e.egoComponent2.gameObject.GetComponent <SpriteRenderer>().enabled   = false;
                e.egoComponent2.gameObject.GetComponent <CircleCollider2D>().enabled = false;
                var ev = new OnSpeedUpPickUp(e.egoComponent1.GetComponent <PlayerComponent>().playerID);
                EgoEvents <OnSpeedUpPickUp> .AddEvent(ev);
            }
        });
    }
Example #26
0
    public static EgoComponent AddGameObject(GameObject gameObject)
    {
        var egoComponent = gameObject.GetComponent <EgoComponent>();

        if (!egoComponent)
        {
            egoComponent = gameObject.AddComponent <EgoComponent>();
        }
        egoComponent.CreateMask();
        EgoEvents <AddedGameObject> .AddEvent(new AddedGameObject( gameObject, egoComponent ));

        return(egoComponent);
    }
Example #27
0
        public override void Update()
        {
            constraint.ForEachGameObject((egoComponent, movementInput) => {
                float horizontal = Input.GetAxisRaw(movementInput.HorizontalAxis);
                float vertical   = Input.GetAxisRaw(movementInput.VerticalAxis);
                EgoEvents <SetVelocityByEvent> .AddEvent(new SetVelocityByEvent(egoComponent, new Vector2(horizontal, vertical)));

                Vector2 cursorPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                float theta       = InputUtilities.AngleBetween(egoComponent.transform.position, cursorPos);
                EgoEvents <RotateToEvent> .AddEvent(new RotateToEvent(egoComponent, theta));
            }
                                         );
        }
Example #28
0
    public static C AddComponent <C>(EgoComponent egoComponent) where C : Component
    {
        C component = null;

        if (!egoComponent.TryGetComponents <C>(out component))
        {
            component = egoComponent.gameObject.AddComponent <C>();
            egoComponent.mask[ComponentIDs.Get(typeof(C))] = true;
            EgoEvents <AddedComponent <C> > .AddEvent(new AddedComponent <C>(component, egoComponent));
        }

        return(component);
    }
Example #29
0
 void Handle(PregnancyEvent e)
 {
     constraint.ForEachGameObject((egoComponent, transform, snakePart) =>
     {
         if (e.newParent == snakePart)
         {
             if (!snakePart.isPregnant)
             {
                 var commandEvent = new CommandEvent(new PregnancyCommand(snakePart, transform.position, true), 0);
                 EgoEvents <CommandEvent> .AddEvent(commandEvent);
             }
         }
     });
 }
Example #30
0
    public override void Update()
    {
        constraint.ForEachGameObject((egoComponent, tick) =>
        {
            if (tick.reverse && tick.currentTick < 1)
            {
                tick.reverse = false;
            }

            if (!tick.pause)
            {
                tick.partialTick += Time.deltaTime * tick.tickRate;

                if (tick.partialTick >= 1f)
                {
                    if (!tick.reverse)
                    {
                        tick.currentTick++;
                    }
                    else
                    {
                        tick.currentTick--;
                    }

                    tick.partialTick = 0;

                    var e = new TickEvent(tick.currentTick, tick.reverse);
                    EgoEvents <TickEvent> .AddEvent(e);
                }
            }
            else
            {
                if (tick.debugStep == true)
                {
                    tick.debugStep = false;
                    if (!tick.reverse)
                    {
                        tick.currentTick++;
                    }
                    else
                    {
                        tick.currentTick--;
                    }
                    var e = new TickEvent(tick.currentTick, tick.reverse);
                    EgoEvents <TickEvent> .AddEvent(e);
                }
            }
        });
    }