public MateEntity(IPlayerEntity owner, CharacterMateDto dto, NpcMonsterDto npcMonster) : base(VisualType.Monster, dto.Id) { Owner = owner; Mate = dto; NpcMonster = npcMonster; Level = dto.Level; LevelXp = dto.Experience; Hp = dto.Hp; HpMax = dto.Hp; Mp = dto.Mp; MpMax = dto.Mp; IsTeamMember = dto.IsTeamMember; MateType = dto.MateType; PetId = 0; Movable = new MovableComponent(this, NpcMonster.Speed) { Actual = new Position <short> { X = dto.MapX, Y = dto.MapY }, Destination = new Position <short> { X = dto.MapX, Y = dto.MapY } }; _visibility = new VisibilityComponent(this); SkillComponent = new SkillComponent(this); Components = new Dictionary <Type, IComponent> { { typeof(VisibilityComponent), _visibility }, { typeof(MovableComponent), Movable }, { typeof(SkillComponent), SkillComponent } }; }
/// <summary> /// Befores the call. /// </summary> /// <param name="session">The session.</param> public void BeforeCall(IRpcSession session) { // TODO: Use INotifyChangeCollection to set up Role = session.Get <Entity>(); MoveState = Role.GetMovable(); Position = Role.GetPos(); Unit = Role.Get <UnitComponent>(); }
/// <summary> /// Creates a new <see cref="MonsterEntity"/> instance. /// </summary> /// <param name="context"></param> public MonsterEntity() { Moves = new MovableComponent(); Timers = new TimerComponent(); Follow = new FollowComponent(); Interaction = new InteractionComponent(); Battle = new BattleComponent(); Attributes = new AttributeComponent(); }
public override void Do(PlayerObject player) { var destination = player.Movable.IntPosition + 2 * Constants.Directions[player.Movable.Direction]; if (MovableComponent.CanMove(destination)) { player.Movable.Position = destination; } }
/// <summary> /// Creates a new <see cref="NpcEntity"/> instance. /// </summary> /// <param name="context"></param> public NpcEntity() { Object.Type = WorldObjectType.Mover; Timers = new TimerComponent(); Interaction = new InteractionComponent(); Battle = new BattleComponent(); Attributes = new AttributeComponent(); Moves = new MovableComponent(); Follow = new FollowComponent(); }
public PlayerEntity(ISession session, CharacterDto dto, IEnumerable <CharacterSkillDto> skills, IEnumerable <CharacterQuicklistDto> quicklist) : base(VisualType.Character, dto.Id) { Session = session; Character = dto; Relations = new RelationList(); Quicklist = new QuicklistComponent(this, quicklist); HpMax = Algorithm.GetHpMax(dto.Class, dto.Level); Hp = HpMax; MpMax = Algorithm.GetMpMax(dto.Class, dto.Level); Mp = MpMax; BasicArea = 1; Inventory = new InventoryComponent(this); Movable = new MovableComponent(this) { Actual = new Position <short> { X = dto.MapX, Y = dto.MapY }, Destination = new Position <short> { X = dto.MapX, Y = dto.MapY } }; _visibility = new VisibilityComponent(this); SkillComponent = new SkillComponent(this, skills); Locomotion = new LocomotionComponent(this); Components = new Dictionary <Type, IComponent> { { typeof(VisibilityComponent), _visibility }, { typeof(InventoryComponent), Inventory }, { typeof(SkillComponent), SkillComponent }, { typeof(LocomotionComponent), Locomotion } }; Mates = new List <IMateEntity>(); #region Stat Defence = (short)Algorithm.GetDefenceClose(Character.Class, Level); DefenceDodge = (short)Algorithm.GetDodgeClose(Character.Class, Level); DistanceDefence = (short)Algorithm.GetDefenceRange(Character.Class, Level); DistanceDefenceDodge = (short)Algorithm.GetDodgeRanged(Character.Class, Level); MagicalDefence = (short)Algorithm.GetDefenceMagic(Character.Class, Level); MinHit = (short)Algorithm.GetMinHit(Character.Class, Level); MaxHit = (short)Algorithm.GetMaxHit(Character.Class, Level); HitRate = (byte)Algorithm.GetHitRate(Character.Class, Level); CriticalChance = Algorithm.GetHitCritical(Character.Class, Level); CriticalRate = (byte)Algorithm.GetHitCriticalRate(Character.Class, Level); DistanceCriticalChance = Algorithm.GetDistCritical(Character.Class, Level); DistanceCriticalRate = Algorithm.GetDistCriticalRate(Character.Class, Level); #endregion Stat }
public override void Move(MovableComponent movable, int direction) { var position = movable.IntPosition; while (MovableComponent.CanMove(position + Constants.Directions[direction])) { position += Constants.Directions[direction]; } movable.Move(position); }
public override void Idle(MovableComponent movable) { foreach (var i in new int[] { 0, 2, 1, 3 }) { var direction = (movable.Direction + i) % 4; if (movable.CanMove(direction)) { movable.Move(direction); return; } } }
protected override void OnUpdate() { Entity gunEntity = GetSingletonEntity <GunComponent>(); int pos = 1; if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) { pos--; } if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) { pos++; } if (Input.GetKey(KeyCode.Space) && Time.ElapsedTime >= _cooldownTimer) { GunComponent gunComponent = EntityManager.GetComponentData <GunComponent>(gunEntity); _cooldownTimer = Time.ElapsedTime + gunComponent.Cooldown; EntityQueryDesc query = new EntityQueryDesc { None = new ComponentType[] { ComponentType.ReadOnly <IsMoving>() }, All = new ComponentType[] { typeof(Translation), typeof(MovableComponent), ComponentType.ReadOnly <BulletComponent>() } }; EntityQuery entityQuery = GetEntityQuery(query); if (!entityQuery.IsEmptyIgnoreFilter) { NativeArray <Entity> entities = entityQuery.ToEntityArray(Allocator.Persistent); Entity entity = entities[0]; float3 direction = Quaternion.AngleAxis(60 - 30 * pos, Vector3.back) * Vector3.up; MovableComponent component = EntityManager.GetComponentData <MovableComponent>(entity); component.Direction = direction; PostUpdateCommands.AddComponent(entity, new IsMoving()); PostUpdateCommands.SetComponent(entity, component); entities.Dispose(); GameManager.Instance.ShotFired(); } } var materialReferencesEntity = GetSingletonEntity <MaterialReferences>(); var materialReferences = EntityManager.GetSharedComponentData <MaterialReferences>(materialReferencesEntity); RenderMesh renderMesh = EntityManager.GetSharedComponentData <RenderMesh>(gunEntity); Material newMaterial = materialReferences.GunPositions[pos]; if (newMaterial != renderMesh.material) { renderMesh.material = newMaterial; PostUpdateCommands.SetSharedComponent(gunEntity, renderMesh); } }
/// <summary> /// Creates a new <see cref="PlayerEntity"/> instance. /// </summary> /// <param name="context"></param> public PlayerEntity(IPlayerFactory playerFactory) { Moves = new MovableComponent(); PlayerData = new PlayerDataComponent(); Taskbar = new TaskbarComponent(); Follow = new FollowComponent(); Interaction = new InteractionComponent(); Battle = new BattleComponent(); Timers = new TimerComponent(); Attributes = new AttributeComponent(); QuestDiary = new QuestDiaryComponent(); SkillTree = new SkillTreeComponent(); Inventory = new InventoryContainerComponent(); _playerFactory = playerFactory; }
public MonsterEntity(MapMonsterDto dto, IEnumerable <NpcMonsterSkillDto> skills) : base(VisualType.Monster, dto.Id) { Movable = new MovableComponent(this, dto.IsMoving ? dto.NpcMonster.Speed : (byte)0) { Actual = new Position <short> { X = dto.MapX, Y = dto.MapY }, Destination = new Position <short> { X = dto.MapX, Y = dto.MapY } }; Speed = (byte)(dto.IsMoving ? dto.NpcMonster.Speed : 0); Level = dto.NpcMonster.Level; Hp = dto.NpcMonster.MaxHp; HpMax = dto.NpcMonster.MaxHp; Mp = dto.NpcMonster.MaxMp; MpMax = dto.NpcMonster.MaxMp; BasicArea = dto.NpcMonster.BasicArea; SkillComponent = new SkillComponent(this, skills); NpcMonster = dto.NpcMonster; MapMonster = dto; _visibility = new VisibilityComponent(this); Components = new Dictionary <Type, IComponent> { { typeof(VisibilityComponent), _visibility }, { typeof(MovableComponent), Movable }, { typeof(NpcMonsterComponent), new NpcMonsterComponent(this, dto) }, { typeof(SkillComponent), SkillComponent } }; #region Stat Defence = dto.NpcMonster.CloseDefence; DefenceDodge = dto.NpcMonster.DefenceDodge; DistanceDefence = dto.NpcMonster.DistanceDefence; DistanceDefenceDodge = dto.NpcMonster.DistanceDefenceDodge; MagicalDefence = dto.NpcMonster.MagicDefence; MinHit = dto.NpcMonster.DamageMinimum; MaxHit = dto.NpcMonster.DamageMaximum; HitRate = (byte)dto.NpcMonster.Concentrate; CriticalChance = dto.NpcMonster.CriticalChance; CriticalRate = dto.NpcMonster.CriticalRate; #endregion Stat }
public NpcEntity(MapNpcDto npc, ShopDto shop) : base(VisualType.Npc, npc.Id) { Movable = new MovableComponent(this, npc.IsMoving ? npc.NpcMonster.Speed : (byte)0) { Actual = new Position <short>(npc.MapX, npc.MapY), Destination = new Position <short>(npc.MapX, npc.MapY), DirectionType = npc.Position }; Speed = (byte)(npc.IsMoving ? npc.NpcMonster.Speed : 0); MapNpc = npc; Level = npc.NpcMonster.Level; Hp = npc.NpcMonster.MaxHp; Mp = npc.NpcMonster.MaxMp; HpMax = npc.NpcMonster.MaxHp; MpMax = npc.NpcMonster.MaxMp; BasicArea = npc.NpcMonster.BasicArea; Shop = shop != null ? new Shop(shop, this) : null; SkillComponent = new SkillComponent(this); _visibility = new VisibilityComponent(this); Components = new Dictionary <Type, IComponent> { { typeof(VisibilityComponent), _visibility }, { typeof(MovableComponent), Movable }, { typeof(NpcMonsterComponent), new NpcMonsterComponent(this, npc) }, { typeof(SkillComponent), SkillComponent } }; #region Stat Defence = npc.NpcMonster.CloseDefence; DefenceDodge = npc.NpcMonster.DefenceDodge; DistanceDefence = npc.NpcMonster.DistanceDefence; DistanceDefenceDodge = npc.NpcMonster.DistanceDefenceDodge; MagicalDefence = npc.NpcMonster.MagicDefence; MinHit = npc.NpcMonster.DamageMinimum; MaxHit = npc.NpcMonster.DamageMaximum; HitRate = (byte)npc.NpcMonster.Concentrate; #endregion Stat }
static void Main(string[] args) { //TypeLayout.PrintLayout<OOP.Customer>(); //TypeLayout.PrintLayout<DOD.CustomerValue>(); OOP.Node root = new Node(3); root.AddChild(new Node(4)); OOP.Node right = new Node(5); right.AddChild(new Node(6)); root.AddChild(right); root.Process(); DOD.Tree tree = new Tree(root); tree.Process(); ECS.Manager manager = new Manager(); manager.RegisterSystem(new MoveSystem()); manager.RegisterSystem(new RenderingSystem()); ECS.Entity entity = manager.CreateEntity(); var startPosition = new PositionComponent() { X = 0.0, Y = 0.0 }; var initialMovement = new MovableComponent() { Direction = 0.0, Speed = 1.0 }; ComponentManager <PositionComponent> .Register(in entity, in startPosition); ComponentManager <MovableComponent> .Register(in entity, in initialMovement); manager.Update(); manager.Update(); }
private void Awake() => movable = GetComponent <MovableComponent>();
public virtual void Move(MovableComponent movable, int direction) => movable.Move(direction);
public virtual void Idle(MovableComponent movable) { }
public Bubi() { InitializeComponent(); movableComponent = new MovableComponent(this, Padding.Empty); }
public Bubi(string data) { InitializeComponent(); movableComponent = new MovableComponent(this, Padding.Empty); SetItemData(data); }