コード例 #1
0
ファイル: Sirens.cs プロジェクト: ZockiRR/RustSirens
        /// <summary>
        /// Tries to attach the given siren to the vehicle, replacing any existing siren.
        /// </summary>
        /// <param name="aVehicle">The vehicle.</param>
        /// <param name="aSiren">The siren.</param>
        /// <param name="anInitialState">The initial siren state.</param>
        /// <param name="aPlayer">The calling player.</param>
        private void AttachSirens(BaseVehicle aVehicle, Siren aSiren, SirenController.States anInitialState, IPlayer aPlayer = null)
        {
            DetachSirens(aVehicle);
            SirenController theController = CreateSirenController(aVehicle, aSiren);

            if (aVehicle as ModularCar)
            {
                if (aSiren.Modules == null)
                {
                    Message(aPlayer, I18N_NOT_SUPPORTED, aSiren.Name, KEY_MODULAR_CAR);
                    DetachSirens(aVehicle);
                    return;
                }
                foreach (BaseVehicleModule eachModule in aVehicle.GetComponentsInChildren <BaseVehicleModule>())
                {
                    SpawnAttachments(aSiren.Modules, aPlayer, theController, eachModule);
                }
            }
            else if (!SpawnAttachments(aSiren.Vehicles, aPlayer, theController, aVehicle))
            {
                Message(aPlayer, I18N_NOT_SUPPORTED, aSiren.Name, aVehicle.PrefabName);
                DetachSirens(aVehicle);
                return;
            }
            theController.SetState(anInitialState);
        }
コード例 #2
0
        public Siren Write(IEnumerable <OrderItemViewModel> data, Uri uri)
        {
            var sirenDoc = new Siren
            {
                @class   = new[] { "collection" },
                entities = new List <Entity>()
            };

            foreach (var order in data)
            {
                var entity = new Entity
                {
                    @class = new[] { "order-item" },
                    rel    = new[] { uri.Scheme + "://" + uri.DnsSafeHost + ":" +
                                     (uri.Port != 80 ? uri.Port.ToString() : "") + "/rels/orderitem" },
                    href       = uri.ToString(),
                    properties = order
                };

                sirenDoc.entities.Add(entity);
            }



            sirenDoc.links = new List <Link> {
                new Link {
                    href = uri.ToString(), rel = new[] { "self" }
                }, new Link {
                    href = uri.ToString().Replace("/items", ""), rel = new [] { "order" }
                }
            };

            return(sirenDoc);
        }
コード例 #3
0
        public Siren Write(Order data, Uri uri)
        {
            var sirenDoc = new Siren
            {
                @class     = new [] { "order" },
                properties = data,
                entities   =
                    new List <Entity>
                {
                    new Entity
                    {
                        @class = new[] { "collection" },
                        rel    =
                            new[]
                        {
                            uri.Scheme + "://" + uri.DnsSafeHost + ":" +
                            (uri.Port != 80 ? uri.Port.ToString() : "") + "/rels/order-items"
                        },
                        href = uri + "/items"
                    }
                },
                actions =
                    new List <Action> (new []
                {
                    new Action
                    {
                        name   = "delete-order",
                        title  = "Delete Order",
                        href   = uri.ToString(),
                        method = "DELETE"
                    },
                    new Action
                    {
                        name   = "add-to-order",
                        title  = "Add Item To Order",
                        method = "POST",
                        href   = uri.ToString(),
                        type   = "application/json",
                        fields =
                            new List <Field>(new[]
                        {
                            new Field {
                                name = "productCode", type = "text"
                            },
                            new Field {
                                name = "quantity", type = "number"
                            }
                        })
                    }
                })
            };

            sirenDoc.links = new List <Link> (new [] { new Link {
                                                           rel = new [] { "self" }, href = uri.ToString()
                                                       } });

            return(sirenDoc);
        }
コード例 #4
0
ファイル: SirenRepository.cs プロジェクト: tal32123/Sirens
        /// <summary>
        /// Creates a new siren with default values
        /// </summary>
        /// <returns></returns>
        internal Siren Create()
        {
            Siren siren = new Siren
            {
                Start = DateTime.Now
            };

            return(siren);
        }
