private MachineElement FilterMachineElementsWithoutToolholder(MachineElement me)
        {
            MachineElement result   = null;
            var            children = new List <MachineElement>();

            if (me.Children != null && me.Children.Count > 0)
            {
                foreach (var item in me.Children)
                {
                    var e = FilterMachineElementsWithoutToolholder(item);

                    if (e != null)
                    {
                        children.Add(e);
                    }
                }

                if (children.Count > 0)
                {
                    result          = me;
                    result.Children = children;
                }
            }
            else if (me.ToolHolderType != MachineModels.Enums.ToolHolderType.None)
            {
                result = me;
            }

            return(result);
        }
        private MachineElementViewModel ToViewModel(MachineElement me)
        {
            MachineElementViewModel vm = null;

            if (me != null)
            {
                if (me.ToolHolderType != MachineModels.Enums.ToolHolderType.None)
                {
                    vm = new ToolHolderViewModel()
                    {
                        ToolHolderId = me.ToolHolderData.Id, ToolHolderType = me.ToolHolderType
                    };
                }
                else
                {
                    vm = new MachineElementViewModel();
                }

                vm.Name = me.Name;

                if (me.Children.Count > 0)
                {
                    var children = new List <MachineElementViewModel>();

                    foreach (var item in me.Children)
                    {
                        children.Add(ToViewModel(item));
                    }

                    vm.Children = children;
                }
            }

            return(vm);
        }
Exemple #3
0
    void OnCollisionStay2D(Collision2D collision)
    {
        // Player
        Greek zorba = collision.gameObject.GetComponent <Greek>();

        if (zorba != null && state == GreekState.DASHING)
        {
            zorba.shock();
            nextForce = Vector3.zero;
        }

        // Element
        MachineElement element = collision.gameObject.GetComponent <MachineElement>();

        if (element != null)
        {
            // thrown element ?
            if (element.getState() == ElementState.THROWN)
            {
                if (element.getThrower() != this)
                {
                    shock();
                }
            }
            else if (possession == null && state != GreekState.SHOCKED)
            {
                element.setOwner(this);
                possession = element;
            }
        }
    }
        private MachineElement ImportImplementation(string filePath, Action <string> setMachProjectFile = null)
        {
            MachineElement m = null;

            if (!string.IsNullOrEmpty(filePath))
            {
                var info = new FileInfo(filePath);
                //var extractPath = GetExtractionPath();
                var extractPath = $"{info.DirectoryName}\\{Path.GetFileNameWithoutExtension(info.Name)}";
                var dirInfo     = new DirectoryInfo(extractPath);
                var projectFile = $"{extractPath}\\{_machineFileName}";

                if (dirInfo.Exists)
                {
                    dirInfo.Delete(true);
                }

                ZipFile.ExtractToDirectory(filePath, extractPath);

                var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MachineElement));

                using (var reader = new StreamReader(projectFile))
                {
                    m = (MachineElement)serializer.Deserialize(reader);
                }

                if (m != null)
                {
                    UpdateModelsFiles(m, extractPath);
                }
                setMachProjectFile?.Invoke(projectFile);
            }

            return(m);
        }
        private bool AddModelsFilesToArchive(MachineElement me, ZipArchive archive)
        {
            bool result = true;

            if (!string.IsNullOrEmpty(me.ModelFile))
            {
                FileInfo info = new FileInfo(me.ModelFile);

                if (info.Exists)
                {
                    var name = info.Name;

                    if (!_entrieeNames.Contains(name))
                    {
                        var entry = archive.CreateEntryFromFile(me.ModelFile, name);
                        _entrieeNames.Add(name);
                    }
                }
            }

            foreach (var item in me.Children)
            {
                AddModelsFilesToArchive(item, archive);
            }

            return(result);
        }
        private void RemoveElementData(MachineElement m)
        {
            if (m.Color != null)
            {
                Colors.Remove(m.Color);
            }
            if (m.Transformation != null)
            {
                Matrices.Remove(m.Transformation);
            }
            if (m.LinkToParent != null)
            {
                Links.Remove(m.LinkToParent);
            }

            if (m is ColliderElement c)
            {
                RemoveElementData(c);
            }
            //else if (m is InserterElement ins) RemoveElementData(ins);
            else if (m is InjectorElement inj)
            {
                RemoveElementData(inj);
            }
            else if (m is PanelHolderElement p)
            {
                RemoveElementData(p);
            }
            else if (m is ToolholderElement t)
            {
                RemoveElementData(t);
            }
        }
