コード例 #1
0
        public void Draw(SpriteBatch spriteBatch)
        {
            // if you're interested in whats going on here, refer to the documentation of the FogOfWar class.

            spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, null, null, null, null, mTransformMatrix);

            foreach (var drawable in mDrawables)
            {
                drawable.Draw(spriteBatch);
            }

            spriteBatch.End();

            if (GlobalVariables.FowEnabled)
            {
                mFow.DrawMasks(spriteBatch);

                spriteBatch.Begin(SpriteSortMode.FrontToBack,
                                  BlendState.AlphaBlend,
                                  null,
                                  mFow.GetApplyMaskStencilState(),
                                  null,
                                  null,
                                  mTransformMatrix);

                mMap.GetStructureMap().Draw(spriteBatch);
                mMap.GetResourceMap().Draw(spriteBatch);

                foreach (var spatial in mSpatialObjects)
                {
                    spatial.Draw(spriteBatch);
                }

                spriteBatch.End();

                mFow.FillInvertedMask(spriteBatch);
            }
            else
            {
                spriteBatch.Begin(SpriteSortMode.FrontToBack,
                                  BlendState.AlphaBlend,
                                  null,
                                  null,
                                  null,
                                  null,
                                  mTransformMatrix);

                mMap.GetStructureMap().Draw(spriteBatch);
                mMap.GetResourceMap().Draw(spriteBatch);

                foreach (var spatial in mSpatialObjects)
                {
                    spatial.Draw(spriteBatch);
                }

                spriteBatch.End();
            }

            spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, null, null, null, null, mTransformMatrix);

            mMap.GetStructureMap().DrawAboveFow(spriteBatch);

            spriteBatch.End();
        }