コード例 #5
0
ファイル: Sirens.cs プロジェクト: ZockiRR/RustSirens
        private void AttachAllCarSirens(IPlayer aPlayer, string aCommand, string[] someArgs)
        {
            Siren theSiren = someArgs.Length > 0 ? FindSirenForName(someArgs[0], aPlayer) : SirenDictionary.Values.First();

            foreach (BaseVehicle eachVehicle in BaseNetworkable.serverEntities.OfType <BaseVehicle>())
            {
                AttachSirens(eachVehicle, theSiren, config.DefaultState, aPlayer);
            }
            Message(aPlayer, I18N_ATTACHED_GLOBAL, theSiren.Name);
        }
コード例 #6
0
ファイル: AI.cs プロジェクト: ToxicTrigger/Daegul-2
 // Update is called once per frame
 void Update()
 {
     if (Target.gameObject.GetComponent <Move>().Size >= 4f)
     {
         Siren.Play();
         nv.SetDestination(Target.position);
     }
     else
     {
         Siren.Pause();
     }
 }
コード例 #7
0
ファイル: Sirens.cs プロジェクト: ZockiRR/RustSirens
        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject <Configuration>();
                if (config == null)
                {
                    throw new JsonException();
                }

                try
                {
                    foreach (string eachSirenFile in Interface.Oxide.DataFileSystem.GetFiles(DATAPATH_SIRENS, "*.json"))
                    {
                        string theFilename = eachSirenFile.Basename(".json");
                        try
                        {
                            Siren theSiren = Interface.Oxide.DataFileSystem.ReadObject <Siren>(DATAPATH_SIRENS + theFilename);
                            SirenDictionary.Add(theSiren.Name, theSiren);
                        }
                        catch
                        {
                            PrintWarning($"Siren file {theFilename}.json is invalid; ignoring");
                        }
                    }
                }
                catch
                {
                }
                Puts("Loaded sirens: " + string.Join(", ", SirenDictionary.Keys));

                if (SirenDictionary.IsEmpty())
                {
                    PrintWarning("Configuration appears to be missing sirens; using defaults");
                    SirenDictionary.Add(SIREN_DEFAULT.Name, SIREN_DEFAULT);
                    SirenDictionary.Add(SIREN_SILENT.Name, SIREN_SILENT);
                    SaveConfig();
                }

                if (!config.ToDictionary().Keys.SequenceEqual(Config.ToDictionary(x => x.Key, x => x.Value).Keys))
                {
                    PrintWarning("Configuration appears to be outdated; updating and saving");
                    SaveConfig();
                }
            }
            catch
            {
                PrintWarning($"Configuration file {Name}.json is invalid; using defaults");
                LoadDefaultConfig();
            }
        }
コード例 #8
0
        public Siren Write(IEnumerable <Order> data, Uri uri)
        {
            var sirenDoc = new Siren
            {
                @class     = new [] { "collection" },
                entities   = new List <Entity> (),
                properties = new { Count = data.Count() }
            };

            foreach (var order in data)
            {
                var entity = new Entity
                {
                    @class     = new [] { "order" },
                    rel        = new [] { "item" },
                    properties = order,
                    links      = new List <Link> {
                        new Link {
                            href = uri + "/" + order.OrderNumber, rel = new [] { "self" }
                        }
                    }
                };

                sirenDoc.entities.Add(entity);
            }

            sirenDoc.actions = new List <Action> (new [] {
                new Action
                {
                    name   = "add-order",
                    title  = "Add Order",
                    method = "POST",
                    href   = uri.ToString(),
                    type   = "application/json",
                    fields = new List <Field>(new[] { new Field {
                                                          name = "productCode", type = "text"
                                                      }, new Field {
                                                          name = "quantity", type = "number"
                                                      } })
                }
            });

            sirenDoc.links = new List <Link> {
                new Link {
                    href = uri.ToString(), rel = new [] { "self" }
                }
            };

            return(sirenDoc);
        }
