public static void FinalizeEnv(EnvironmentObject env) { // Add gems to random locs for (int i = 0; i < 6; ++i) { CreateItem(env, ItemID.Gem, GetRandomMaterial(MaterialCategory.Gem), env.GetRandomEnterableSurfaceLocation()); } // Add rocks to random locs for (int i = 0; i < 6; ++i) { CreateItem(env, ItemID.Rock, GetRandomMaterial(MaterialCategory.Rock), env.GetRandomEnterableSurfaceLocation()); } CreateWorkbenches(env); CreateStartItems(env); CreateDebugItems(env); { var gen = FoodGenerator.Create(env.World); gen.MoveToMustSucceed(env, env.GetSurfaceLocation(env.Width / 2 - 2, env.Height / 2 - 2)); } AddMonsters(env); }
static IntVector3? GetLocNearEntry(EnvironmentObject env) { foreach (var p in IntVector2.SquareSpiral(env.StartLocation.ToIntVector2(), env.Width / 2)) { if (env.Size.Plane.Contains(p) == false) continue; var p3 = env.GetSurfaceLocation(p); if (env.CanEnter(p3)) return p3; } return null; }
private static void CreateStartItems(EnvironmentObject env) { var p = env.GetSurfaceLocation(env.Width / 2 - 1, env.Height / 2 - 4); ClearFloor(env, p); CreateItem(env, ItemID.Log, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Log, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Log, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Bar, GetRandomMaterial(MaterialCategory.Metal), p); CreateItem(env, ItemID.Bar, GetRandomMaterial(MaterialCategory.Metal), p); CreateItem(env, ItemID.Bar, GetRandomMaterial(MaterialCategory.Metal), p); CreateItem(env, ItemID.CarpentersWorkbench, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.MasonsWorkbench, GetRandomMaterial(MaterialCategory.Wood), p); }
private static void CreateDebugItems(EnvironmentObject env) { var p = env.GetSurfaceLocation(env.Width / 2 - 1, env.Height / 2 - 2); ClearFloor(env, p); CreateItem(env, ItemID.Ore, MaterialID.Tin, p); CreateItem(env, ItemID.Ore, MaterialID.Tin, p); CreateItem(env, ItemID.Ore, MaterialID.Lead, p); CreateItem(env, ItemID.Ore, MaterialID.Lead, p); CreateItem(env, ItemID.Ore, MaterialID.Iron, p); CreateItem(env, ItemID.Ore, MaterialID.Iron, p); CreateItem(env, ItemID.Door, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Door, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Table, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Bed, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Chair, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Barrel, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Bin, GetRandomMaterial(MaterialCategory.Wood), p); CreateItem(env, ItemID.Block, GetRandomMaterial(MaterialCategory.Rock), p); CreateItem(env, ItemID.Block, GetRandomMaterial(MaterialCategory.Rock), p); CreateItem(env, ItemID.Block, GetRandomMaterial(MaterialCategory.Rock), p); CreateItem(env, ItemID.Block, GetRandomMaterial(MaterialCategory.Rock), p); CreateItem(env, ItemID.Block, GetRandomMaterial(MaterialCategory.Rock), p); CreateItem(env, ItemID.UncutGem, GetRandomMaterial(MaterialCategory.Gem), p); CreateItem(env, ItemID.UncutGem, GetRandomMaterial(MaterialCategory.Gem), p); CreateItem(env, ItemID.UncutGem, GetRandomMaterial(MaterialCategory.Gem), p); CreateItem(env, ItemID.Rock, GetRandomMaterial(MaterialCategory.Rock), p); CreateItem(env, ItemID.Rock, GetRandomMaterial(MaterialCategory.Rock), p); CreateItem(env, ItemID.Rock, GetRandomMaterial(MaterialCategory.Rock), p); p = p + new IntVector3(8, 0, 0); ClearFloor(env, p); var bed = CreateItem(env, ItemID.Bed, GetRandomMaterial(MaterialCategory.Wood), p); bed.IsInstalled = true; }
static IntVector3?GetLocNearEntry(EnvironmentObject env) { foreach (var p in IntVector2.SquareSpiral(env.StartLocation.ToIntVector2(), env.Width / 2)) { if (env.Size.Plane.Contains(p) == false) { continue; } var p3 = env.GetSurfaceLocation(p); if (env.CanEnter(p3)) { return(p3); } } return(null); }
static void CreateWaterTest(EnvironmentObject env) { var pos = env.GetSurfaceLocation(env.Width / 2 + 10, env.Height / 2 - 10); int surface = pos.Z; CreateWalls(env, new IntGrid2Z(pos.X, pos.Y, 5, 8, surface)); CreateWater(env, new IntGrid2Z(pos.X + 1, pos.Y + 1, 3, 6, surface)); CreateWalls(env, new IntGrid2Z(pos.X + 2, pos.Y + 2, 1, 4, surface)); if (true) { int x = pos.X + 1; int y = pos.Y + 1; ClearTile(env, new IntVector3(x, y, surface - 0)); ClearTile(env, new IntVector3(x, y, surface - 1)); ClearTile(env, new IntVector3(x, y, surface - 2)); ClearTile(env, new IntVector3(x, y, surface - 3)); ClearTile(env, new IntVector3(x, y, surface - 4)); ClearTile(env, new IntVector3(x + 0, y, surface - 5)); ClearTile(env, new IntVector3(x + 1, y, surface - 5)); ClearTile(env, new IntVector3(x + 2, y, surface - 5)); ClearTile(env, new IntVector3(x + 3, y, surface - 5)); ClearTile(env, new IntVector3(x + 4, y, surface - 5)); ClearTile(env, new IntVector3(x + 4, y, surface - 4)); ClearTile(env, new IntVector3(x + 4, y, surface - 3)); ClearTile(env, new IntVector3(x + 4, y, surface - 2)); ClearTile(env, new IntVector3(x + 4, y, surface - 1)); ClearTile(env, new IntVector3(x + 4, y, surface - 0)); } if (true) { // Add a water generator var item = WaterGenerator.Create(env.World); item.MoveToMustSucceed(env, new IntVector3(pos.X + 1, pos.Y + 2, surface)); } }
Player CreatePlayer(int playerNum, EnvironmentObject env) { const int NUM_DWARVES = 7; var player = new FortressPlayer(2 + playerNum, this, env); IntVector3 pos; switch (playerNum) { case 0: pos = env.StartLocation; break; case 1: pos = env.GetSurfaceLocation(env.Width / 4, env.Height / 4); break; case 2: pos = env.GetSurfaceLocation(env.Width / 4 * 3, env.Height / 4 * 3); break; default: throw new Exception(); } var startRect = FindStartLocation(env, pos); if (!startRect.HasValue) { throw new Exception(); } player.EnvObserver.Add(startRect.Value); var startLocs = startRect.Value.Range().ToArray(); // clear trees foreach (var p in startLocs) { var td = env.GetTileData(p); if (td.HasTree) { td.ID = TileID.Grass; td.MaterialID = MaterialID.RyeGrass; env.SetTileData(p, td); } } var list = new List <LivingObject>(); for (int i = 0; i < NUM_DWARVES; ++i) { var p = startLocs[Helpers.GetRandomInt(startLocs.Length - 1)]; var l = CreateDwarf(i); l.SetAI(new DwarfAI(l, player.EnvObserver, this.World.PlayerID)); l.MoveToMustSucceed(env, p); list.Add(l); } player.AddControllables(list); return(player); }