Esempio n. 1
0
    /** 权重随机一个(intArr)(重置随机) */
    public int[] randomForIntArr(ILogicEntity entity, int seedType)
    {
        int[][] intArr;

        if ((intArr = _intArr).Length == 0)
        {
            return(null);
        }

        int rd = 0;

        if (seedType == ClientRandomSeedType.Client)
        {
            rd = MathUtils.randomInt(_weight);
        }
        else
        {
            rd = entity.randomInt(_weight);
        }

        int index = 0;

        while (rd >= intArr[index][0])
        {
            rd -= intArr[index++][0];
        }

        return(intArr[index]);
    }
Esempio n. 2
0
    /// <summary>
    /// 随机一个物品(可能为空)
    /// </summary>
    public ItemData randomOne(ILogicEntity entity, int seedType)
    {
        switch (type)
        {
        case RandomItemType.Single:
        {
            int[] arr = args[0];

            if (arr[0] <= 0)
            {
                return(null);
            }

            return(BaseC.logic.createItem(arr[0], arr.Length > 1 ? arr[1] : 1));
        }

        case RandomItemType.AverageItem:
        {
            int[] arr = null;

            if (seedType == ClientRandomSeedType.Client)
            {
                arr = args[MathUtils.randomInt(args.Length)];
            }
            else
            {
                arr = args[entity.randomInt(args.Length)];
            }

            if (arr[0] <= 0)
            {
                return(null);
            }

            return(BaseC.logic.createItem(arr[0], arr.Length > 1 ? arr[1] : 1));
        }

        case RandomItemType.WeightItem:
        {
            int[] arr = _weightTool.randomForIntArr(entity, seedType);

            if (arr[1] <= 0)
            {
                return(null);
            }

            return(BaseC.logic.createItem(arr[1], arr.Length > 2 ? arr[2] : 1));
        }

        case RandomItemType.WeightCreateItem:
        {
            int[] arr = _weightTool.randomForIntArr(entity, seedType);

            if (arr[1] <= 0)
            {
                return(null);
            }

            ItemData data = BaseC.logic.createItemByCreateID(arr[1]);
            data.num = arr.Length > 2 ? arr[2] : 1;
            return(data);
        }

        case RandomItemType.WeightRandomItem:
        {
            int[] arr = _weightTool.randomForIntArr(entity, seedType);

            if (arr[1] <= 0)
            {
                return(null);
            }

            return(get(arr[1]).randomOne(entity, seedType));
        }
        }

        return(null);
    }