Example #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="_id"></param>
 /// <param name="dayfileName"></param>
 /// <param name="nightfileName"></param>
 public Picture(string _id, string dayfileName, string nightfileName)
 {
     this.id = _id;
     ISurfaceLoader[,] sl = new ISurfaceLoader[4, 2];
     sl[0, 0]             = new BitmapSurfaceLoader(dayfileName);
     sl[0, 1]             = new BitmapSurfaceLoader(nightfileName);
     this.loaders         = init(sl);
 }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pic"></param>
        /// <param name="_id"></param>
        public Picture(XmlElement pic, string _id)
        {
            this.id = _id;

            //			// obtain the size of the bitmap
            string baseFileName = XmlUtil.Resolve(pic, pic.Attributes["src"].Value).LocalPath;

            //			this.size = getBitmapSize(baseFileName);

            ISurfaceLoader[,] specifiedLoaders = new ISurfaceLoader[4, 2];
            specifiedLoaders[0, 0]             = new BitmapSurfaceLoader(baseFileName);

            specifiedLoaders[0, 1] = getNightOverride(pic);
            foreach (XmlElement ovr in pic.SelectNodes("override"))
            {
                string when = ovr.Attributes["when"].Value;

                int s;
                switch (when)
                {
                case "spring": s = 0; break;

                case "summer": s = 1; break;

                case "autumn":
                case "fall": s = 2; break;

                case "winter": s = 3; break;

                case "night": s = -1; break;

                default:
                    throw new FormatException("when='" + when + "' is an unknown override format");
                    //! throw new FormatException("when='"+when+"'は未知のオーバーライド形式です");
                }
                if (s >= 0)
                {
                    XmlAttribute src = ovr.Attributes["src"];
                    if (src != null)
                    {
                        ISurfaceLoader overrideLoader = new BitmapSurfaceLoader(
                            XmlUtil.Resolve(ovr, src.Value).LocalPath);
                        specifiedLoaders[s, 0] = overrideLoader;
                    }
                    specifiedLoaders[s, 1] = getNightOverride(ovr);
                }
            }

            this.loaders = init(specifiedLoaders);
        }
Example #3
0
        /// <summary>
        /// Complete picture loaders by filling in the missing loaders.
        /// </summary>
        /// <param name="specifiedLoaders"></param>
        /// <returns></returns>
        private ISurfaceLoader[,] init(ISurfaceLoader[,] specifiedLoaders)
        {
            ISurfaceLoader[,] loaders = new ISurfaceLoader[4, 2];

            // Fill-in unspecified SpriteLoaders by the default ones.
            for (int s = 0; s < 4; s++)
            {
                if (specifiedLoaders[s, 0] != null)
                {
                    loaders[s, 0] = specifiedLoaders[s, 0];
                }
                else
                {
                    loaders[s, 0] = loaders[0, 0];
                }

                if (specifiedLoaders[s, 1] != null)
                {
                    loaders[s, 1] = specifiedLoaders[s, 1];
                }
                else
                {
                    if (specifiedLoaders[s, 0] != null)
                    {
                        loaders[s, 1] = new NightSurfaceLoader(loaders[s, 0].FileName);
                    }
                    else
                    {
                        loaders[s, 1] = loaders[0, 1];
                    }
                }
            }

            PictureManager.add(this); // all the pictures are controlled by a manager
            dirty = true;             // make sure that the surface will be loaded next time it's used.

            return(loaders);          //
        }