Exemplo n.º 1
0
        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>();
        }