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); }
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); } }
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); } }
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); }