コード例 #9
0
        private Siren Generate(IEnumerable <Actor> actors, Uri uri)
        {
            var doc = new Siren
            {
                @class     = new [] { "collection" },
                entities   = new List <Entity> (),
                properties = new { Count = actors.Count() }
            };

            foreach (var actor in actors)
            {
                var entity = new Entity
                {
                    @class     = new [] { nameof(Actor) },
                    rel        = new [] { "item" },
                    properties = actor,
                    links      = new List <Link> {
                        new Link {
                            href = uri + "/" + actor.Id, rel = new [] { "self" }
                        }
                    }
                };

                doc.entities.Add(entity);
            }

            doc.actions = new List <Action> (new [] {
                new Action
                {
                    name   = "create-actor",
                    title  = "Create Actor",
                    method = "POST",
                    href   = uri.ToString(),
                    type   = "application/json",
                    fields = new List <Field>(new[] { new Field {
                                                          name = "name", type = "text"
                                                      }, new Field {
                                                          name = "age", type = "number"
                                                      } })
                }
            });

            doc.links = new List <Link> {
                new Link {
                    href = uri.ToString(), rel = new [] { "self" }
                }
            };

            return(doc);
        }
コード例 #10
0
ファイル: SirenRepository.cs プロジェクト: tal32123/Sirens
        /// <summary>
        /// Saves a new siren.
        /// </summary>
        /// <param name="siren"></param>
        /// <returns></returns>
        internal Siren Save(Siren siren)
        {
            // Read in the existing sirens
            var sirens = this.Retrieve();

            // Assign a new Id
            var maxId = sirens.Max(s => s.ID);

            siren.ID = maxId + 1;
            sirens.Add(siren);

            WriteData(sirens);
            return(siren);
        }
コード例 #11
0
ファイル: Sirens.cs プロジェクト: ZockiRR/RustSirens
        /// <summary>
        /// Creates or replaces the SirenController of the given vehicle.
        /// </summary>
        /// <param name="aVehicle">The vehicle.</param>
        /// <param name="aSiren">The Siren.</param>
        /// <param name="someNetIDs">Already existing siren entities.</param>
        /// <returns>The newly created SirenController.</returns>
        private SirenController CreateSirenController(BaseVehicle aVehicle, Siren aSiren, IEnumerable <uint> someNetIDs = null)
        {
            SirenController theController = aVehicle.GetComponent <SirenController>();

            if (theController)
            {
                UnityEngine.Object.DestroyImmediate(theController);
            }
            theController        = aVehicle.gameObject.AddComponent <SirenController>();
            theController.Config = config;
            theController.Siren  = aSiren;
            if (someNetIDs != null)
            {
                theController.NetIDs.UnionWith(someNetIDs);
            }
            return(theController);
        }
コード例 #12
0
ファイル: Sirens.cs プロジェクト: ZockiRR/RustSirens
        private void AttachCarSirens(IPlayer aPlayer, string aCommand, string[] someArgs)
        {
            if (aPlayer.IsServer)
            {
                Message(aPlayer, I18N_PLAYERS_ONLY, aCommand);
                return;
            }

            BaseVehicle theVehicle = RaycastVehicle(aPlayer);

            if (theVehicle)
            {
                Siren theSiren = someArgs.Length > 0 ? FindSirenForName(someArgs[0], aPlayer) : SirenDictionary.Values.First();
                AttachSirens(theVehicle, theSiren, config.DefaultState, aPlayer);
                Message(aPlayer, I18N_ATTACHED, theSiren.Name);
            }
        }
コード例 #13
0
        public Siren Write(SiteDetail data, Uri uri)
        {
            var sirenDoc = new Siren
            {
                @class     = new [] { "siteDetail" },
                properties = data
            };

            sirenDoc.links = new List <Link>()
            {
                new Link {
                    rel = new [] { "self" }, href = uri.ToString()
                },
                new Link {
                    rel = new [] { "orders", "collection" }, href = uri + "orders"
                }
            };
            return(sirenDoc);
        }
コード例 #14
0
        public async Task <IActionResult> PostSiren([FromBody] SirenForInsertDto sirenDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Siren siren = _mapper.Map <Siren>(sirenDto);

            try
            {
                await _context.insertSirenAsync(siren);
            }catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(StatusCode(500, "Erreur lors de l'ajout du Siren"));
            }

            return(CreatedAtAction("GetSiren", new { id = siren.Id }, siren));
        }
コード例 #15
0
ファイル: SirenRepository.cs プロジェクト: tal32123/Sirens
        /// <summary>
        /// Updates an existing siren
        /// </summary>
        /// <param name="id"></param>
        /// <param name="siren"></param>
        /// <returns></returns>
        internal Siren Save(int id, Siren siren)
        {
            // Read in the existing sirens
            var sirens = this.Retrieve();

            // Locate and replace the item
            var itemIndex = sirens.FindIndex(s => s.ID == siren.ID);

            if (itemIndex > 0)
            {
                sirens[itemIndex] = siren;
            }
            else
            {
                return(null);
            }

            WriteData(sirens);
            return(siren);
        }
