Example #1
0
    public Entity()
    {
        gameobjectComponent = new GameobjectComponent()
        {
            entity = this
        };
        identity = new Identity()
        {
            entity = this
        };


        //// pawn
        //inputComponent = new InputComponent() { entity = this };
        //moveComponent = new MoveComponent() { entity = this };
        //aiComponent = new AiComponent() { entity = this };

        //// tank bodywork or gun
        //tankComponent = new TankComponent() { entity = this };
        //gunComponent = new GunComponent() { entity = this };
        //buffComponent = new BuffComponent() { entity = this };

        //// bullet
        //bulletComponent = new BulletComponent() { entity = this };
    }
Example #2
0
    public void InitBodywork(int bodyworkID, TankComponent tank, MoveComponent move, GameobjectComponent gameobjectComponent)
    {
        gameobjectComponent.animator.SetInteger("state", 0); // enter the idle animation
        //gameobjectComponent.animator.SetInteger("init", 2);

        //EquipBodywork(EquipmentManager.GetInstance().GetBodywork(bodyworkID), tank, move, gameobjectComponent);
    }
Example #3
0
    public void Update(GunComponent gunComponent, InputComponent input, GameobjectComponent gameobjectComponent)
    {
        if (gunComponent == null || gunComponent.enable == false)
        {
            return;
        }

        if (gunComponent.entity.identity.isAIControl == false)
        {
            SetDirection(gunComponent, input, gameobjectComponent.transform);
        }

        gunComponent.laserTimer.Update();
        if (gunComponent.laserTimer.isRunning == false)
        {
            if (InputSystem.GetHoldAction(input, "laser"))
            {
                gunComponent.laserTimer.Enter();
                EmitLaser(gunComponent, gameobjectComponent.transform);
                return;
            }
        }

        gunComponent.fireTimer.Update();
        if (gunComponent.fireTimer.isRunning == false)
        {
            if (InputSystem.GetHoldAction(input, "fire"))
            {
                gunComponent.fireTimer.Enter();
                Fire(gunComponent, gameobjectComponent.transform);
            }
        }
    }
Example #4
0
    public void Update(MoveComponent move, GameobjectComponent gameobjectComponent)
    {
        if (move == null || move.enable == false)
        {
            return;
        }
        Transform     transform = gameobjectComponent.transform;
        BoxCollider2D collider  = gameobjectComponent.collider;

        if (move.needMove == true)
        {
            Vector3 nextPosition = transform.position + transform.up * move.moveSpeed * Time.fixedDeltaTime;
            if (move.collisionDetection == true)
            {
                collider.enabled = false;
                Collider2D otherCollider = Physics2D.OverlapBox(nextPosition, collider.size, 0);
                if (otherCollider != null && !otherCollider.tag.Equals("tree"))
                {
                    nextPosition = transform.position;
                }
            }
            transform.position = nextPosition;

            if (collider.enabled == false)
            {
                collider.enabled = true;
            }
        }
    }
Example #5
0
    protected void EquipGun(GunData gunData, GunComponent gunComponent, GameobjectComponent gameobjectComponent)
    {
        gunComponent.gunData = gunData;
        var sprite = Resources.Load <Sprite>(gunData.spritePath);

        Debug.Log(gameobjectComponent);
        gameobjectComponent.spriteRenderer.sprite = sprite;
    }
Example #6
0
 public void Update(TankComponent tank, InputComponent input, MoveComponent move, GameobjectComponent gameobjectComponent)
 {
     if (tank == null || tank.enable == false)
     {
         return;
     }
     //Debug.Log("contorller system update, entity tag: " + tank.entity.identity.tag);
     MoveControl(tank, input, move, gameobjectComponent.transform, gameobjectComponent);
 }
Example #7
0
 public void InitGun(int gunID, GunComponent gunComponent, GameobjectComponent gameobjectComponent)
 {
     if (gunComponent == null || gunComponent.enable == false)
     {
         return;
     }
     Debug.Log("GunSystem.Init");
     EquipGun(EquipmentManager.GetInstance().GetGun(1), gunComponent, gameobjectComponent);
 }
Example #8
0
    //void GenerateGun(Entity entity)
    //{
    //    Entity gunEntity = world.entitySystem.NewPawn(gunPrefab, entity.gameobjectComponent.transform.position);
    //    gunEntity.identity.master = entity;
    //}

    void EquipBodywork(Bodywork bodywork, TankComponent tank, MoveComponent move, GameobjectComponent gameobjectComponent)
    {
        tank.bodywork = bodywork;
        gameobjectComponent.animator.SetInteger("init", bodywork.animTrigger);
        var sprite = Resources.Load <Sprite>(bodywork.spritePath);

        gameobjectComponent.spriteRenderer.sprite = sprite;

        move.moveSpeed = bodywork.moveSpeed;
        //GetComponent<Life>().SetHP(b.hp);
    }
