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); } } } }
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; } }
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); } }
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; }
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); } }