Exemplo n.º 1
0
        public static T Load <T>(string filename) where T : class, new()
        {
            T instance = null;

            try
            {
                System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
                using (System.IO.TextReader reader = new System.IO.StreamReader(filename, System.Text.Encoding.Unicode))
                {
                    instance = serializer.Deserialize(reader) as T;
                    reader.Close();
                }
            }
            catch
            {
                instance = new T();
                XmlTools.Save(filename, instance);
            }

            return(instance);
        }
Exemplo n.º 2
0
        public string ArgumentParser(string[] split)
        {
            try
            {
                if (split.Length < 2)
                {
                    return("ERROR_TOWN_SPLIT_LENGTH");
                }

                if (split[1].ToLower() == "load")
                {
                    #region load
                    try
                    {
                        if (split.Length < 3)
                        {
                            return("ERROR_TOWN_LOAD_SPLIT_LENGTH");
                        }

                        TownXml.Town town = Find(split[2].ToLower());
                        return(town.ToArmaArray());
                    }
                    catch (Exception ex)
                    {
                        Arma2Net.Utils.Log("ERROR: Town.Load failed: " + ex.Message);
                        return("ERROR_TOWN_LOAD_EXCEPTION");
                    }
                    #endregion
                }
                else if (split[1].ToLower() == "update")
                {
                    #region update
                    try
                    {
                        if (split.Length < 12)
                        {
                            return("ERROR_TOWN_UPDATE_SPLIT_LENGTH");
                        }

                        Update(split[2].ToLower(), split[3].ToLower(), split[4].ToLower(), split[5].ToLower(), split[6].ToLower(), split[7].ToLower(), split[8].ToLower(), split[9].ToLower(), split[10].ToLower(), split[11].ToLower());
                        return("OK");
                    }
                    catch (Exception ex)
                    {
                        Arma2Net.Utils.Log("ERROR: Town.Update failed: " + ex.Message);
                        return("ERROR_TOWN_UPDATE_EXCEPTION");
                    }
                    #endregion
                }
                else if (split[1].ToLower() == "save")
                {
                    #region save
                    try
                    {
                        XmlTools.Save <TownXml>(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Towns.xml"), this);

                        return("OK");
                    }
                    catch (Exception ex)
                    {
                        Arma2Net.Utils.Log("ERROR: Town.Save failed: " + ex.Message);
                        return("ERROR_TOWN_SAVE_EXCEPTION");
                    }
                    #endregion
                }
                else
                {
                    return("ERROR_TOWN_INVALID_COMMAND");
                }
            }
            catch (Exception ex)
            {
                Arma2Net.Utils.Log("ERROR: Town-Exception: " + ex.Message);
                return("ERROR_TOWN_EXCEPTION");
            }
        }
Exemplo n.º 3
0
        public override string Invoke(string args, int maxResultSize)
        {
            lock (this)
            {
                // Vorab Prüfungen
                if (string.IsNullOrWhiteSpace(args))
                {
                    return("ERROR_ARGS_NULL");
                }
#if (DEBUG)
                Arma2Net.Utils.Log(args);
#endif

                // Argumente zerlegen
                string[] split;
                try
                {
                    split = args.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                }
                catch (Exception ex)
                {
                    Arma2Net.Utils.Log("Exception: " + ex.Message);
                    return("ERROR_SPLIT_EXCEPTION");
                }

                // Zerlegte Argumente prüfen
                if (split == null)
                {
                    return("ERROR_SPLIT_NULL");
                }
                if (split.Length < 1)
                {
                    return("ERROR_SPLIT_LENGTH");
                }

                // Die einzelnen Befehlsgruppen verarbeiten
                if (split[0].ToLower() == "town")
                {
                    return(_TownXml.ArgumentParser(split));
                }
                else if (split[0].ToLower() == "vehicle")
                {
                    return(_VehicleXml.ArgumentParser(split));
                }
                else if (split[0].ToLower() == "isok")
                {
                    if (split.Length < 2)
                    {
                        return("ERROR");
                    }

                    return(split[1].StartsWith("ERROR") ? "ERROR" : "OK");
                }
                else if (split[0].ToLower() == "reloadall")
                {
                    try
                    {
                        _TownXml = XmlTools.Load <TownXml>(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Towns.xml"));
#if (DEBUG)
                        _TownXml.Debug();
#endif

                        _VehicleXml = XmlTools.Load <VehicleXml>(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Vehicle.xml"));
                        return("OK");
                    }
                    catch (Exception ex)
                    {
                        return("ERROR_RELOADALL_EXCEPTION:" + ex.Message);
                    }
                }
                else
                {
                    return("ERROR_INVALID_COMMAND");
                }
            }
        }
Exemplo n.º 4
0
        public string ArgumentParser(string[] split)
        {
            try
            {
                if (split.Length < 2)
                {
                    return("ERROR_VEHICLE_SPLIT_LENGTH");
                }

                if (split[1].ToLower() == "read")
                {
                    #region read
                    try
                    {
                        if (split.Length < 3)
                        {
                            return("ERROR_VEHICLE_READ_SPLIT_LENGTH");
                        }

                        int index = Convert.ToInt32(split[2]);

                        if ((Vehicles == null) || (Vehicles.Length <= index))
                        {
                            return("ERROR_VEHICLE_READ_INDEX");
                        }

                        return(Vehicles[index].ToArmaArray());
                    }
                    catch (Exception ex)
                    {
                        Arma2Net.Utils.Log("ERROR: Vehicle.Read failed: " + ex.Message);
                        return("ERROR_VEHICLE_READ_EXCEPTION: " + ex.Message);
                    }
                    #endregion
                }
                else if (split[1].ToLower() == "beginwrite")
                {
                    #region beginwrite
                    try
                    {
                        _TmpVehicles = new List <Vehicle>();
                        return("OK");
                    }
                    catch (Exception ex)
                    {
                        Arma2Net.Utils.Log("ERROR: Vehicle.BeginWrite failed: " + ex.Message);
                        return("ERROR_VEHICLE_BEGINWRITE_EXCEPTION");
                    }
                    #endregion
                }
                else if (split[1].ToLower() == "write")
                {
                    #region write
                    try
                    {
                        if (split.Length < 7)
                        {
                            return("ERROR_VEHICLE_WRITE_SPLIT_LENGTH");
                        }

                        Vehicle vehicle = new Vehicle();
                        vehicle.Classname   = split[2];
                        vehicle.Position    = split[3];
                        vehicle.Orientation = split[4];
                        vehicle.Damage      = split[5];
                        vehicle.Content     = split[6];
                        _TmpVehicles.Add(vehicle);

                        return("OK");
                    }
                    catch (Exception ex)
                    {
                        Arma2Net.Utils.Log("ERROR: Vehicle.Write failed: " + ex.Message);
                        return("ERROR_VEHICLE_WRITE_EXCEPTION:" + ex.Message);
                    }
                    #endregion
                }
                else if (split[1].ToLower() == "endwrite")
                {
                    #region endwrite
                    try
                    {
                        Vehicles     = _TmpVehicles.ToArray();
                        _TmpVehicles = null;
                        XmlTools.Save <VehicleXml>(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Vehicle.xml"), this);

                        return("OK");
                    }
                    catch (Exception ex)
                    {
                        Arma2Net.Utils.Log("ERROR: Vehicle.EndWrite failed: " + ex.Message);
                        return("ERROR_VEHICLE_ENDWRITE_EXCEPTION");
                    }
                    #endregion
                }
                else
                {
                    return("ERROR_VEHICLE_INVALID_COMMAND");
                }
            }
            catch (Exception ex)
            {
                Arma2Net.Utils.Log("ERROR: Vehicle-Exception: " + ex.Message);
                return("ERROR_VEHICLE_EXCEPTION");
            }
        }