Пример #1
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Id != 0L)
            {
                hash ^= Id.GetHashCode();
            }
            if (Type != 0)
            {
                hash ^= Type.GetHashCode();
            }
            if (Count != 0)
            {
                hash ^= Count.GetHashCode();
            }
            if (RoomLevel != 0)
            {
                hash ^= RoomLevel.GetHashCode();
            }
            if (IsGold != false)
            {
                hash ^= IsGold.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
        //Algorithm of generation room drop...
        public List <InventoryItem> GenerateRoomDrop(RoomData roomData, RoomLevel roomLevel)
        {
            RavenhillResourceService resourceService = engine.GetService <IResourceService>() as RavenhillResourceService;
            List <InventoryItem>     result          = new List <InventoryItem>();

            List <CollectableData> collectables = resourceService.GetCollectables(roomData.id).FindAll((item) => {
                return(((int)roomLevel >= (int)item.roomLevel) &&
                       (UnityEngine.Random.value < GetCollectableProb(item)));
            });

            result.AddRange(collectables.Select(c => new InventoryItem(c, 1)).ToList());

            List <WeaponData> weapons = resourceService.weaponList.FindAll((w) => UnityEngine.Random.value < w.prob);

            result.AddRange(weapons.Select(w => new InventoryItem(w, 1)).ToList());

            List <IngredientData> ingredients = resourceService.GetIngredients(roomData.id).FindAll(item => {
                return(UnityEngine.Random.value < GetIngredientProb(item));
            });

            result.AddRange(ingredients.Select(i => new InventoryItem(i, 1)).ToList());

            List <ChargerData> chargers = resourceService.chargerList.FindAll(item => UnityEngine.Random.value < item.prob);

            result.AddRange(chargers.Select(c => new InventoryItem(c, 1)).ToList());

            return(result);
        }
Пример #3
0
        public void SetRoomLevel(RoomLevel newRoomLevel)
        {
            RoomLevel oldRoomLevel = roomLevel;

            roomLevel = newRoomLevel;
            if (oldRoomLevel != newRoomLevel)
            {
                RavenhillEvents.OnRoomLevelChanged(oldRoomLevel, roomLevel, this);
            }
        }
Пример #4
0
        /// <summary>
        /// 获取斗地主房间配置 不满足要求不能进入房间
        /// </summary>
        /// <param name="level"></param>
        /// <returns></returns>
        public static RoomConfig GetLandlordsConfig(RoomLevel level)
        {
            RoomConfig config = new RoomConfig();

            switch (level)
            {
            case RoomLevel.Lv100:
                config.BasePointPerMatch = 100;
                config.Multiples         = 1;
                config.MinThreshold      = 100 * 10;
                break;
            }

            return(config);
        }
Пример #5
0
        public static Room Create(RoomLevel level)
        {
            Room room = EntityFactory.Create <Room>();

            room.AddComponent <RoomJoinKeyComponent>();
            room.AddComponent <DeckComponent>();
            room.AddComponent <DeskCardsCacheComponent>();
            room.AddComponent <OrderControllerComponent>();

            RoomConfig config = RoomHelper.GetConfig(level);
            GameControllerComponent gameController = room.AddComponent <GameControllerComponent, RoomConfig>(config);

            //添加管理,避免被GC释放
            Game.Scene.GetComponent <RoomComponent>().Add(room);
            return(room);
        }
Пример #6
0
 public Room()
 {
     //Default to upper level
     this.Level = RoomLevel.UPPER;
 }
Пример #7
0
 public static void OnRoomLevelChanged(RoomLevel prevLevel, RoomLevel newLevel, RoomInfo roomInfo)
 {
     RoomLevelChanged?.Invoke(prevLevel, newLevel, roomInfo);
 }