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); }
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>(); }