Exemple #7
0
 void dropElement()
 {
     if (possession != null)
     {
         possession.thrown(Vector3.zero, possession.transform.position);
         possession = null;
     }
 }
Exemple #8
0
        private MachineElement GetMachine(string machProjectFile)
        {
            MachineElement machine = null;

            DataSource.LoadMachine(machProjectFile, m => machine = m);

            return(machine);
        }
        private static void SaveMachineProjectFile(MachineElement m, string machProjectFile)
        {
            var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MachineElement));

            using (var writer = new System.IO.StreamWriter(machProjectFile))
            {
                serializer.Serialize(writer, m);
            }
        }
Exemple #10
0
 void throwElement()
 {
     if (nextForce == Vector3.zero)
     {
         dropElement();
     }
     possession.thrown(nextForce * 3, transform.position + (nextForce * 3).normalized);
     possession = null;
 }
        private void RemoveElement(MachineElement m)
        {
            foreach (var item in m.Children)
            {
                RemoveElement(item);
            }

            RemoveElementData(m);
            MachineElements.Remove(m);
        }
Exemple #12
0
        private bool AddProjectFileToArchive(MachineElement me, ZipArchive archive)
        {
            bool result = true;

            FilterModelsNames(me);

            var entry = archive.CreateEntry(_machineFileName);

            DataSource.SaveMachine(me, () => new StreamWriter(entry.Open()));

            return(result);
        }
        internal static void SaveMachine(MachineElement machine, Func <StreamWriter> getSTreamWriter)
        {
            JsonSerializer serializer = new JsonSerializer();

            serializer.NullValueHandling = NullValueHandling.Ignore;
            serializer.Converters.Add(new LinkJsonConverter());
            serializer.Converters.Add(new MachineElementJsonConverter());

            using (StreamWriter sw = getSTreamWriter())
                using (JsonWriter writer = new JsonTextWriter(sw))
                {
                    serializer.Serialize(writer, machine);
                }
        }
Exemple #14
0
        private void FilterModelsNames(MachineElement me)
        {
            if (!string.IsNullOrEmpty(me.ModelFile))
            {
                var info = new FileInfo(me.ModelFile);
                var name = info.Name;

                me.ModelFile = name;
            }

            foreach (var item in me.Children)
            {
                FilterModelsNames(item);
            }
        }
        private bool AddProjectFileToArchive(MachineElement me, ZipArchive archive)
        {
            bool result = true;

            FilterModelsNames(me);

            var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MachineElement));
            var entry      = archive.CreateEntry(_machineFileName);

            using (var writer = new StreamWriter(entry.Open()))
            {
                serializer.Serialize(writer, me);
            }

            return(result);
        }
        private void UpdateModelsFiles(MachineElement m, string extractPath, bool save = false)
        {
            if (!string.IsNullOrEmpty(m.ModelFile))
            {
                m.ModelFile = $"{extractPath}\\{m.ModelFile}";
            }

            foreach (var item in m.Children)
            {
                UpdateModelsFiles(item, extractPath);
            }

            if (save)
            {
                var machProjectFile = $"{extractPath}\\{_machineFileName}";
                SaveMachineProjectFile(m, machProjectFile);
            }
        }
        private bool ExportImplementation(MachineElement machine, string filePath)
        {
            bool     result = true;
            FileInfo info   = new FileInfo(filePath);

            if (info.Exists)
            {
                info.Delete();
            }

            using (var archive = ZipFile.Open(filePath, ZipArchiveMode.Create))
            {
                if (!AddModelsFilesToArchive(machine, archive))
                {
                    // log errore
                }
                else if (!AddProjectFileToArchive(machine, archive))
                {
                    // log error
                }
            }

            return(result);
        }
Exemple #18
0
        private static string GetComputerCredentials(string SourceMachine)
        {
            MachineElement m = null;

            foreach (MachineElement machine in machineConfig.Machines)
            {
                if (machine.ComputerName == SourceMachine)
                {
                    m = machine;
                }
            }

            if (m == null)
            {
                throw new InvalidOperationException(string.Format("{0} was not found in the configuration", SourceMachine));
            }

            if (string.IsNullOrEmpty(m.Username))
            {
                return(string.Format(",computername={0}", SourceMachine));
            }

            return(string.Format(",computername={0},username=\"{1}\",password=\"{2}\"", SourceMachine, m.Username, m.Password));
        }
        public static bool Export(MachineElement machine, string filePath)
        {
            var h = new ZipArchiveHelper();

            return(h.ExportImplementation(machine, filePath));
        }
 internal static void SaveMachine(string fileName, MachineElement machine) => SaveMachine(machine, () => new StreamWriter(fileName));