public void GenerateDungeon(DungeonComponent dungeonCompData, int seed)
        {
            Random.InitState(seed);

            // Setup dungeon
            DungeonComponent dungeonComp = ActiveEntityManager.GetComponentData <DungeonComponent>(DungeonEntity);

            dungeonComp                   = dungeonCompData;
            dungeonComp.SizeInCell        = DefaultDungeonSettings.SizeInCell;
            dungeonComp.IsPendingGenerate = true;

            ActiveEntityManager.SetComponentData(DungeonEntity, dungeonComp);
        }
Пример #2
0
    public static void LoadAssets(DungeonComponent dungeonCom)
    {
        EffectCacheComponent effectCacheComponent = Game.Scene.GetComponent <EffectCacheComponent>();
        AudioCacheComponent  audioCacheComponent  = Game.Scene.GetComponent <AudioCacheComponent>();

        //加载和缓存特效资源
        foreach (var unit in dungeonCom.playerTeam)
        {
            ActiveSkillComponent skillComponent = unit.GetComponent <ActiveSkillComponent>();
            AddEffectCache(effectCacheComponent, audioCacheComponent, skillComponent);
            //TODO: 添加被动技能的
        }
        foreach (var unit in dungeonCom.enemyTeam)
        {
            ActiveSkillComponent skillComponent = unit.GetComponent <ActiveSkillComponent>();
            AddEffectCache(effectCacheComponent, audioCacheComponent, skillComponent);
        }
    }
Пример #3
0
    static void ReleaseAssets(DungeonComponent dungeonCom)
    {
        EffectCacheComponent effectCacheComponent = Game.Scene.GetComponent <EffectCacheComponent>();

        effectCacheComponent.Clear();
        AudioCacheComponent audioCacheComponent = Game.Scene.GetComponent <AudioCacheComponent>();

        audioCacheComponent.Clear();
        foreach (var v in dungeonCom.playerTeam)
        {
            if (v.Id == UnitComponent.Instance.MyUnit.Id)
            {
                v.GetComponent <BuffMgrComponent>().ClearBuffGroupOnBattleEnd();
            }
        }
        foreach (var v in dungeonCom.enemyTeam)
        {
            UnitComponent.Instance.Remove(v.Id);
        }
    }
Пример #4
0
        private bool FindDoorType(DungeonLevel level, Doorway door)
        {
            DungeonComponent tester = new DungeonComponent(door.x, door.y, 1, 1);

            switch (door.SideIn)
            {
            case Side.South:
                tester.y--;
                break;

            case Side.West:
                tester.x--;
                break;
            }
            if (level.Collision(tester))
            {
                int roll = DiceBag.getDice().d20();
                if (roll > 10)
                {
                    return(false);
                }
                else
                {
                    door.connected = true;
                    if (roll > 5)
                    {
                        door.Type = DoorType.OneWay;
                    }
                    else
                    {
                        door.Type = DoorType.Secret;
                    }
                }
            }
            else
            {
                door.connected = false;
                door.Type      = DoorType.TwoWay;
            }
            return(true);
        }