public override int GetHashCode()
    {
        int hash = 1;

        if (Uid != 0)
        {
            hash ^= Uid.GetHashCode();
        }
        if (MoveDirectionX != 0)
        {
            hash ^= MoveDirectionX.GetHashCode();
        }
        if (MoveDirectionY != 0)
        {
            hash ^= MoveDirectionY.GetHashCode();
        }
        if (AttackType != 0)
        {
            hash ^= AttackType.GetHashCode();
        }
        if (AttackDirectionX != 0)
        {
            hash ^= AttackDirectionX.GetHashCode();
        }
        if (AttackDirectionY != 0)
        {
            hash ^= AttackDirectionY.GetHashCode();
        }
        if (_unknownFields != null)
        {
            hash ^= _unknownFields.GetHashCode();
        }
        return(hash);
    }
Exemple #2
0
    public override void _Process(float delta)
    {
        if (enable_difficulty == true)
        {
            difficulty_coef = lvl.get_difficulty();
        }
        difficulty_coef = (difficulty_coef < max_diff_coef) ? difficulty_coef : max_diff_coef;

        if (rotation_speed_direction != 0)
        {
            float rotation = Rotation + rotation_speed_direction * delta;
            Rotation = rotation;
        }

        // change position
        if (move_speed > 0)
        {
            var current_pos = Position;

            if (distance_x > 0)
            {
                float direction_x = (move_direction_x == MoveDirectionX.Right)? 1 : -1;
                float step_x      = (move_speed + difficulty_coef) * delta;
                complete_distance_x += step_x;
                current_pos.x        = current_pos.x + step_x * direction_x;
            }

            if (distance_y > 0)
            {
                float direction_y = (move_direction_y == MoveDirectionY.Down) ? 1 : -1;
                float step_y      = (move_speed + difficulty_coef) * delta;
                complete_distance_y += step_y;
                current_pos.y        = current_pos.y + step_y * direction_y;
            }
            Position = current_pos;

            if (complete_distance_x > distance_x)
            {
                complete_distance_x = 0;
                move_direction_x    = (move_direction_x == MoveDirectionX.Right) ? MoveDirectionX.Left : MoveDirectionX.Right;
            }

            if (complete_distance_y > distance_y)
            {
                complete_distance_y = 0;
                move_direction_y    = (move_direction_y == MoveDirectionY.Down) ? MoveDirectionY.Up : MoveDirectionY.Down;
            }
        }
    }
Exemple #3
0
    void InputControl()
    {
        Vector3 position = transform.position;

        if (Input.GetKeyDown(KeyCode.Space))
        {
            GameObject bullet = Instantiate(bulletPrefab, position, Quaternion.identity);
            bullet.transform.parent = screen.transform;
        }
        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            directionY = MoveDirectionY.Down;
        }
        if (Input.GetKeyUp(KeyCode.DownArrow))
        {
            directionY = MoveDirectionY.Stop;
        }

        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            directionY = MoveDirectionY.Up;
        }
        if (Input.GetKeyUp(KeyCode.UpArrow))
        {
            directionY = MoveDirectionY.Stop;
        }

        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            directionX = MoveDirectionX.Left;
        }
        if (Input.GetKeyUp(KeyCode.LeftArrow))
        {
            directionX = MoveDirectionX.Stop;
        }

        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            directionX = MoveDirectionX.Right;
        }
        if (Input.GetKeyUp(KeyCode.RightArrow))
        {
            directionX = MoveDirectionX.Stop;
        }


        Vector3 newPosition = transform.position;

        switch (directionY)
        {
        case MoveDirectionY.Down:
        {
            if (position.y - delta > limits.z)
            {
                newPosition = new Vector3(newPosition.x, newPosition.y - delta, newPosition.z);
            }
            break;
        }

        case MoveDirectionY.Up:
        {
            if (position.y + delta < limits.w)
            {
                newPosition = new Vector3(newPosition.x, newPosition.y + delta, newPosition.z);
            }
            break;
        }
        }

        switch (directionX)
        {
        case MoveDirectionX.Left:
        {
            if (position.x - delta > limits.x)
            {
                newPosition = new Vector3(newPosition.x - delta, newPosition.y, newPosition.z);
            }
            break;
        }

        case MoveDirectionX.Right:
        {
            if (position.x + delta < limits.y)
            {
                newPosition = new Vector3(newPosition.x + delta, newPosition.y, newPosition.z);
            }
            break;
        }
        }

        if (position != newPosition)
        {
            transform.position = newPosition;
        }
    }