Example #9
0
    //void GenerateGun(Entity entity)
    //{
    //    Entity gunEntity = world.entitySystem.NewPawn(gunPrefab, entity.gameobjectComponent.transform.position);
    //    gunEntity.identity.master = entity;
    //}

    void EquipBodywork(Bodywork bodywork, TankComponent tank, MoveComponent move, GameobjectComponent gameobjectComponent)
    {
        tank.bodywork = bodywork;
        gameobjectComponent.animator.SetInteger("init", bodywork.animTrigger);
        var sprite = Resources.Load <Sprite>(bodywork.spritePath);

        gameobjectComponent.spriteRenderer.sprite = sprite;

        move.moveSpeed = bodywork.moveSpeed;
        world.lifeSystem.SetData(move.entity.lifeComponent, bodywork.hp);

        Debug.Log("EquipBodywork:" + bodywork.spritePath);
    }
Example #10
0
    public void Update(Identity identity, EffectComponent effect, GameobjectComponent gameobjectComponent)
    {
        if (effect.enable == false)
        {
            return;
        }

        Animator          animator = gameobjectComponent.animator;
        AnimatorStateInfo info     = animator.GetCurrentAnimatorStateInfo(0);

        if (info.normalizedTime >= 1.0f)
        {
            world.entitySystem.DestroyEntity(identity.entity);
        }
    }
Example #11
0
    public void Update(Identity identity, LaserComponent laser, GameobjectComponent gameobjectComponent)
    {
        if (laser == null || laser.enable == false)
        {
            return;
        }

        if (Time.time < laser.exisingTime)
        {
            laser.attackTimer += Time.deltaTime;
            if (laser.attackTimer >= laser.attackInterval)
            {
                laser.attackTimer = 0;
                Transform    transform = gameobjectComponent.transform;
                RaycastHit2D hit       = Physics2D.Raycast(transform.position, transform.up);
                Debug.DrawLine(transform.position, transform.up * 700);
                if (hit.collider != null)
                {
                    //Debug.DrawLine(transform.position, hit.point);
                    EntityHolder entityHolder = hit.collider.gameObject.GetComponent <EntityHolder>();
                    if (entityHolder == null)
                    {
                        return;
                    }
                    Entity hitEntity = entityHolder.entity;
                    if (hitEntity != identity.master)
                    {
                        Debug.Log("LaserSystem, camps:" + hitEntity.identity.camp.ToString() + identity.camp.ToString());
                        if (hitEntity.identity.camp != identity.camp && hitEntity.lifeComponent.enable == true)
                        {
                            world.lifeSystem.ChangeHP(hitEntity.lifeComponent, -laser.damage);
                            world.effectSystem.CreateExplosion(hit.point, "small");
                        }
                    }
                }
            }
        }
        else
        {
            world.entitySystem.DestroyEntity(identity.entity);
        }
    }
Example #12
0
    public Entity CreateGunEntity(GameobjectComponent gameobjectComponent)
    {
        // create the entity for gun
        Transform  transform = gameobjectComponent.transform;
        GameObject gunGo     = null;

        Transform[] children = transform.GetComponentsInChildren <Transform>();
        foreach (var t in children)
        {
            if (t.tag == "gun")
            {
                gunGo = t.gameObject;
                break;
            }
        }
        Entity gunEntity = world.entitySystem.CreateFor(gunGo);

        //GenerateGun(entity);
        return(gunEntity);
    }
Example #13
0
    public void Update(GunComponent gunComponent, InputComponent input, GameobjectComponent gameobjectComponent)
    {
        if (gunComponent == null || gunComponent.enable == false)
        {
            return;
        }


        SetDirection(gunComponent, input, gameobjectComponent.transform);
        gunComponent.timeCount += Time.deltaTime;
        if (gunComponent.timeCount >= gunComponent.shootCd)
        {
            for (int i = 0; i < GunComponent.actions.GetLength(0); i++)
            {
                if (InputSystem.GetHoldAction(input, GunComponent.actions[i]) == true)
                {
                    gunComponent.timeCount = 0;
                    Fire(gunComponent, gameobjectComponent.transform);
                    break;
                }
            }
        }
    }
Example #14
0
    public void Update(Identity identity, BulletComponent bullet, MoveComponent move, GameobjectComponent gameobjectComponent)
    {
        if (bullet == null || bullet.enable == false)
        {
            return;
        }

        Transform     transform     = gameobjectComponent.transform;
        BoxCollider2D boxCollider2D = gameobjectComponent.collider;
        Animator      animator      = gameobjectComponent.animator;

        boxCollider2D.enabled = false;
        Collider2D otherCollider = Physics2D.OverlapBox(transform.position, boxCollider2D.size, transform.rotation.z * Mathf.Deg2Rad);

        if (otherCollider != null)
        {
            OnCollision(otherCollider, identity, bullet, animator, boxCollider2D, move);
        }
        boxCollider2D.enabled = true;

        bullet.currentDistance += move.moveSpeed * Time.fixedDeltaTime;

        AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0);

        if (bullet.currentDistance > bullet.shootDistance)
        {
            world.entitySystem.DestroyEntity(identity.entity);
        }
        else if (info.normalizedTime >= 1.0f)
        {
            world.entitySystem.DestroyEntity(identity.entity);
        }
    }
