//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);
    }
Пример #2
0
    public void SetTarget(MovingTarget mt)
    {
        int x = (int)transform.position.x;
        int y = (int)transform.position.y;

        mt.GetPathFrom(x, y, m_MovingPath);
    }
Пример #3
0
    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]);
    }
Пример #4
0
    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}");
    }
Пример #5
0
        public async Task <bool> MoveAsync(Guid permissionId, MovingTarget target)
        {
            var result = await _repository.MoveAsync(permissionId, target);

            if (result)
            {
                await _cache.RemoveAsync(ListCacheKey);
            }
            return(result);
        }
Пример #6
0
        public async Task <bool> MoveAsync(Guid roleId, MovingTarget target)
        {
            var result = await _manager.MoveAsync(roleId, target);

            if (result)
            {
                CleanupCache();
            }
            return(result);
        }
Пример #7
0
        /// <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);
        }
Пример #8
0
        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));
    }
Пример #10
0
        public async Task <bool> MoveAsync(Guid roleId, MovingTarget target)
        {
            var result = await _manager.MoveAsync(roleId, target);

            if (result)
            {
                await _cache.RemoveAsync(RoleListCacheKey);
            }
            return(result);
        }
Пример #11
0
    void GotoSteel()
    {
        //	Vector3 targetPos = GameManager.instance.defaultGemPosition;
        //	m_Movement.SetTargetPosition(targetPos);

        MovingTarget mt = MovingTarget.GetRandomTarget();

        m_Movement.SetTarget(mt);

        m_State = State.SteelMoving;
    }
Пример #12
0
    public static MovingTarget GetRandomTarget()
    {
        MovingTarget mt = GetRandomTarget(MovingTag.Gem);

        if (mt != null)
        {
            return(mt);
        }

        mt = GetRandomTarget(MovingTag.Cave);
        return(mt);
    }
Пример #13
0
        /// <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();
 }
Пример #15
0
    //

    public void SetMoving(MovingTarget mt, int x, int y, bool isBack = false)
    {
        mt.GetPathFrom(x, y, m_MovingPath);
    }
Пример #16
0
        /// <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);
        }