public void AddWeaponToEntity(int eid) { Core.Entity e = new Core.Entity(_entityID); Core.EntityReturner er; int weaponID = e.UID; Components.CreatureDetailsComp cdc = (Components.CreatureDetailsComp)GetSingleComponentByID(eid, Core.ComponentTypes.CreatureDetails); if (cdc.CreatureType != Types.CreatureTypes.Troll) { er = Core.EntityFactory.CreateSword(); } else { er = Core.EntityFactory.CreateTrollClub(); } Entities.Add(_entityID, er.ComponentList); EntityBitLookUp.Add(_entityID, er.LookUpBit); JustEntities.Add(_entityID, e); _entityID++; // add weapon to entity Core.InventoryAddEventArgs addEvent = new Core.InventoryAddEventArgs(Core.EventTypes.InventoryAdd, eid, weaponID); Core.EventBus.Publish(Core.EventTypes.InventoryAdd, addEvent); }
public bool ContainsFormEntityOffset(Core.Entity e) { Vector2 delta = e.Position - (this.Entity.Position - this.Offset * PhantomUtils.FromAngle(e.Orientation)); float a = delta.Angle(); return(Math.Abs(PhantomUtils.AngleDifference(a, this.Entity.Orientation)) <= this.halfarc); }
public bool ContainsFormPosition(Core.Entity e) { Vector2 delta = e.Position - this.Position; float a = delta.Angle(); return(Math.Abs(PhantomUtils.AngleDifference(a, Orientation)) <= this.halfarc); }
private void HandlePointerUp(object sender, PointerRoutedEventArgs e) { _pointerDown = false; if (_prevPoint == null) { return; } switch (ToolMode) { case EditMode.Object: case EditMode.Move: _selected = null; _offset = Vector3.Zero; break; case EditMode.Delete: { if (DeleteMode == ObjectType.Object) { var pos = _screen.Camera.Owner.Transform.LocalTranslation; pos.X += (float)_prevPoint.Position.X; pos.Y += (float)_prevPoint.Position.Y + 100; // +100 to offset camera position var toDelete = ClickDetector.GetClicked(pos.X, pos.Y); if (toDelete != null) { _screen.RemoveObject(toDelete); _screen.Objectives.CompleteObjective("deletetree"); } } } break; } _prevPoint = null; }
public EditorPage() { InitializeComponent(); _screen = App.ChangeScreen <EditorScreen>(); _prevPoint = null; Objectives = _screen.Objectives.Objectives; ObjectTypes = new List <string>(); BuildObjTypeList(); _gameGrid = new Graphics.Grid(Vector3.Zero, 32); _selected = null; _offset = Vector3.Zero; DeleteModeCombo.Items.Add(ObjectType.Object); DeleteModeCombo.Items.Add(ObjectType.Road); DeleteModeCombo.Items.Add(ObjectType.Zone); DeleteModeCombo.SelectedIndex = 0; var roadMapEntity = _screen.CreateEntity("RoadMap", 0, 0, 1); _roadSprite = roadMapEntity.AddComponent <TileSprite>(); _roadSprite.Load(_screen.Cache, "ms-appx:///Data/Road.map"); _roadSprite.Origin = TileSprite.OriginLocation.TopLeft; AddObjectives(); _pointerDown = false; DataContext = this; }
public void AddMonster(int x, int y, Core.DungeonMap m) { Core.Entity e = new Core.Entity(_entityID); Core.EntityReturner er; //int ind = r.Next(CreatNames.Count); int ind = Game.Random.Next(CreatNames.Count - 1); string creatureName = CreatNames[ind]; int entType = RogueSharp.DiceNotation.Dice.Roll("1d20"); if (entType <= 2) { er = Core.EntityFactory.CreateTroll(x, y, creatureName, m); } else if (entType > 2 && entType < 6) { er = Core.EntityFactory.CreateOrc(x, y, creatureName, m); } else if (entType >= 6 && entType < 12) { er = Core.EntityFactory.CreateKobold(x, y, creatureName, m); } else if (entType >= 12 && entType < 15) { er = Core.EntityFactory.CreateZombie(x, y, creatureName, m); } else { er = Core.EntityFactory.CreateRat(x, y, creatureName, m); } //add entity to entity dict Entities.Add(_entityID, er.ComponentList); EntityBitLookUp.Add(_entityID, er.LookUpBit); JustEntities.Add(_entityID, e); //add to PositionLookUp AddEntToPosition(x, y, e.UID); //try adding to schedule Components.Component ts = GetSingleComponentByID(_entityID, Core.ComponentTypes.Schedulable); if (ts != null) { Components.SchedulableComp sc = (Components.SchedulableComp)ts; int entTime = sc.Time; Game.ShedSystem.Add(e, entTime); } // inc entityID _entityID++; //add weapon to entity AddWeaponToEntity(e.UID); if (RogueSharp.DiceNotation.Dice.Roll("1d10") > 8) { AddPotionToEntity(e.UID); } }
public void Add(Core.Entity schedulable, int speed) { int key = _time + speed; if (!_scheduleables.ContainsKey(key)) { _scheduleables.Add(key, new List <Core.Entity>()); } _scheduleables[key].Add(schedulable); }
public bool Contains(Core.Entity e) { for (int i = 0; i < filters.Length; i++) { if (!this.filters[i].Contains(e)) { return(false); } } return(true); }
/// <summary> /// Initializes the Entity with data loaded from a DataSet file. /// </summary> /// <param name="entityData"> /// The data loaded from a DataSet file. /// </param> /// <param name="initFunctions"> /// Helper functions to aid in initialization. /// </param> public void Initialize(Core.Entity entityData, EntityFactory.EntityInitializeFunctions initFunctions) { this.Address = entityData.Address; this.ReadStaticProperties(entityData.StaticProperties, initFunctions); foreach (var unused in entityData.DynamicProperties) { Debug.LogError($"Attempted to read dynamic property in an entity of type {entityData.ClassName} but dynamic properties are not yet supported. Report this."); } this.OnPropertiesLoaded(); }
public void OnMessage(Core.MessageEventArgs e) { switch (e.MessageType) { case Core.EventTypes.Use: Core.UseEventArgs args = (Core.UseEventArgs)e; // position based? if (args.PositionBased) { Core.Entity entityUsing = args.EntityUsing; Components.PositionComp posComp = (Components.PositionComp)_entManager.GetSingleComponentByID(entityUsing.UID, Core.ComponentTypes.Position); int xPos = posComp.X; int yPos = posComp.Y; string posLU = xPos.ToString() + "-" + yPos.ToString(); if (_entManager.EntityPostionLookUp.TryGetValue(posLU, out List <Core.Entity> entry)) { foreach (Core.Entity li in entry) { int useableLU = (int)Core.ComponentTypes.Useable; int stairsLU = (int)Core.ComponentTypes.Stairs; int entBit = _entManager.EntityBitLookUp[li.UID]; if ((useableLU & entBit) > 0) { // is it a stair? if ((entBit & stairsLU) > 0) { // yay! it's a stair.... Components.StairComp stairComp = (Components.StairComp)_entManager.GetSingleComponentByID(li.UID, Core.ComponentTypes.Stairs); if (stairComp.isUp) { // go up } else { //go down } } } } } } else { // non position based, use inventory } break; } }
/// <summary> /// The create. /// </summary> /// <param name="data"> /// The data. /// </param> /// <param name="createFunctions"> /// The create functions. /// </param> /// <returns> /// The <see cref="Entity"/>. /// </returns> public static Entity Create(Core.Entity data, string filename, EntityCreateFunctions createFunctions) { var type = createFunctions.GetEntityType(data.ClassName); if (type == null) { // TODO: Only once for each type //ClassGenerator.GenerateClassFromEntity(data, filename); return(null); } var instance = Activator.CreateInstance(type) as Entity;//ScriptableObject.CreateInstance(type) as Entity; return(instance); }
private static Core.Entity ConvertEntity(Entity entity, ulong address, uint id, Func <Entity, ulong> getEntityAddress) { entity.OnPreparingToExport(); var convertedEntity = new Core.Entity( entity.GetType().Name, (uint)address, id, entity.ClassId, entity.Version, entity.MakeWritableStaticProperties(getEntityAddress, DataSetUtils.MakeEntityLink).ToArray(), entity.MakeWritableDynamicProperties(getEntityAddress).ToArray()); entity.OnFinishedExporting(); return(convertedEntity); }
public void AddDoor(int x, int y, bool isOpen) { var e = new Core.Entity(_entityID); Core.EntityReturner er = Core.EntityFactory.CreateDoor(x, y, isOpen); //add entity to entity dict Entities.Add(_entityID, er.ComponentList); EntityBitLookUp.Add(_entityID, er.LookUpBit); JustEntities.Add(_entityID, e); //add to PositionLookUp AddEntToPosition(x, y, e.UID); // inc entityID _entityID++; }
public void AddTreasure(int x, int y) { var e = new Core.Entity(_entityID); // List<Components.Component> compList = new List<Components.Component>(); Core.EntityReturner er = Core.EntityFactory.CreateGold(x, y, r.Next()); //add entity to entity dic Entities.Add(_entityID, er.ComponentList); EntityBitLookUp.Add(_entityID, er.LookUpBit); JustEntities.Add(_entityID, e); AddEntToPosition(x, y, e.UID); // inc entityID _entityID++; }
public void AddStairs(int x, int y, bool isUp) { var e = new Core.Entity(_entityID); // List<Components.Component> compList = new List<Components.Component>(); Core.EntityReturner er = Core.EntityFactory.CreateStairs(x, y, isUp); //add entity to entity dict Entities.Add(_entityID, er.ComponentList); EntityBitLookUp.Add(_entityID, er.LookUpBit); JustEntities.Add(_entityID, e); //add to PositionLookUp AddEntToPosition(x, y, e.UID); // inc entityID _entityID++; }
public void AddPotionToEntity(int eid) { Core.Entity e = new Core.Entity(_entityID); Core.EntityReturner er; int potionID = e.UID; er = Core.EntityFactory.CreateHealthPotion(); Entities.Add(_entityID, er.ComponentList); EntityBitLookUp.Add(_entityID, er.LookUpBit); JustEntities.Add(_entityID, e); _entityID++; // add potion to entity Core.InventoryAddEventArgs addEvent = new Core.InventoryAddEventArgs(Core.EventTypes.InventoryAdd, eid, potionID); Core.EventBus.Publish(Core.EventTypes.InventoryAdd, addEvent); }
public void Remove(Core.Entity scheduleable) { KeyValuePair <int, List <Core.Entity> > schedulabelListFound = new KeyValuePair <int, List <Core.Entity> >(-1, null); foreach (var schedulableList in _scheduleables) { if (schedulableList.Value.Contains(scheduleable)) { schedulabelListFound = schedulableList; break; } } if (schedulabelListFound.Value != null) { schedulabelListFound.Value.Remove(scheduleable); if (schedulabelListFound.Value.Count <= 0) { _scheduleables.Remove(schedulabelListFound.Key); } } }
public void Init(Core.Entity e) { }
public Dictionary <int, List <Components.Component> > LoadEntities() { Dictionary <int, List <Components.Component> > returnDict = new Dictionary <int, List <Components.Component> >(); string inputJson = System.IO.File.ReadAllText("ents.json"); Dictionary <int, Dictionary <Core.ComponentTypes, List <Dictionary <string, string> > > > output = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <int, Dictionary <Core.ComponentTypes, List <Dictionary <string, string> > > > >(inputJson); foreach (KeyValuePair <int, Dictionary <Core.ComponentTypes, List <Dictionary <string, string> > > > entry in output) { int eid = entry.Key; Core.Entity ent = new Core.Entity(eid); List <Components.Component> componentList = new List <Components.Component>(); Dictionary <Core.ComponentTypes, List <Dictionary <string, string> > > compDict = entry.Value; foreach (KeyValuePair <Core.ComponentTypes, List <Dictionary <string, string> > > inner in compDict) { if (inner.Key == Core.ComponentTypes.Position) { List <Dictionary <string, string> > comps = inner.Value; foreach (Dictionary <string, string> cDict in comps) { int x = Int32.Parse(cDict["X"]); int y = Int32.Parse(cDict["Y"]); Components.PositionComp pc = new Components.PositionComp(x, y); componentList.Add(pc); } } else if (inner.Key == Core.ComponentTypes.Render) { List <Dictionary <string, string> > comps = inner.Value; foreach (Dictionary <string, string> cDict in comps) { char glyph = cDict["Glyph"][0]; float r = float.Parse(cDict["ColorR"]); float g = float.Parse(cDict["ColorG"]); float b = float.Parse(cDict["ColorB"]); RLNET.RLColor c = new RLNET.RLColor(r, g, b); Components.RenderComp rc = new Components.RenderComp(glyph, c); componentList.Add(rc); } } //else if (inner.Key == Core.ComponentTypes.Health) //{ // List<Dictionary<string, string>> comps = inner.Value; // foreach (Dictionary<string, string> cDict in comps) // { // int h = Int32.Parse(cDict["Health"]); // int mh = Int32.Parse(cDict["MaxHealth"]); // Components.HealthComp msc = new Components.HealthComp(); // msc.Health = h; // msc.MaxHealth = mh; // componentList.Add(msc); // } //} //else if (inner.Key == Core.ComponentTypes.Attributes) //{ // List<Dictionary<string, string>> comps = inner.Value; // foreach (Dictionary<string, string> cDict in comps) // { // int aw = Int32.Parse(cDict["Awareness"]); // Components.AttributesComp msc = new Components.AttributesComp(aw); // componentList.Add(msc); // } //} //else if (inner.Key == Core.ComponentTypes.AI) //{ // List<Dictionary<string, string>> comps = inner.Value; // foreach (Dictionary<string, string> cDict in comps) // { // bool aw = bool.Parse(cDict["HasAI"]); // Components.AIComp msc = new Components.AIComp(); // msc.HasAI = aw; // componentList.Add(msc); // } //} } returnDict.Add(eid, componentList); } return(returnDict); }
public void OnMessage(Core.MessageEventArgs e) { switch (e.MessageType) { case Core.EventTypes.ActionReqMove: // request movement Core.MovementReqEventArgs moveReq = (Core.MovementReqEventArgs)e; Core.Entity entoToMove = moveReq.EntRequestingMove; int eid = entoToMove.UID; Core.Directions dirToMove = moveReq.Direction; Components.PositionComp posComp = (Components.PositionComp)_entityManager.GetSingleComponentByID(eid, Core.ComponentTypes.Position); int newX = posComp.X; int newY = posComp.Y; switch (dirToMove) { case Core.Directions.None: break; case Core.Directions.DownLeft: newX = posComp.X - 1; newY = posComp.Y + 1; break; case Core.Directions.Down: newX = posComp.X; newY = posComp.Y + 1; break; case Core.Directions.DownRight: newX = posComp.X + 1; newY = posComp.Y + 1; break; case Core.Directions.Left: newX = posComp.X - 1; newY = posComp.Y; break; case Core.Directions.Centre: break; case Core.Directions.Right: newX = posComp.X + 1; newY = posComp.Y; break; case Core.Directions.UpLeft: newX = posComp.X - 1; newY = posComp.Y - 1; break; case Core.Directions.Up: newX = posComp.X; newY = posComp.Y - 1; break; case Core.Directions.UpRight: newX = posComp.X + 1; newY = posComp.Y - 1; break; } //check for collision Core.CollisionEventArgs msg = new Core.CollisionEventArgs(Core.EventTypes.CollisionCheck, entoToMove, newX, newY); Core.EventBus.Publish(Core.EventTypes.CollisionCheck, msg); break; case Core.EventTypes.MoveOK: Core.MoveOkayEventArgs m = (Core.MoveOkayEventArgs)e; if (_dungeonMap.GetCell(m.newX, m.newY).IsWalkable) { // get current pos Core.Entity ent = m.EntRequestingMove; Components.PositionComp pos = (Components.PositionComp)_entityManager.GetSingleComponentByID(ent.UID, Core.ComponentTypes.Position); Components.AIComp aiComp = (Components.AIComp)_entityManager.GetSingleComponentByID(ent.UID, Core.ComponentTypes.AI); aiComp.TurnsSinceMove = 0; _dungeonMap.SetIsWalkable(pos.X, pos.Y, true); _entityManager.RemoveEntFromPosition(pos.X, pos.Y, ent.UID); pos.X = m.newX; pos.Y = m.newY; _dungeonMap.SetIsWalkable(m.newX, m.newY, false); _entityManager.AddEntToPosition(m.newX, m.newY, ent.UID); } break; case Core.EventTypes.DirectMove: Core.DirectMoveEventArgs dm = (Core.DirectMoveEventArgs)e; //check for collision Core.CollisionEventArgs checkMsg = new Core.CollisionEventArgs(Core.EventTypes.CollisionCheck, dm.EntRequestingMove, dm.PointToMoveTo.X, dm.PointToMoveTo.Y); Core.EventBus.Publish(Core.EventTypes.CollisionCheck, checkMsg); break; case Core.EventTypes.NoMove: Core.NoMoveEventArgs nmEvent = (Core.NoMoveEventArgs)e; Components.AIComp aiC = (Components.AIComp)_entityManager.GetSingleComponentByID(nmEvent.EntNotMoving.UID, Core.ComponentTypes.AI); if (aiC != null) { aiC.TurnsSinceMove++; } //Game.MessageLog.Add($"Turns Since = {aiC.TurnsSinceMove.ToString()}"); break; } }
public bool Contains(Core.Entity e) { return((e.Flags & this.Mask) == this.Mask); }
public CompoundShape() { this.shapes = new List <Container>(); this.results = new List <CollisionData>(); this.stub = new Entity(Vector2.Zero); }
public bool Contains(Core.Entity e) { return(this.Function(e)); }
public bool Contains(Core.Entity e) { return(this.func(e)); }
private void HandlePointerDown(object sender, PointerRoutedEventArgs e) { _prevPoint = e.GetCurrentPoint((UIElement)sender); _pointerDown = true; switch (ToolMode) { case EditMode.Object: var selected = ObjTypeList.SelectedItem; if (selected is string) { var pos = _screen.Camera.Owner.Transform.LocalTranslation; pos.Z = 0; pos.X += (float)_prevPoint.Position.X; pos.Y += (float)_prevPoint.Position.Y + 100; // +100 to offset camera position pos = _gameGrid.Snap(pos); _selected = _screen.AddObject(selected as string, null, pos.X, pos.Y, 0, null); if (((string)selected).ToLower() == "tree") { _screen.Objectives.CompleteObjective("placetree"); } } break; case EditMode.Move: { var pos = _screen.Camera.Owner.Transform.LocalTranslation; pos.X += (float)_prevPoint.Position.X; pos.Y += (float)_prevPoint.Position.Y + 100; // +100 to offset camera position _selected = ClickDetector.GetClicked(pos.X, pos.Y); if (_selected != null) { _offset = _selected.Transform.Translation - pos; _offset.Z = 0; } } break; case EditMode.Road: StampTile((float)_prevPoint.Position.X, (float)_prevPoint.Position.Y, (int)BrushSizeSlider.Value, 1); _screen.Objectives.CompleteObjective("placeroad"); break; case EditMode.Zone: StampTile((float)_prevPoint.Position.X, (float)_prevPoint.Position.Y, (int)ZoneBrushSizeSlider.Value, 2, 0); _screen.Objectives.CompleteObjective("placezone"); break; case EditMode.Delete: if (DeleteMode == ObjectType.Road) { if (StampTile((float)_prevPoint.Position.X, (float)_prevPoint.Position.Y, (int)DelBrushSizeSlider.Value, 0, 1) > 0) { _screen.Objectives.CompleteObjective("deleteroads"); } } else if (DeleteMode == ObjectType.Zone) { StampTile((float)_prevPoint.Position.X, (float)_prevPoint.Position.Y, (int)DelBrushSizeSlider.Value, 0, 2); } break; } }
public bool Contains(Core.Entity e) { return(!this.filter.Contains(e)); }
static async Task Main(string[] args) { //setup sdl input system Engine.Instance.AddModule <Input.InputModule>(); //setup vulkan instance Engine.Instance.AddModule <Graphics.GraphicsModule>(); //setup open al //Engine.Instance.AddModule<Audio.AudioModule>(); //create new scene var scene = new Core.Scene(); Input.InputModule.OnApplicationClose += () => Engine.Instance.IsRunning = false; //create a window var window = new Graphics.Window( "Tortuga", 0, 0, 1920, 1080 ); //camera Graphics.Camera mainCamera; { var entity = new Core.Entity(); mainCamera = await entity.AddComponent <Graphics.Camera>(); //set camera's render target to be the window mainCamera.RenderTarget = window; scene.AddEntity(entity); } //mesh var mesh = await AssetLoader.LoadObj("Assets/Models/Sphere.obj"); var material = await AssetLoader.LoadMaterial("Assets/Materials/Bricks.instanced.jsonc"); for (int i = -3; i < 4; i++) { for (int j = -3; j < 4; j++) { var entity = new Core.Entity(); //attach transform var transform = entity.GetComponent <Core.Transform>(); transform.Position = new Vector3(i * 5, j * 5, -40); //attach mesh renderer var renderer = await entity.AddComponent <Graphics.MeshRenderer>(); //setup mesh renderer.Mesh = mesh; //setup material renderer.Material = material; scene.AddEntity(entity); } } //light { var entity = new Core.Entity(); //attach light var light = await entity.AddComponent <Graphics.Light>(); scene.AddEntity(entity); } // //user interface // { // var win = new UI.UiWindow(); // win.Position = new Vector2(100, 100); // win.Scale = new Vector2(500, 500); // scene.AddUserInterface(win); // var windowContent = new UI.UiRenderable(); // windowContent.RenderFromCamera = mainCamera; // windowContent.PositionXConstraint = new UI.PercentConstraint(0.0f); // windowContent.PositionYConstraint = new UI.PercentConstraint(0.0f); // windowContent.ScaleXConstraint = new UI.PercentConstraint(1.0f); // windowContent.ScaleYConstraint = new UI.PercentConstraint(1.0f); // win.Content.Add(windowContent); // } //scene.AddSystem<Audio.AudioSystem>(); scene.AddSystem <Graphics.RenderingSystem>(); scene.AddSystem <CameraMovement>(); Engine.Instance.LoadScene(scene); await Engine.Instance.Run(); }