public static void RLCreateEffect(this EcsWorld world, Vector2 position, EffectPreset effectPreset) { var go = VExt.LayoutSpriteObject(ObjData.r_PrefabSprite, position, ObjData.t_GameObjectsOther, SortingLayer.Effect.ToString(), effectPreset.spriteSingle); var e = world.NewEntityWithGameObject(go); e.Set <EffectComponent>().Duration = effectPreset.duration; }
void LayoutWallObject(ref List <Vector2Int> emptyCells) { var cell = VExt.NextFromList(emptyCells); var go = VExt.LayoutAnimationObject( ObjData.r_PrefabPhysicsAnimation, cell.x, cell.y, "wall", ObjData.t_GameObjectsRoot, SortingLayer.Object.ToString(), VExt.NextFromArray(ObjData.p_WallsPresets.Animation)); var e = _world.NewEntityWith(out GameObjectComponent goComponent, out WallComponent _); goComponent.Transform = go.transform; goComponent.GO = go.GetComponent <PrefabComponentsShortcut>(); goComponent.GO.NPCNameText.text = e.GetInternalId().ToString(); var dataComponent = e.Set <NPCDataSheetComponent>(); dataComponent.Stats.MaxHealthPoint = UnityEngine.Random.Range(minWallHP, maxWallHP + 1); dataComponent.Stats.HealthPoint = dataComponent.Stats.MaxHealthPoint; emptyCells.Remove(cell); }
void LayoutEnemyObject(ref List <Vector2Int> emptyCells, EnemyPreset enemyPreset) { var cell = VExt.NextFromList(emptyCells); _world.RLCreateEnemy(cell, enemyPreset); emptyCells.Remove(cell); }
void NewFruitHeal(ref List <Vector2Int> emptyCells) { var pos = VExt.NextFromList(emptyCells); _presets.CollectingItems.TryGetValue("FruitHeal", out CollectingItemPreset preset); _world.RLNewLevelObject(preset, pos); emptyCells.Remove(pos); }
public static EcsEntity RLNewLevelObject(this EcsWorld world, CollectingItemPreset preset, Vector2 pos) { var go = VExt.NewGameObject(preset.GameObject, pos); var e = world.NewEntityWithGameObject(go, false); var c = e.Set <CollectItemComponent>(); c.Spell = preset.Spell; return(e); }
void IEcsRunSystem.Run() { foreach (var i in _attackingEntities) { ref var e = ref _attackingEntities.Entities[i]; var c1 = _attackingEntities.Get1[i]; var c2 = _attackingEntities.Get2[i]; var c3 = _attackingEntities.Get3[i]; if (!c1.Run) { c1.Run = true; var c = e.Set <ActionAnimationComponent>(); c.Animation = AnimatorField.AnimationAttack; } if (c1.Run && !c1.OnAttack && c2.GO.AnimatorActionTime > attackTime) { c1.OnAttack = true; if (c1.PrimaryOrSecondaryWeapon) { _world.RLCreateEffect(c1.TargetPosition, c3.PrimaryWeapon.HitEffect); _world.RLApplyDamage(c1.Target, e, c3.PrimaryWeapon.Damage); if (c3.PrimaryWeapon.SpellPreset != null) { _world.RLApplySpell(c1.Target, e, c3.PrimaryWeapon.SpellPreset); } } else { var go = VExt.LayoutSpriteObject( ObjData.r_PrefabPhysicsSprite, c2.GO.Rigidbody.position, ObjData.t_GameObjectsOther, SortingLayer.Effect.ToString(), c3.SecondaryWeapon.ProjectileSprite); _world.NewEntityWith(out GameObjectComponent goComponent, out ProjectileComponent projectileComponent); goComponent.Transform = go.transform; goComponent.GO = go.GetComponent <PrefabComponentsShortcut>(); projectileComponent.StartPosition = c2.GO.Rigidbody.position; projectileComponent.GoalPosition = c1.TargetPosition; projectileComponent.Caster = e; projectileComponent.Target = c1.Target; projectileComponent.Weapon = c3.SecondaryWeapon; } } if (c1.Run && c1.OnAttack && !c2.GO.AnimatorActionRun) { e.Unset <ActionAttackComponent>(); } }
public static void RLCreateEnemy(this EcsWorld world, Vector2 position, EnemyPreset enemyPreset) { var go = VExt.LayoutAnimationObject(ObjData.r_PrefabPhysicsAnimation, position, enemyPreset.PresetName, ObjData.t_GameObjectsRoot, SortingLayer.Character.ToString(), enemyPreset.Animation); var e = world.NewEntityWithGameObject(go, true); e.Set <EnemyComponent>(); var data = e.Set <NPCDataSheetComponent>(); data.Stats = new NPCStats(enemyPreset); data.PrimaryWeapon = new NPCWeapon(enemyPreset.PrimaryWeaponItem, new WB_DamageOnContact()); data.SecondaryWeapon = new NPCWeapon(enemyPreset.PrimaryWeaponItem, new WB_DamageOnContact()); data.StatusEffects = new List <StatusEffect>(); }
public static EcsEntity RLNewLevelObject(this EcsWorld world, LevelTilePreset preset, Vector2 pos) { var go = VExt.NewGameObject(preset.GameObject, pos); var e = world.NewEntityWithGameObject(go, false); if (preset.Obstacle) { e.Set <ObstacleComponent>(); } if (preset.ExitPoint) { e.Set <ExitPointComponent>(); } return(e); }
public static EcsEntity RLNewLevelObject(this EcsWorld world, PlayerPreset preset, Vector2 pos) { var go = VExt.NewGameObject(preset.GameObject, pos); var e = world.NewEntityWithGameObject(go, false); e.Set <PlayerComponent>(); var data = e.Set <NPCDataSheetComponent>(); data.Stats = Service <NPCDataSheet> .Get().NPCStats; data.PrimaryWeapon = Service <NPCDataSheet> .Get().PriamaryWeapon; data.SecondaryWeapon = Service <NPCDataSheet> .Get().SecondaryWeapon; data.StatusEffects = new List <StatusEffect>(); return(e); }
void CreateTileOverlay(Vector2 target) { if (!CheckObstacleCollision(target)) { var go = VExt.LayoutSpriteObject( ObjData.r_PrefabSprite, target.x, target.y, "tileOverlay", ObjData.t_GameObjectsOther, SortingLayer.TileOverlay.ToString(), ObjData.p_Overlay.spriteSingle); _world.NewEntityWith(out GameObjectComponent goComponent, out TargetTileComponent targetTile); goComponent.Transform = go.transform; goComponent.GO = go.GetComponent <PrefabComponentsShortcut>(); SetupTargetTile(target, ref goComponent, ref targetTile); } }
public void LevelCreate() { var rooms = new Rooms(); var roomsArray = VExt.NextFromArray(rooms.RoomsArray); Array.Reverse(roomsArray); int width = roomsArray[0].Length; int height = roomsArray.Length;; List <Vector2Int> emptyCells = new List <Vector2Int>(); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (roomsArray[i][j] != ' ') { NewLevelTile(rooms.GetNameID('.'), new Vector2(j, i)); } switch (roomsArray[i][j]) { case '.': emptyCells.Add(new Vector2Int(j, i)); break; case '#': NewLevelTile(rooms.GetNameID('#'), new Vector2(j, i)); break; case 'X': NewLevelTile(rooms.GetNameID('X'), new Vector2(j, i)); break; case '@': NewPlayer(j, i); break; case 'A': NewLevelTile(rooms.GetNameID('A'), new Vector2(j, i)); break; default: break; } } } for (int i = 0; i < boostHPCount; i++) { //LayoutBoostHPObject(ref emptyCells); } for (int i = 0; i < healCount; i++) { NewFruitHeal(ref emptyCells); } for (int i = 0; i < wallCount; i++) { LayoutWallObject(ref emptyCells); } for (int i = 0; i < enemy01Count; i++) { LayoutEnemyObject(ref emptyCells, ObjData.p_Enemy01Preset); } for (int i = 0; i < enemy02Count; i++) { LayoutEnemyObject(ref emptyCells, ObjData.p_Enemy02Preset); } }