//Overrides public override BaseTarget makeTarget() { string name = null; if (_overrideName == null) { name = baseName + autoNamed; autoNamed++; } else { name = _overrideName; _overrideName = null; } GameObject obj = GameObject.Instantiate(Resources.Load("Prefabs/MovingTargetPrefab")) as GameObject; //Because it's a fast way to do it obj.name = name; MovingTarget target = obj.GetComponent <MovingTarget>(); target.init(_direction.getFloat(), _distance.getFloat(), _timePerCycle.getFloat()); numCreated++; return(target); }
public void SetTarget(MovingTarget mt) { int x = (int)transform.position.x; int y = (int)transform.position.y; mt.GetPathFrom(x, y, m_MovingPath); }
public static MovingTarget GetRandomTarget(MovingTag type) { if (s_mtList.Count == 0) { return(null); } MovingTarget[] temp = new MovingTarget[s_mtList.Count]; int num = 0; foreach (var mt in s_mtList) { // if (mt.enabled && mt.type == type) if (mt.type == type && mt.gameObject.activeSelf) { temp[num++] = mt; } } if (num == 0) { return(null); } int idx = UnityEngine.Random.Range(0, num - 1); return(temp[idx]); }
private void OnCollisionExit2D(Collision2D collision) { MovingTarget tar = collision.gameObject.GetComponent <MovingTarget>(); targetList.RemoveAll(item => item == tar); //Debug.Log($"Target lost: {collision.gameObject.name} Target count: {targetList.Count}"); }
public async Task <bool> MoveAsync(Guid permissionId, MovingTarget target) { var result = await _repository.MoveAsync(permissionId, target); if (result) { await _cache.RemoveAsync(ListCacheKey); } return(result); }
public async Task <bool> MoveAsync(Guid roleId, MovingTarget target) { var result = await _manager.MoveAsync(roleId, target); if (result) { CleanupCache(); } return(result); }
/// <summary> /// MoveAsync /// </summary> /// <param name="groupId"></param> /// <param name="movingTarget"></param> /// <returns></returns> public async Task <bool> MoveAsync(Guid groupId, MovingTarget movingTarget) { var result = await _manager.MoveAsync(groupId, movingTarget); if (result) { CleanupCache(); } return(result); }
public async Task <bool> MoveAsync(Guid groupId, MovingTarget movingTarget) { var result = await _repository.MoveAsync(groupId, movingTarget); if (result) { await _cache.RemoveAsync(GroupListCacheKey); } return(result); }
private void CreateNewTargetPath() { Vector2[] linePos = CalculateTargetLine(); Vector2 start = linePos[0]; Vector2 end = linePos[1]; MovingTarget target = Instantiate(movingTargetPrefab, start, Quaternion.identity); target.Init(start, end, targetStartDelay / (1 + score / 10f), baseMovingTargetSpeed * (1 + score / 10f)); }
public async Task <bool> MoveAsync(Guid roleId, MovingTarget target) { var result = await _manager.MoveAsync(roleId, target); if (result) { await _cache.RemoveAsync(RoleListCacheKey); } return(result); }
void GotoSteel() { // Vector3 targetPos = GameManager.instance.defaultGemPosition; // m_Movement.SetTargetPosition(targetPos); MovingTarget mt = MovingTarget.GetRandomTarget(); m_Movement.SetTarget(mt); m_State = State.SteelMoving; }
public static MovingTarget GetRandomTarget() { MovingTarget mt = GetRandomTarget(MovingTag.Gem); if (mt != null) { return(mt); } mt = GetRandomTarget(MovingTag.Cave); return(mt); }
/// <summary> /// MoveAsync /// </summary> /// <param name="roleId"></param> /// <param name="target"></param> /// <returns></returns> public async Task <bool> MoveAsync(Guid roleId, MovingTarget target) { var roleToMove = await _context.Role.FirstOrDefaultAsync(m => m.RoleId == roleId); // 保证DisplayOrder为 1 的“系统管理员”不被移动 if (roleToMove == null || roleToMove.DisplayOrder == 1) { return(false); } // 防止DisplayOrder为2的项非法篡改"系统管理员",也就是说DisplayOrder必须大于2 if (MovingTarget.Up == target) { if (roleToMove.DisplayOrder < 3) { return(false); } var targetRole = await _context.Role.OrderByDescending(m => m.DisplayOrder).FirstOrDefaultAsync(m => m.DisplayOrder < roleToMove.DisplayOrder); // 某种原因导致当前项之前已经没有项了 if (targetRole == null) { return(false); } roleToMove.DisplayOrder--; targetRole.DisplayOrder++; await _context.SaveChangesAsync(); } else if (MovingTarget.Down == target) { var targetRole = await _context.Role.OrderBy(m => m.DisplayOrder).FirstOrDefaultAsync(m => m.DisplayOrder > roleToMove.DisplayOrder); // 某种原因导致当前项之后已经没有项了 if (targetRole == null) { return(false); } roleToMove.DisplayOrder++; targetRole.DisplayOrder--; await _context.SaveChangesAsync(); } return(true); }
private void AssignNewTarget() { targetReached = false; currentTarget = GetRandomTarget(); }
// public void SetMoving(MovingTarget mt, int x, int y, bool isBack = false) { mt.GetPathFrom(x, y, m_MovingPath); }
/// <summary> /// MoveAsync /// </summary> /// <param name="permissionId"></param> /// <param name="target"></param> /// <returns></returns> public async Task <bool> MoveAsync(Guid permissionId, MovingTarget target) { string sql; var permissionToMove = await _context.Permission.FirstOrDefaultAsync(m => m.PermissionId == permissionId); if (permissionToMove == null) { return(false); } #region 获取当前节点树 List <Guid> currTreeIds; int displayOrderOfNextParentOrNextBrother = await GetDisplayOrderOfNextParentOrNextBrotherAsync(permissionToMove); if (displayOrderOfNextParentOrNextBrother == 0) { // 无兄弟节点 currTreeIds = await _context.Permission.Where(m => m.DisplayOrder >= permissionToMove.DisplayOrder).Select(m => m.PermissionId).ToListAsync(); } else { // 有兄弟节点 currTreeIds = await _context.Permission .Where(m => m.DisplayOrder >= permissionToMove.DisplayOrder && m.DisplayOrder < displayOrderOfNextParentOrNextBrother) .Select(m => m.PermissionId) .ToListAsync(); } // 目标节点树的总数为目标自己+目标所有子孙的总和 int curTreeCount = currTreeIds.Count; #endregion if (MovingTarget.Up == target) { #region 获取上一个兄弟节点 Permission targetPermission; if (permissionToMove.ParentId.HasValue) { targetPermission = await _context.Permission .OrderByDescending(m => m.DisplayOrder) .FirstOrDefaultAsync(m => m.ParentId == permissionToMove.ParentId && m.DisplayOrder < permissionToMove.DisplayOrder); } else { targetPermission = await _context.Permission .OrderByDescending(m => m.DisplayOrder) .FirstOrDefaultAsync(m => m.ParentId == null && m.DisplayOrder < permissionToMove.DisplayOrder); } #endregion if (targetPermission == null) { return(false); } //获取兄弟节点树的节点数 int targetTreeCount = await _context.Permission.CountAsync(m => m.DisplayOrder >= targetPermission.DisplayOrder && m.DisplayOrder < permissionToMove.DisplayOrder); //更新兄弟节点树的DisplayOrder sql = "Update Permission Set DisplayOrder = DisplayOrder+@CurTreeCount Where DisplayOrder>=@TDisplayOrder And DisplayOrder<@CDisplayOrder"; await _context.Database.ExecuteSqlCommandAsync(sql , new SqlParameter("CurTreeCount", curTreeCount) , new SqlParameter("TDisplayOrder", targetPermission.DisplayOrder) , new SqlParameter("CDisplayOrder", permissionToMove.DisplayOrder) ); sql = "Update Permission Set DisplayOrder = DisplayOrder-@TargetTreeCount Where 1<>1 "; foreach (var id in currTreeIds) { sql += " Or PermissionId = '{0}'".FormatWith(id.ToString()); } await _context.Database.ExecuteSqlCommandAsync(sql , new SqlParameter("TargetTreeCount", targetTreeCount) ); } else { #region 获取下一个兄弟节点 Permission nextBrotherPermission; if (permissionToMove.ParentId.HasValue) { nextBrotherPermission = await _context.Permission.OrderBy(m => m.DisplayOrder).FirstOrDefaultAsync(m => m.ParentId == permissionToMove.ParentId && m.DisplayOrder > permissionToMove.DisplayOrder); } else { nextBrotherPermission = await _context.Permission.OrderBy(m => m.DisplayOrder).FirstOrDefaultAsync(m => m.ParentId == null && m.DisplayOrder > permissionToMove.DisplayOrder); } #endregion if (nextBrotherPermission == null) { return(false); } #region 获取兄弟节点树的节点数 int displayOrderOfNextParentOrNextBrotherOfBrother = await GetDisplayOrderOfNextParentOrNextBrotherAsync(nextBrotherPermission); int nextBrotherTreeCount; if (displayOrderOfNextParentOrNextBrotherOfBrother == 0) { nextBrotherTreeCount = await _context.Permission.CountAsync(m => m.DisplayOrder >= nextBrotherPermission.DisplayOrder); } else { nextBrotherTreeCount = await _context.Permission.CountAsync(m => m.DisplayOrder >= nextBrotherPermission.DisplayOrder && m.DisplayOrder < displayOrderOfNextParentOrNextBrotherOfBrother); } #endregion //更新兄弟节点树的DisplayOrder sql = "Update Permission Set DisplayOrder = DisplayOrder-@CurTreeCount Where DisplayOrder>=@DisplayOrder And DisplayOrder<@TDisplayOrder"; await _context.Database.ExecuteSqlCommandAsync(sql , new SqlParameter("CurTreeCount", curTreeCount) , new SqlParameter("DisplayOrder", nextBrotherPermission.DisplayOrder) , new SqlParameter("TDisplayOrder", nextBrotherPermission.DisplayOrder + nextBrotherTreeCount) ); sql = "Update Permission Set DisplayOrder = DisplayOrder+@NextBrotherTreeCount Where 1<>1 "; foreach (var id in currTreeIds) { sql += " Or PermissionId = '{0}'".FormatWith(id.ToString()); } await _context.Database.ExecuteSqlCommandAsync(sql , new SqlParameter("NextBrotherTreeCount", nextBrotherTreeCount) ); } return(true); }