public override string ToString() { string data = ""; data += "HasJob: " + HasJob + ((HasJob)? ("-" + NPCJob.ToString()) : "") + "\n"; data += "Gender: " + Gender; return(data); }
public static MarketPlace GenerateMarket(MarketPlace building, BuildingStyle style = BuildingStyle.stone) { int width = building.Width; int height = building.Height; Vec2i entr = GenerateWallsFloorAndEntrance(width, height, building.BuildingObjects, building.BuildingTiles, 0, style, tileType: Tile.TEST_YELLOW); building.SetEntrancePoint(entr); MarketStall s1 = new MarketStall(new Vec2i(3, 3)); MarketStall s2 = new MarketStall(new Vec2i(building.Width - 3, building.Height - 3)); AddObject(building, s1, 3, 3); AddObject(building, s2, building.Width - 3, building.Height - 3); NPCJob[] jobs = new NPCJob[] { new NPCJobMarketStall("Market runner", building, s1), new NPCJobMarketStall("Market runner", building, s2) }; building.SetWorkBuildingData(new WorkBuildingData(jobs)); return(building); }
private void GenerateNPCJobs(List <NPC> npcs, Settlement set) { List <NPCJob> workJobs = new List <NPCJob>(); Dictionary <KingdomHierarchy, List <NPCJob> > rankedJobs = new Dictionary <KingdomHierarchy, List <NPCJob> >(); //Iterate all buildings and select work buildings foreach (Building b in set.Buildings) { if (b is IWorkBuilding) { //Get the jobs for each building NPCJob[] js = (b as IWorkBuilding).GetWorkData.BuildingJobs; foreach (NPCJob j in js) { if (!rankedJobs.ContainsKey(j.RequiredRank)) { rankedJobs.Add(j.RequiredRank, new List <NPCJob>()); } rankedJobs[j.RequiredRank].Add(j); } } } Debug.Log("Settlement " + set.ToString() + " has " + workJobs.Count + " jobs", Debug.ENTITY_GENERATION); foreach (NPC npc in npcs) { KingdomHierarchy rank = npc.NPCKingdomData.Rank; if (!rankedJobs.ContainsKey(rank)) { continue; } if (rankedJobs[rank].Count == 0) { continue; } NPCJob job = rankedJobs[rank][0]; rankedJobs[rank].Remove(job); npc.NPCData.SetJob(job); } }
public static Blacksmith GenerateBlacksmith(Blacksmith building, BuildingStyle style = BuildingStyle.stone) { int width = building.Width; int height = building.Height; Vec2i entr = GenerateWallsFloorAndEntrance(width, height, building.BuildingObjects, building.BuildingTiles, 0, style, tileType: Tile.TEST_MAGENTA); building.SetEntrancePoint(entr); WorkEquiptmentData anvil = new Anvil(new Vec2i(1, 3)); WorkEquiptmentData forge = new Anvil(new Vec2i(4, 4)); AddObject(building, anvil, 1, 3); AddObject(building, forge, 4, 4); NPCJob[] jobs = new NPCJob[] { new NPCJobBlackSmith(building), new NPCJobBlackSmith(building), new NPCJobBlackSmith(building) }; building.SetWorkBuildingData(new WorkBuildingData(jobs)); AddEntrance(building, 0); //building.WorkEquiptment.Add(new WorkEquiptmentPlacement(anvil, new Vec2i(1, 3))); //building.WorkEquiptment.Add(new WorkEquiptmentPlacement(forge, new Vec2i(4, 4))); return(building); }
public static Tavern GenerateTavern(GenerationRandom genRan, Tavern tavern, out BuildingVoxels vox, BuildingGenerationPlan plan) { vox = new BuildingVoxels(tavern.Width, World.ChunkHeight, tavern.Height); BuildingGenerator.BuildBoundingWallRect(vox, tavern.Width, tavern.Height, 6, Voxel.wood); BuildingGenerator.ChooseEntrancePoint(genRan, vox, tavern, plan); Tile[,] tileMap = new Tile[tavern.Width, tavern.Height]; BuildingGenerator.SetTiles(tileMap, 0, 0, tavern.Width, tavern.Height, Tile.WOOD_FLOOR); tavern.SetBuilding(tileMap); BuildingGenerator.AddWindow(genRan, vox, tavern, autoReattempt: true); BuildingGenerator.AddWindow(genRan, vox, tavern, autoReattempt: true); BuildingGenerator.AddWindow(genRan, vox, tavern, autoReattempt: true); BuildingGenerator.AddWindow(genRan, vox, tavern, autoReattempt: false); BuildingGenerator.AddWindow(genRan, vox, tavern, autoReattempt: false); FirePlace fp = new FirePlace(); BuildingGenerator.PlaceObjectAgainstWall(genRan, fp, 0, vox, tavern, 0, true, 4, true, 20); BuildingGenerator.PlaceObjectAgainstWall(genRan, new WallTorch(), 1.5f, vox, tavern, 0, true, 2); NPCJob[] jobs = new NPCJob[] { new NPCJobMerchant(tavern, "Tavern Keep"), new NPCJobMerchant(tavern, "Tavern Keep") }; tavern.SetWorkBuildingData(new WorkBuildingData(jobs)); BuildingGenerator.AddRoof(genRan, vox, tavern, Voxel.thatch); return(tavern); }
public void SetJob(NPCJob job) { NPCJob = job; }
public NPCTaskDoJob(Entity entity, IWorkBuilding building, NPCJob job, float priority, float taskTime = -1) : base(entity, priority, taskTime, taskDesc: "Working: " + job) { WorkBuilding = building.WorkBuilding; Job = job; }