コード例 #16
0
        public async Task <IActionResult> PutSiren([FromRoute] int id, [FromBody] SirenForUpdateDto siren)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != siren.Id)
            {
                return(BadRequest());
            }

            Siren sirenEntity = await _context.getSirenFromIdAsync(id);

            if (sirenEntity == null)
            {
                return(NotFound());
            }

            _mapper.Map(siren, sirenEntity);
            await _context.SaveAsync();

            return(NoContent());
        }
コード例 #17
0
        public Siren Write(Order data, Uri uri)
        {
            var sirenDoc = new Siren
            {
                @class     = new [] { "order" },
                properties = data,
                entities   =
                    new List <Entity>
                {
                    new Entity
                    {
                        @class = new[] { "collection" },
                        rel    =
                            new[]
                        {
                            uri.Scheme + "://" + uri.DnsSafeHost + ":" +
                            (uri.Port != 80 ? uri.Port.ToString() : "") + "/rels/order-items"
                        },
                        href = uri + "/items"
                    }
                },
                actions = new List <Action>()
            };

            if (data.Status == "Pending")
            {
                sirenDoc.actions.Add(new Action
                {
                    name   = "delete-order",
                    title  = "Delete Order",
                    href   = uri.ToString(),
                    method = "DELETE"
                });
                sirenDoc.actions.Add(new Action
                {
                    name   = "add-to-order",
                    title  = "Add Item To Order",
                    method = "POST",
                    href   = uri.ToString(),
                    type   = "application/json",
                    fields =
                        new List <Field>(new[]
                    {
                        new Field {
                            name = "productCode", type = "text"
                        },
                        new Field {
                            name = "quantity", type = "number"
                        }
                    })
                });
                sirenDoc.actions.Add(new Action
                {
                    name   = "ship-order",
                    title  = "Ship Order",
                    method = "POST",
                    href   = uri + "/ship",
                    type   = "application/json",
                    fields =
                        new List <Field>(new[]
                    {
                        new Field {
                            name = "name", type = "text"
                        },
                        new Field {
                            name = "address", type = "text"
                        }
                    })
                });
            }
            else if (data.Status == "Shipped")
            {
                sirenDoc.actions.Add(new Action
                {
                    name   = "request-return",
                    title  = "Request Return Of Order",
                    method = "POST",
                    href   = uri + "/return",
                    type   = "application/json",
                    fields = new List <Field>(new []
                    {
                        new Field {
                            name = "reason", type = "text"
                        }
                    })
                });
            }

            if (sirenDoc.actions.Count == 0)
            {
                sirenDoc.actions = null;
            }

            sirenDoc.links = new List <Link> (new [] { new Link {
                                                           rel = new [] { "self" }, href = uri.ToString()
                                                       } });

            return(sirenDoc);
        }
コード例 #18
0
 public override int GetHashCode() => Siren.GetHashCode();
コード例 #19
0
 /// <summary>
 /// Vérifie la validité d'un numéro SIRET (et de son numéro SIREN associé).
 /// (Attention : cette méthode valide le numéro SIRET
 /// selon l'algorithme de Luhn, mais ne vérifie pas
 /// que le numéro soit attribué ni à quel établissement).
 /// </summary>
 /// <param name="siretToCheck">Numéro SIRET.</param>
 /// <returns>Vrai si le SIRET, et son SIREN associé sont valides, faux sinon.</returns>
 /// <remarks>Système d’Identification du Répertoire des ETablissements.
 /// http://fr.wikipedia.org/wiki/SIRET
 /// </remarks>
 public static bool Check(string siretToCheck)
 {
     // Les numéros Siren et Siret doivent être valides tous les deux :
     return(Luhn.Check(siretToCheck, LuhnCheckType.Siret) && Siren.Check(siretToCheck.Substring(0, 9)));
 }
コード例 #20
0
        public async Task <int> insertSirenAsync(Siren siren)
        {
            await _context.Sirens.AddAsync(siren);

            return(await SaveAsync());
        }
コード例 #21
0
 public async Task <int> deleteSirenAsync(Siren siren)
 {
     _context.Sirens.Remove(siren);
     return(await SaveAsync());
 }