Example #1
0
    public int detectEnemy(eMapDirection dir)
    {
        int stepDistance = 0;
        int xStep = 0; int yStep = 0;

        switch (dir)
        {
        case eMapDirection.LEFT:
            xStep = -1; yStep = 0;
            break;

        case eMapDirection.RIGHT:
            xStep = 1; yStep = 0;
            break;

        case eMapDirection.TOP:
            xStep = 0; yStep = -1;
            break;

        case eMapDirection.BOTTOM:
            xStep = 0; yStep = 1;
            break;
        }

        int _2dx = -1; int _2dy = -1;

        GameLevelCommon._3dTo2d(targetToMove.x, targetToMove.z, out _2dx, out _2dy);
        eBrickType gridType = eBrickType.EMPTY;

        while (true)
        {
            _2dx     = _2dx + xStep;
            _2dy     = _2dy + yStep;
            gridType = (eBrickType)GameLevelCommon.instance.navData[_2dy, _2dx];
            if (gridType == eBrickType.EMPTY)
            {
                ++stepDistance;
            }
            else
            {
                if (gridType == eBrickType.ACTOR)
                {
                    ++stepDistance;
                    return(stepDistance);
                }
                else if (gridType == eBrickType.OCEAN || gridType == eBrickType.AWARD ||
                         gridType == eBrickType.SOIL || gridType == eBrickType.STEEL)
                {
                    ++stepDistance;
                }
                else
                {
                    return(-1);
                }
            }
        }
    }
Example #2
0
        public Brick(int x, int y, eBrickType brickType, Reward.eRewardType rewardType, eColor color)
        {
            try
            {
                base.location   = new Point(x, y);
                this.color      = color;
                this.brickType  = brickType;
                this.rewardType = rewardType;

                switch (brickType)
                {
                case eBrickType.Normal:         this.lives = 1; break;

                case eBrickType.DoubleHit:      this.lives = 2; break;

                case eBrickType.Indestructible: this.lives = 10000; break;

                default:                        this.lives = 1; break;
                }

                string path = Application.StartupPath + "\\" + ConfigurationManager.AppSettings["pathImages"];
                switch (color)
                {
                case eColor.Black:  base.image = Image.FromFile(path + "Brick_Black.png", false); break;

                case eColor.Blue:   base.image = Image.FromFile(path + "Brick_Blue.png", false); break;

                case eColor.Green:  base.image = Image.FromFile(path + "Brick_Green.png", false); break;

                case eColor.Gray:   base.image = Image.FromFile(path + "Brick_Grey.png", false); break;

                case eColor.Pink:   base.image = Image.FromFile(path + "Brick_Pink.png", false); break;

                case eColor.Red:    base.image = Image.FromFile(path + "Brick_Red.png", false); break;

                case eColor.White:  base.image = Image.FromFile(path + "Brick_White.png", false); break;

                case eColor.Yellow: base.image = Image.FromFile(path + "Brick_Yellow.png", false); break;

                default:            base.image = Image.FromFile(path + "Brick_Default.png", false); break;
                }

                random = new Random(DateTime.Now.Millisecond);
            }

            catch (FileNotFoundException ex1) { MessageBox.Show("File not found: " + ex1.FileName, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); throw ex1; }
            catch (Exception ex2) { throw ex2; }
        }
Example #3
0
    public behaviac.EBTStatus canDestroyBrick(int step)
    {
        eMapDirection direction = (eMapDirection)Mathf.RoundToInt(currentOrientation / 90.0f);
        eBrickType    brickType = GameLevelCommon.instance.getBrickType(this, direction, step);

        if ((int)brickType < (int)eBrickType.STEEL)
        {
            return(behaviac.EBTStatus.BT_SUCCESS);
        }
        else if ((int)brickType < (int)eBrickType.OCEAN && damageLevel > 1)
        {
            return(behaviac.EBTStatus.BT_SUCCESS);
        }
        else
        {
            return(behaviac.EBTStatus.BT_FAILURE);
        }
    }
Example #4
0
    public void updateGridInfo()
    {
        int _2dx = -1; int _2dy = -1;

        GameLevelCommon._3dTo2d(targetToMove.x, targetToMove.z, out _2dx, out _2dy);
        GameLevelCommon.instance.navData[_2dy, _2dx] = (byte)eBrickType.ACTOR;
        if ((gridX > 0 && gridX < 24 && gridY > 0 && gridY < 24) &&
            (gridX != _2dx || gridY != _2dy))
        {
            eBrickType originType = (eBrickType)GameLevelCommon.instance.navData[gridY, gridX];
            if (originType != eBrickType.ACTOR)
            {
                Debug.LogWarning(this.GetName());
                Debug.LogWarning(originType);
                Debug.LogWarning("Grid info of actor update failed!");
            }
            GameLevelCommon.instance.navData[gridY, gridX] = (byte)eBrickType.EMPTY;
        }

        gridX = _2dx; gridY = _2dy;
    }
Example #5
0
    public eMapDirection getBestMoveDirection(eMapDirection tendencyDirection)
    {
        List <eMapDirection> safeDirections = null;

        if (dodgeFromDanager)
        {
            eGameForce dodgeForce = eGameForce.UNKNOWN_FORCE;
            if (!GameLevelCommon.instance.isMelee)
            {
                if (force == eGameForce.RED_FORCE)
                {
                    dodgeForce = eGameForce.BLUE_FORCE;
                }
                else if (force == eGameForce.BLUE_FORCE)
                {
                    dodgeForce = eGameForce.RED_FORCE;
                }
            }
            safeDirections = GameLevelCommon.instance.dangerRecord.getSafeMoveDirections(transform.localPosition, dodgeForce);
        }
        else
        {
            safeDirections = new List <eMapDirection>();
            safeDirections.Add(eMapDirection.UNKNOWN);
            safeDirections.Add(eMapDirection.LEFT);
            safeDirections.Add(eMapDirection.RIGHT);
            safeDirections.Add(eMapDirection.TOP);
            safeDirections.Add(eMapDirection.BOTTOM);
        }
        List <eMapDirection> targetDirections = new List <eMapDirection>();
        bool isTendencyDirectionAvailable     = false;

        for (int i = 0; i < safeDirections.Count; ++i)
        {
            bool          isDirectionWakable = false;
            eMapDirection direction          = safeDirections[i];
            if (direction == eMapDirection.UNKNOWN)
            {
                isDirectionWakable = true;
            }
            else
            {
                eBrickType brickType = GameLevelCommon.instance.getBrickType(this, direction, 1);
                if (GameLevelCommon.instance.isBrickTypeWakable(brickType, GameLevelCommon.defaultWalkLevel))
                {
                    isDirectionWakable = true;
                }
            }

            if (isDirectionWakable)
            {
                targetDirections.Add(direction);
                if (tendencyDirection == direction)
                {
                    isTendencyDirectionAvailable = true;
                }
            }
        }

        if (targetDirections.Count == 0)
        {
            return(eMapDirection.UNKNOWN);
        }

        if (isTendencyDirectionAvailable)
        {
            return(tendencyDirection);
        }
        else
        {
            int           index  = GameLevelCommon.instance.randomNumberInt(0, targetDirections.Count);
            eMapDirection target = targetDirections[index];
            return(target);
        }
    }