void Data_MapChanged(EnvironmentObject oldMap, EnvironmentObject newMap) { if (oldMap != null) { oldMap.MapTileTerrainChanged -= OnTileChanged; } if (newMap != null) { newMap.MapTileTerrainChanged += OnTileChanged; } if (newMap == null) { if (m_chunks != null) { foreach (var chunk in m_chunks) { if (chunk != null) { chunk.Free(); } } } this.Size = new IntSize3(); m_chunks = null; } else { this.Size = newMap.Size / Chunk.CHUNK_SIZE; m_chunks = new Chunk[this.Size.Volume]; } }
public static void SendSetTerrains(SetTerrainDialog dialog, EnvironmentObject env, IntGrid3 cube) { var data = dialog.Data; var args = new Dictionary <string, object>() { { "envID", env.ObjectID }, { "cube", cube }, { "tileID", data.TileID }, { "materialID", data.MaterialID }, { "waterLevel", data.Water.HasValue ? (data.Water == true ? (byte?)TileData.MaxWaterLevel : (byte?)0) : null }, }; var script = @"env = world.GetObject(envID) for p in cube.Range(): td = env.GetTileData(p) if tileID != None: Dwarrowdelf.TileData.ID.SetValue(td, tileID) if materialID != None: Dwarrowdelf.TileData.MaterialID.SetValue(td, materialID) if waterLevel != None: Dwarrowdelf.TileData.WaterLevel.SetValue(td, waterLevel) env.SetTileData(p, td) env.ScanWaterTiles() "; var msg = new Dwarrowdelf.Messages.IPScriptMessage(script, args); GameData.Data.User.Send(msg); }
public static Stockpile CreateStockpile(EnvironmentObject environment, IntGrid2Z area) { var stockpile = new Stockpile(environment, area); environment.AddAreaElement(stockpile); return(stockpile); }
public Stockpile(EnvironmentObject environment, IntGrid2Z area) { this.Environment = environment; this.Area = area; m_jobs = new List <StoreToStockpileJob>(); }
public Stockpile(EnvironmentObject environment, IntGrid2Z area) { this.Environment = environment; this.Area = area; m_jobs = new List<StoreToStockpileJob>(); }
public bool Sees(EnvironmentObject env, IntVector3 p) { if (env != this.Environment) { return(false); } IntVector3 dp = p - this.Location; switch (this.World.LivingVisionMode) { case LivingVisionMode.SquareFOV: return(dp.ComponentLength <= this.VisionRange); case LivingVisionMode.LOS: if (Math.Abs(dp.X) > this.VisionRange || Math.Abs(dp.Y) > this.VisionRange || Math.Abs(dp.Z) > this.VisionRange) { return(false); } return(this.VisionMap[dp]); default: throw new Exception(); } }
public ConstructManager(EnvironmentObject env) { m_environment = env; m_unreachables = new Unreachables(m_environment.World); m_jobDataList = new List<ConstructJobData>(); }
public ConstructManager(EnvironmentObject env) { m_environment = env; m_unreachables = new Unreachables(m_environment.World); m_jobDataList = new List <ConstructJobData>(); }
static void AddGameEventInternal(EnvironmentObject env, IntVector3 location, string message) { if (s_events.Count > 100) { s_events.RemoveAt(0); } //Trace.TraceInformation(message); s_events.Add(new ClientEvent(message, env, location)); }
public Chunk(EnvironmentObject map, IntVector3 chunkPosition) { this.ChunkPosition = chunkPosition; this.ChunkOffset = chunkPosition * CHUNK_SIZE; m_map = map; var v1 = this.ChunkOffset.ToVector3(); var v2 = v1 + new Vector3(Chunk.CHUNK_SIZE); this.BBox = new BoundingBox(v1, v2); }
public ItemTracker(EnvironmentObject env) { m_env = env; m_items = new List<ItemObject>(1024); m_items.AddRange(env.Inventory.OfType<ItemObject>()); m_env.ObjectAdded += Environment_ObjectAdded; m_env.ObjectRemoved += Environment_ObjectRemoved; m_env.ObjectMoved += Environment_ObjectMoved; }
public ItemTracker(EnvironmentObject env) { m_env = env; m_items = new List <ItemObject>(1024); m_items.AddRange(env.Contents.OfType <ItemObject>()); m_env.ObjectAdded += Environment_ObjectAdded; m_env.ObjectRemoved += Environment_ObjectRemoved; m_env.ObjectMoved += Environment_ObjectMoved; }
public void CameraMoveTo(MovableObject ob) { if (ob == null) { this.Environment = null; } else { var env = ob.Environment; CameraMoveTo(env, ob.Location); } }
public CleanAreaJob(IJobObserver parent, EnvironmentObject env, IntGrid2Z area) : base(parent) { m_environment = env; m_area = area; m_map = new Dictionary<IntPoint3, IJob>(); foreach (var p in m_area.Range()) m_map[p] = null; m_environment.World.TickStarting += World_TickStarting; }
void Data_MapChanged(EnvironmentObject oldMap, EnvironmentObject newMap) { var map = newMap; if (map == null) { this.ViewCorner1 = new IntVector3(); this.ViewCorner2 = new IntVector3(); } else { this.ViewCorner1 = new IntVector3(0, 0, 0); this.ViewCorner2 = new IntVector3(map.Width - 1, map.Height - 1, map.Depth - 1); } }
public CleanAreaJob(IJobObserver parent, EnvironmentObject env, IntGrid2Z area) : base(parent) { m_environment = env; m_area = area; m_map = new Dictionary <IntVector3, IJob>(); foreach (var p in m_area.Range()) { m_map[p] = null; } m_environment.World.TickStarted += World_TickStarting; }
void OnEnvChanged(EnvironmentObject oldEnv, EnvironmentObject newEnv) { if (m_env != null) { m_env.ObjectAdded -= OnObjectAddedOrRemoved; m_env.ObjectRemoved -= OnObjectAddedOrRemoved; m_env.ObjectMoved -= OnObjectMoved; } m_env = newEnv; m_invalid = true; if (m_env != null) { m_env.ObjectAdded += OnObjectAddedOrRemoved; m_env.ObjectRemoved += OnObjectAddedOrRemoved; m_env.ObjectMoved += OnObjectMoved; } }
public static void AddGameEvent(EnvironmentObject env, IntPoint3 location, string message) { AddGameEventInternal(env, location, message); s_previousWasTickEvent = false; }
public static void AddGameEvent(EnvironmentObject env, IntPoint3 location, string format, params object[] args) { AddGameEventInternal(env, location, String.Format(format, args)); s_previousWasTickEvent = false; }
public ClientEvent(string str, EnvironmentObject env, IntPoint3 location) { this.Message = str; this.Environment = env; this.Location = location; }
public void CameraLookAt(EnvironmentObject env, IntVector3 p) { this.Environment = env; m_game.CameraLookAt(p); }
public static void AddGameEvent(EnvironmentObject env, IntVector3 location, string message) { AddGameEventInternal(env, location, message); s_previousWasTickEvent = false; }
public ClientEvent(string str, EnvironmentObject env, IntVector3 location) { this.Message = str; this.Environment = env; this.Location = location; }
void OnEnvChanged(EnvironmentObject oldEnv, EnvironmentObject newEnv) { }
public Designation(EnvironmentObject env) { this.Environment = env; m_map = new Dictionary<IntPoint3, DesignationData>(); }
public TargetItemTracker(EnvironmentObject env, IntVector3 center, Func <ItemObject, bool> filter) { m_env = env; m_filter = filter; m_heap = new SortedDictionary <IntVector3, List <ItemObject> >(new LocationComparer(center)); }
public InstallItemManager(EnvironmentObject env) { m_environment = env; m_jobDataList = new List<InstallJobData>(); }
public static void SendSetTerrains(SetTerrainDialog dialog, EnvironmentObject env, IntGrid3 cube) { var data = dialog.Data; var args = new Dictionary<string, object>() { { "envID", env.ObjectID }, { "cube", cube }, { "terrainID", data.TerrainID }, { "terrainMaterialID", data.TerrainMaterialID }, { "interiorID", data.InteriorID }, { "interiorMaterialID", data.InteriorMaterialID }, { "waterLevel", data.Water.HasValue ? (data.Water == true ? (byte?)TileData.MaxWaterLevel : (byte?)0) : null }, }; var script = @"env = world.GetObject(envID) for p in cube.Range(): td = env.GetTileData(p) if terrainID != None: Dwarrowdelf.TileData.TerrainID.SetValue(td, terrainID) if terrainMaterialID != None: Dwarrowdelf.TileData.TerrainMaterialID.SetValue(td, terrainMaterialID) if interiorID != None: Dwarrowdelf.TileData.InteriorID.SetValue(td, interiorID) if interiorMaterialID != None: Dwarrowdelf.TileData.InteriorMaterialID.SetValue(td, interiorMaterialID) if waterLevel != None: Dwarrowdelf.TileData.WaterLevel.SetValue(td, waterLevel) env.SetTileData(p, td) env.ScanWaterTiles() "; var msg = new Dwarrowdelf.Messages.IPScriptMessage(script, args); GameData.Data.User.Send(msg); }
public bool Sees(EnvironmentObject env, IntVector3 p) { if (env != this.Environment) return false; IntVector3 dp = p - this.Location; switch (this.World.LivingVisionMode) { case LivingVisionMode.SquareFOV: return dp.ComponentLength <= this.VisionRange; case LivingVisionMode.LOS: if (Math.Abs(dp.X) > this.VisionRange || Math.Abs(dp.Y) > this.VisionRange || Math.Abs(dp.Z) > this.VisionRange) return false; return this.VisionMap[dp]; default: throw new Exception(); } }
void Data_MapChanged(EnvironmentObject oldMap, EnvironmentObject newMap) { if (oldMap != null) oldMap.MapTileTerrainChanged -= OnTileChanged; if (newMap != null) newMap.MapTileTerrainChanged += OnTileChanged; if (newMap == null) { if (m_chunks != null) { foreach (var chunk in m_chunks) if (chunk != null) chunk.Free(); } this.Size = new IntSize3(); m_chunks = null; } else { this.Size = newMap.Size / Chunk.CHUNK_SIZE; m_chunks = new Chunk[this.Size.Volume]; } }
public static void AddGameEvent(EnvironmentObject env, IntVector3 location, string format, params object[] args) { AddGameEventInternal(env, location, String.Format(format, args)); s_previousWasTickEvent = false; }
public static bool PickVoxel(EnvironmentObject env, GameSurfaceView view, IntVector2 screenPos, IntGrid3 cropGrid, MapControlPickMode pickMode, out IntVector3 pos, out Direction face) { var camera = view.Camera; var ray = Ray.GetPickRay(screenPos.X, screenPos.Y, view.ViewPort, view.Camera.View * view.Camera.Projection); IntVector3 outpos = new IntVector3(); Direction outdir = Direction.None; var corner = cropGrid.Corner2; var size = new IntSize3(corner.X + 1, corner.Y + 1, corner.Z + 1); IntVector3 prevoutpos = new IntVector3(); Direction prevoutdir = Direction.None; VoxelRayCast.RunRayCast(size, ray.Position, ray.Direction, view.Camera.FarZ, (x, y, z, dir) => { var p = new IntVector3(x, y, z); if (cropGrid.Contains(p) == false) { return(false); } var td = env.GetTileData(p); switch (pickMode) { case MapControlPickMode.Underground: if (!td.IsUndefined && !td.IsWall) { return(false); } outpos = p; outdir = dir; return(true); case MapControlPickMode.AboveGround: if (!td.IsUndefined && !td.IsWall) { prevoutpos = p; prevoutdir = dir; return(false); } if (prevoutpos.IsNull) { outpos = p; outdir = dir; } else { outpos = prevoutpos; outdir = prevoutdir; } return(true); case MapControlPickMode.Constant: if (p.Z > cropGrid.Z2) { return(false); } outpos = p; outdir = dir; return(true); default: throw new NotImplementedException(); } }); pos = outpos; face = outdir; return(face != Direction.None); }
public Designation(EnvironmentObject env) { this.Environment = env; m_map = new Dictionary <IntVector3, DesignationData>(); }
static void AddGameEventInternal(EnvironmentObject env, IntPoint3 location, string message) { if (s_events.Count > 100) s_events.RemoveAt(0); //Trace.TraceInformation(message); s_events.Add(new ClientEvent(message, env, location)); }
public void CameraMoveTo(EnvironmentObject env, IntVector3 p) { this.Environment = env; m_game.CameraMoveTo(p); }
public InstallItemManager(EnvironmentObject env) { m_environment = env; m_jobDataList = new List <InstallJobData>(); }
public static Stockpile CreateStockpile(EnvironmentObject environment, IntGrid2Z area) { var stockpile = new Stockpile(environment, area); environment.AddAreaElement(stockpile); return stockpile; }
public static bool PickVoxel(EnvironmentObject env, GameSurfaceView view, IntVector2 screenPos, IntGrid3 cropGrid, MapControlPickMode pickMode, out IntVector3 pos, out Direction face) { var camera = view.Camera; var ray = Ray.GetPickRay(screenPos.X, screenPos.Y, view.ViewPort, view.Camera.View * view.Camera.Projection); IntVector3 outpos = new IntVector3(); Direction outdir = Direction.None; var corner = cropGrid.Corner2; var size = new IntSize3(corner.X + 1, corner.Y + 1, corner.Z + 1); IntVector3 prevoutpos = new IntVector3(); Direction prevoutdir = Direction.None; VoxelRayCast.RunRayCast(size, ray.Position, ray.Direction, view.Camera.FarZ, (x, y, z, dir) => { var p = new IntVector3(x, y, z); if (cropGrid.Contains(p) == false) return false; var td = env.GetTileData(p); switch (pickMode) { case MapControlPickMode.Underground: if (!td.IsUndefined && !td.IsWall) return false; outpos = p; outdir = dir; return true; case MapControlPickMode.AboveGround: if (!td.IsUndefined && !td.IsWall) { prevoutpos = p; prevoutdir = dir; return false; } if (prevoutpos.IsNull) { outpos = p; outdir = dir; } else { outpos = prevoutpos; outdir = prevoutdir; } return true; case MapControlPickMode.Constant: if (p.Z > cropGrid.Z2) return false; outpos = p; outdir = dir; return true; default: throw new NotImplementedException(); } }); pos = outpos; face = outdir; return face != Direction.None; }