Example #15
0
    void MoveControl(TankComponent tank, InputComponent input, MoveComponent move, Transform transform, GameobjectComponent gameobjectComponent)
    {
        float spinSpeed   = tank.spinSpeed;
        bool  moveForward = InputSystem.GetHoldAction(input, "move_up");
        bool  moveBack    = InputSystem.GetHoldAction(input, "move_down");
        bool  spinLeft    = InputSystem.GetHoldAction(input, "move_left");
        bool  spinRight   = InputSystem.GetHoldAction(input, "move_right");

        move.needMove = false;
        if (moveForward || moveBack)
        {
            if (moveForward)
            {
                move.moveDirection = 1;
            }
            else if (moveBack)
            {
                move.moveDirection = -1;
            }
            move.needMove = true;
            spinSpeed    /= 2;
            gameobjectComponent.animator.SetInteger("state", 1);
            if (tank.trackLeftAnimator != null && tank.trackRightAnimator != null)
            {
                tank.trackLeftAnimator.SetBool("move", true);
                tank.trackRightAnimator.SetBool("move", true);
            }
        }
        else
        {
            gameobjectComponent.animator.SetInteger("state", 0);
            if (tank.trackLeftAnimator != null && tank.trackRightAnimator != null)
            {
                tank.trackLeftAnimator.SetBool("move", false);
                tank.trackRightAnimator.SetBool("move", false);
            }
        }

        if (spinLeft)
        {
            transform.Rotate(new Vector3(0, 0, spinSpeed));
        }
        else if (spinRight)
        {
            transform.Rotate(new Vector3(0, 0, -spinSpeed));
        }


        BoxCollider2D collider = gameobjectComponent.collider;

        if (move.needMove == true)
        {
            Vector3 directionVec;
            if (move.moveDirection == 1)
            {
                directionVec = transform.up;
            }
            else
            {
                directionVec = -transform.up;
            }
            Vector3 nextPosition = transform.position + directionVec * move.moveSpeed * Time.fixedDeltaTime;
            if (move.collisionDetection == true)
            {
                collider.enabled = false;
                Collider2D otherCollider = Physics2D.OverlapBox(transform.position + directionVec * 35, new Vector2(40, 20), transform.rotation.eulerAngles.z);
                if (otherCollider != null && !otherCollider.tag.Equals("tree"))
                {
                    nextPosition = transform.position;
                }
            }
            transform.position = nextPosition;

            if (collider.enabled == false)
            {
                collider.enabled = true;
            }
        }
    }
Example #16
0
    void MoveControl(TankComponent tank, InputComponent input, MoveComponent move, Transform transform, GameobjectComponent gameobjectComponent)
    {
        foreach (var item in TankComponent.moveActionDict)
        {
            if (InputSystem.GetHoldAction(input, item.Key))
            {
                move.moveDirection = item.Value;
            }
        }

        move.needMove = false;
        foreach (var item in TankComponent.moveActionDict)
        {
            if (InputSystem.GetHoldAction(input, item.Key))
            {
                move.needMove = true;

                break;
            }
        }

        if (move.needMove == true)
        {
            //Debug.Log("need move is true");
            gameobjectComponent.animator.SetInteger("state", 1);
            transform.rotation = Quaternion.Euler(0, 0, move.moveDirection * 90);
        }
        else
        {
            move.moveDirection = -1;
            gameobjectComponent.animator.SetInteger("state", 0);
        }
    }
Example #17
0
    public void Update(Identity identity, BulletComponent bullet, MoveComponent move, GameobjectComponent gameobjectComponent)
    {
        if (bullet == null || bullet.enable == false)
        {
            return;
        }

        Transform     transform     = gameobjectComponent.transform;
        BoxCollider2D boxCollider2D = gameobjectComponent.collider;

        if (!identity.isDead)
        {
            boxCollider2D.enabled = false;
            Collider2D otherCollider = Physics2D.OverlapBox(transform.position, boxCollider2D.size, transform.rotation.eulerAngles.z);
            if (otherCollider != null)
            {
                OnCollision(otherCollider, identity, bullet, boxCollider2D, move);
            }
            boxCollider2D.enabled = true;

            MoveSystem.MoveForward(transform, move.moveSpeed);
            bullet.currentDistance += move.moveSpeed * Time.fixedDeltaTime;
            if (bullet.currentDistance > bullet.shootDistance)
            {
                world.entitySystem.DestroyEntity(identity.entity);
            }
        }
    }