Esempio n. 1
0
        public IHttpActionResult PutAssetDef(decimal id, AssetDef assetDef)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != assetDef.ad_id)
            {
                return(BadRequest());
            }

            db.Entry(assetDef).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AssetDefExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 2
0
        public IHttpActionResult GetAssetDef(decimal id)
        {
            AssetDef assetDef = db.AssetDefs.Find(id);

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

            return(Ok(assetDef));
        }
Esempio n. 3
0
        public IHttpActionResult PostAssetDef(AssetDef assetDef)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.AssetDefs.Add(assetDef);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = assetDef.ad_id }, assetDef));
        }
Esempio n. 4
0
        //get
        public List <Assettype> GetAssetTypes(string name)
        {
            db.Configuration.ProxyCreationEnabled = true;
            AssetDef         assetlist = db.AssetDefs.Where(x => x.ad_name == name).FirstOrDefault();
            List <Assettype> atlist    = new List <Assettype>();

            if (assetlist != null)
            {
                atlist = db.Assettypes.Where(x => x.at_id == assetlist.ad_type_id).ToList();
            }

            return(atlist);
        }
Esempio n. 5
0
        public IHttpActionResult DeleteAssetDef(decimal id)
        {
            AssetDef assetDef = db.AssetDefs.Find(id);

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

            db.AssetDefs.Remove(assetDef);
            db.SaveChanges();

            return(Ok(assetDef));
        }
Esempio n. 6
0
 private AssetViewModel CreateAssetViewModel(AssetDef assetDef)
 {
     return(new AssetViewModel {
         Definition = AssetDefinitionViewModel.Create(assetDef),
         Built = assetRepository.HasAsset(currentUserContext.PlayerId, assetDef.Id),
         Prerequisites = string.Join(", ", gameDef.GetAssetNames(assetDef.Prerequisites)),
         PrerequisitesMet = assetRepository.PrerequisitesMet(currentUserContext.PlayerId, assetDef),
         Cost = CostViewModel.Create(assetDef.Cost),
         CanAfford = resourceRepository.CanAfford(currentUserContext.PlayerId, assetDef.Cost),
         AlreadyQueued = assetRepository.IsBuildQueued(currentUserContext.PlayerId, assetDef.Id),
         TicksLeftForBuild = assetRepository.TicksLeft(currentUserContext.PlayerId, assetDef.Id),
         AvailableUnits = gameDef.GetUnitsForAsset(assetDef.Id)
                          .Select(x => UnitDefinitionViewModel.Create(x, unitRepository.PrerequisitesMet(currentUserContext.PlayerId, x))).ToList()
     });
 }
Esempio n. 7
0
 public bool PrerequisitesMet(PlayerId playerId, AssetDef assetDef)
 {
     if (assetDef.PlayerTypeRestriction != playerRepository.GetPlayerType(playerId))
     {
         return(false);
     }
     foreach (var prereq in assetDef.Prerequisites)
     {
         if (!HasAsset(playerId, prereq))
         {
             return(false);
         }
     }
     return(true);
 }
Esempio n. 8
0
        public int PostAssetDef(AssetDef assetDef)
        {
            /* db.AssetDefs.Add(assetDef);
             * db.SaveChanges();
             *
             * return CreatedAtRoute("DefaultApi", new { id = assetDef.ad_id }, assetDef);*/

            AssetDef asset = new AssetDef();

            asset = db.AssetDefs.Where(x => x.ad_name == assetDef.ad_name && x.ad_type_id == assetDef.ad_type_id && x.ad_class == assetDef.ad_class).FirstOrDefault();
            if (asset == null)
            {
                db.AssetDefs.Add(assetDef);
                db.SaveChanges();
                return(0);
            }
            else
            {
                return(1);
            }
        }
 public void Visit(AssetDef assetDef, object[] args)
 {
     throw new NotImplementedException();
 }
Esempio n. 10
0
 public override void Visit(AssetDef assetDef, object[] args)
 {
     checkLocation = assetDef.Location;
     assetDef.AssetData.CheckReference(this);
     base.Visit(assetDef, args);
 }
Esempio n. 11
0
 public void Visit(AssetDef assetDef, object[] args)
 {
 }
Esempio n. 12
0
        /*
         #region IAssetVisitor Members
         *
         * /// <summary>
         * ///
         * /// </summary>
         * /// <param name="actorAsset"></param>
         * /// <param name="args">XML Node</param>
         * public void Visit(ActorAsset actorAsset, object[] args)
         * {
         *  //FINISH: 检查资源存在性
         *  actorAsset.Source = currentNode.Attributes["src"].Value;
         *
         *  foreach (XmlNode child in currentNode.ChildNodes)
         *  {
         *      switch (dic[child.Name])
         *      {
         *          case "group":
         *              actorAsset.Group = child.InnerText;
         *              break;
         *
         *          default:
         *              continue;
         *      }
         *  }
         *
         *  if (assetMap.ContainsKey(actorAsset.Name))
         *  {
         *      kernel.IssueError(ErrorType.DuplicatedAsset, new Location(currentFile),
         *          actorAsset.Name, "Actor");
         *      return;
         *  }
         *
         *  assetMap.Add(actorAsset.Name, actorAsset);
         * }
         *
         * public void Visit(CGAsset cgAsset, object[] args)
         * {
         *  //FINISH: 检查资源存在性
         *  cgAsset.Source = currentNode.Attributes["src"].Value;
         *
         *  foreach (XmlNode child in currentNode.ChildNodes)
         *  {
         *      switch (dic[child.Name])
         *      {
         *          case "group":
         *              cgAsset.Group = child.InnerText;
         *              break;
         *
         *          default:
         *              continue;
         *      }
         *  }
         *
         *  if (assetMap.ContainsKey(cgAsset.Name))
         *  {
         *      kernel.IssueError(ErrorType.DuplicatedAsset, new Location(currentFile),
         *          cgAsset.Name, "CG");
         *      return;
         *  }
         *
         *  assetMap.Add(cgAsset.Name, cgAsset);
         * }
         *
         * public void Visit(MusicAsset musicAsset, object[] args)
         * {
         *  //TODO: 检查资源存在性
         *  musicAsset.Source = currentNode.Attributes["src"].Value;
         *
         *  foreach (XmlNode child in currentNode.ChildNodes)
         *  {
         *      switch (dic[child.Name])
         *      {
         *          case "group":
         *              musicAsset.Group = child.InnerText;
         *              break;
         *
         *          case "title":
         *              musicAsset.Title = child.InnerText;
         *              break;
         *
         *          case "artist":
         *              musicAsset.Artist = child.InnerText;
         *              break;
         *
         *          case "lyricsBy":
         *              musicAsset.LyricsBy = child.InnerText;
         *              break;
         *
         *          case "musicBy":
         *              musicAsset.MusicBy = child.InnerText;
         *              break;
         *
         *          case "description":
         *              musicAsset.Description = child.InnerText;
         *              break;
         *
         *          case "lyrics":
         *              musicAsset.Lyrics = child.InnerText;
         *              break;
         *
         *          case "lrc":
         *              musicAsset.LRC = child.InnerText;
         *              //TODO: 检查和解析LRC
         *              break;
         *
         *          default:
         *              continue;
         *      }
         *  }
         *
         *  if (assetMap.ContainsKey(musicAsset.Name))
         *  {
         *      kernel.IssueError(ErrorType.DuplicatedAsset, new Location(currentFile),
         *          musicAsset.Name, "Music");
         *      return;
         *  }
         *
         *  assetMap.Add(musicAsset.Name, musicAsset);
         * }
         *
         * public void Visit(VideoAsset videoAsset, object[] args)
         * {
         *  //TODO: 检查资源存在性
         *  videoAsset.Source = currentNode.Attributes["src"].Value;
         *
         *  if (assetMap.ContainsKey(videoAsset.Name))
         *  {
         *      kernel.IssueError(ErrorType.DuplicatedAsset, new Location(currentFile),
         *          videoAsset.Name, "Video");
         *      return;
         *  }
         *
         *  assetMap.Add(videoAsset.Name, videoAsset);
         * }
         *
         #endregion
         */

        public void Build(string[] assetFiles, FireMLRoot root)
        {
            assetMap = root.AssetMap;

            foreach (string file in assetFiles)
            {
                currentFile = file;
                xmlError    = false;

                XmlDocument doc = new XmlDocument();
                doc.Schemas = kernel.FireMLSchemaSet;
                try
                {
                    doc.Load(file);
                }
                catch (Exception e)
                {
                    kernel.IssueError(ErrorType.ReadFileError, new Location(file), e.Message);
                    continue;
                }
                doc.Validate(new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler));
                if (xmlError)
                {
                    continue;
                }

                XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
                nsmgr.AddNamespace("fm", FireEngine.Library.FireEngineConstant.FIREML_XMLNS);

                foreach (XmlNode node in doc.SelectSingleNode("fm:FireMLAsset", nsmgr).ChildNodes)
                {
                    AssetDef      def = new AssetDef();
                    AssetDataBase data;

                    switch (dic[node.Name])
                    {
                    case "Actor":
                        data = FireMLDataBase.Deserialize <ActorAsset>(node.OuterXml);
                        break;

                    case "CG":
                        data = FireMLDataBase.Deserialize <CGAsset>(node.OuterXml);
                        break;

                    case "Music":
                        data = FireMLDataBase.Deserialize <MusicAsset>(node.OuterXml);
                        break;

                    case "Video":
                        data = FireMLDataBase.Deserialize <VideoAsset>(node.OuterXml);
                        break;

                    default:
                        continue;
                    }

                    string name = node.Attributes["Name"].Value;
                    def.Name      = name;
                    def.Location  = new Location(file);
                    def.AssetData = data;

                    if (assetMap.ContainsKey(name))
                    {
                        kernel.IssueError(ErrorType.DuplicatedAsset, new Location(currentFile),
                                          name, data.GetType().Name);
                    }
                    else
                    {
                        assetMap.Add(name, def);
                    }

                    currentNode = node;
                }
            }
        }