Exemplo n.º 1
0
        /// <summary>
        /// Sets the ceiling texture to another num
        /// </summary>
        /// <param name="TextureNum"></param>
        /// <param name="TextureFile"></param>
        public void SetCeilingTexture(ushort TextureNum, BgfFile TextureFile)
        {
            string oldmaterial = MaterialNameCeiling;

            CeilingTexture  = TextureNum;
            ResourceCeiling = TextureFile;

            if (ResourceCeiling != null && ResourceCeiling.Frames.Count > 0)
            {
                TextureCeiling = ResourceCeiling.Frames[0];
                SpeedCeiling   = GetSectorScrollSpeed(false, TextureCeiling.Width, TextureCeiling.Height);

                TextureNameCeiling = RooFile.GetNameForTexture(
                    ResourceCeiling, 0);

                MaterialNameCeiling = RooFile.GetNameForMaterial(
                    ResourceCeiling, 0, SpeedCeiling);
            }
            else
            {
                TextureCeiling      = null;
                TextureNameCeiling  = null;
                MaterialNameCeiling = null;
                SpeedCeiling        = V2.ZERO;
            }

            if (TextureChanged != null)
            {
                TextureChanged(this, new SectorTextureChangedEventArgs(this, false, oldmaterial));
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Sets the floor texture to another num
        /// </summary>
        /// <param name="TextureNum"></param>
        /// <param name="TextureFile"></param>
        public void SetFloorTexture(ushort TextureNum, BgfFile TextureFile)
        {
            string oldmaterial = MaterialNameFloor;

            FloorTexture  = TextureNum;
            ResourceFloor = TextureFile;

            if (ResourceFloor != null && ResourceFloor.Frames.Count > 0)
            {
                TextureFloor = ResourceFloor.Frames[0];
                SpeedFloor   = GetSectorScrollSpeed(true, TextureFloor.Width, TextureFloor.Height);

                TextureNameFloor = RooFile.GetNameForTexture(
                    ResourceFloor, 0);

                MaterialNameFloor = RooFile.GetNameForMaterial(
                    ResourceFloor, 0, SpeedFloor);
            }
            else
            {
                TextureFloor      = null;
                TextureNameFloor  = null;
                MaterialNameFloor = null;
                SpeedFloor        = V2.ZERO;
            }

            if (TextureChanged != null)
            {
                TextureChanged(this, new SectorTextureChangedEventArgs(this, true, oldmaterial));
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Sets middle texture to another num
        /// </summary>
        /// <param name="TextureNum"></param>
        /// <param name="TextureFile"></param>
        /// <param name="ResetAnimation"></param>
        public void SetMiddleTexture(ushort TextureNum, BgfFile TextureFile, bool ResetAnimation = true)
        {
            ushort group       = (animation != null) ? animation.CurrentGroup : (ushort)1;
            int    frameidx    = 0;
            string oldmaterial = MaterialNameMiddle;

            MiddleTexture  = TextureNum;
            ResourceMiddle = TextureFile;

            if (ResourceMiddle != null && ResourceMiddle.Frames.Count > 0)
            {
                // possibly reset animation
                if (animation != null && ResetAnimation)
                {
                    animation.SetValues(1, ResourceMiddle.FrameSets.Count, false);
                    group = animation.CurrentGroup;
                }

                frameidx = ResourceMiddle.GetFrameIndex(group, 0);
                frameidx = Math.Max(frameidx, 0);

                if (ResourceMiddle.Frames.Count > frameidx)
                {
                    TextureMiddle = ResourceMiddle.Frames[frameidx];
                    SpeedMiddle   = GetWallScrollSpeed(TextureMiddle.Width, TextureMiddle.Height);
                }
                else
                {
                    TextureMiddle = null;
                    SpeedMiddle   = V2.ZERO;
                }

                TextureNameMiddle = RooFile.GetNameForTexture(
                    ResourceMiddle, frameidx);

                MaterialNameMiddle = RooFile.GetNameForMaterial(
                    ResourceMiddle, frameidx, SpeedMiddle);
            }
            else
            {
                TextureMiddle      = null;
                SpeedMiddle        = V2.ZERO;
                TextureNameMiddle  = null;
                MaterialNameMiddle = null;
            }

            if (TextureChanged != null)
            {
                TextureChanged(this, new WallTextureChangedEventArgs(this, WallPartType.Middle, oldmaterial));
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Sets lower texture to another num
        /// </summary>
        /// <param name="TextureNum"></param>
        /// <param name="TextureFile"></param>
        public void SetUpperTexture(ushort TextureNum, BgfFile TextureFile)
        {
            ushort group       = (animation != null) ? animation.CurrentGroup : (ushort)1;
            int    frameidx    = 0;
            string oldmaterial = MaterialNameUpper;

            UpperTexture  = TextureNum;
            ResourceUpper = TextureFile;

            if (ResourceUpper != null && ResourceUpper.Frames.Count > 0)
            {
                frameidx = ResourceUpper.GetFrameIndex(group, 0);
                frameidx = Math.Max(frameidx, 0);

                if (ResourceUpper.Frames.Count > frameidx)
                {
                    TextureUpper = ResourceUpper.Frames[frameidx];
                    SpeedUpper   = GetWallScrollSpeed(TextureUpper.Width, TextureUpper.Height);
                }
                else
                {
                    TextureUpper = null;
                    SpeedUpper   = V2.ZERO;
                }

                TextureNameUpper = RooFile.GetNameForTexture(
                    ResourceUpper, frameidx);

                MaterialNameUpper = RooFile.GetNameForMaterial(
                    ResourceUpper, frameidx, SpeedUpper);
            }
            else
            {
                TextureUpper      = null;
                SpeedUpper        = V2.ZERO;
                TextureNameUpper  = null;
                MaterialNameUpper = null;
            }

            if (TextureChanged != null)
            {
                TextureChanged(this, new WallTextureChangedEventArgs(this, WallPartType.Upper, oldmaterial));
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Gets references to used textures from a resource manager.
        /// </summary>
        /// <param name="M59ResourceManager"></param>
        /// <param name="RaiseChangedEvent"></param>
        public void ResolveResources(ResourceManager M59ResourceManager, bool RaiseChangedEvent)
        {
            // floor
            if (FloorTexture > 0)
            {
                ResourceFloor = M59ResourceManager.GetRoomTexture(FloorTexture);

                if (ResourceFloor != null && ResourceFloor.Frames.Count > 0)
                {
                    TextureFloor = ResourceFloor.Frames[0];
                    SpeedFloor   = GetSectorScrollSpeed(true, TextureFloor.Width, TextureFloor.Height);

                    TextureNameFloor = RooFile.GetNameForTexture(
                        ResourceFloor, 0);

                    MaterialNameFloor = RooFile.GetNameForMaterial(
                        ResourceFloor, 0, SpeedFloor);
                }
                else
                {
                    TextureFloor      = null;
                    TextureNameFloor  = null;
                    MaterialNameFloor = null;
                    SpeedFloor        = V2.ZERO;
                }
            }
            else
            {
                TextureFloor      = null;
                TextureNameFloor  = null;
                MaterialNameFloor = null;
                SpeedFloor        = V2.ZERO;
            }

            // ceiling
            if (CeilingTexture > 0)
            {
                ResourceCeiling = M59ResourceManager.GetRoomTexture(CeilingTexture);

                if (ResourceCeiling != null && ResourceCeiling.Frames.Count > 0)
                {
                    TextureCeiling = ResourceCeiling.Frames[0];
                    SpeedCeiling   = GetSectorScrollSpeed(false, TextureCeiling.Width, TextureCeiling.Height);

                    TextureNameCeiling = RooFile.GetNameForTexture(
                        ResourceCeiling, 0);

                    MaterialNameCeiling = RooFile.GetNameForMaterial(
                        ResourceCeiling, 0, SpeedCeiling);
                }
                else
                {
                    TextureCeiling      = null;
                    TextureNameCeiling  = null;
                    MaterialNameCeiling = null;
                    SpeedCeiling        = V2.ZERO;
                }
            }
            else
            {
                TextureCeiling      = null;
                TextureNameCeiling  = null;
                MaterialNameCeiling = null;
                SpeedCeiling        = V2.ZERO;
            }
        }
Exemplo n.º 6
0
        public void ResolveResources(ResourceManager M59ResourceManager, bool RaiseChangedEvent)
        {
            ushort group    = (animation != null) ? animation.CurrentGroup : (ushort)1;
            int    frameidx = 0;

            /******************************************************************************/

            if (UpperTexture > 0)
            {
                ResourceUpper = M59ResourceManager.GetRoomTexture(UpperTexture);
            }

            if (MiddleTexture > 0)
            {
                ResourceMiddle = M59ResourceManager.GetRoomTexture(MiddleTexture);
            }

            if (LowerTexture > 0)
            {
                ResourceLower = M59ResourceManager.GetRoomTexture(LowerTexture);
            }

            /******************************************************************************/

            if (animation != null)
            {
                // note: possibly need animation instance for each parttype?

                if (ResourceMiddle != null)
                {
                    animation.GroupMax = ResourceMiddle.FrameSets.Count;
                }

                /*else if (ResourceLower != null)
                 *  animation.GroupMax = ResourceLower.FrameSets.Count;
                 *
                 * else if (ResourceUpper != null)
                 *  animation.GroupMax = ResourceUpper.FrameSets.Count;*/
            }

            /******************************************************************************/

            if (ResourceUpper != null && ResourceUpper.Frames.Count > 0)
            {
                frameidx = ResourceUpper.GetFrameIndex(group, 0);
                frameidx = Math.Max(frameidx, 0);

                if (ResourceUpper.Frames.Count > frameidx)
                {
                    TextureUpper = ResourceUpper.Frames[frameidx];
                    SpeedUpper   = GetWallScrollSpeed(TextureUpper.Width, TextureUpper.Height);
                }
                else
                {
                    TextureUpper = null;
                    SpeedUpper   = V2.ZERO;
                }

                TextureNameUpper = RooFile.GetNameForTexture(
                    ResourceUpper, frameidx);

                MaterialNameUpper = RooFile.GetNameForMaterial(
                    ResourceUpper, frameidx, SpeedUpper);
            }
            else
            {
                TextureUpper      = null;
                SpeedUpper        = V2.ZERO;
                TextureNameUpper  = null;
                MaterialNameUpper = null;
            }

            /******************************************************************************/

            if (ResourceMiddle != null && ResourceMiddle.Frames.Count > 0)
            {
                frameidx = ResourceMiddle.GetFrameIndex(group, 0);
                frameidx = Math.Max(frameidx, 0);

                if (ResourceMiddle.Frames.Count > frameidx)
                {
                    TextureMiddle = ResourceMiddle.Frames[frameidx];
                    SpeedMiddle   = GetWallScrollSpeed(TextureMiddle.Width, TextureMiddle.Height);
                }
                else
                {
                    TextureMiddle = null;
                    SpeedMiddle   = V2.ZERO;
                }

                TextureNameMiddle = RooFile.GetNameForTexture(
                    ResourceMiddle, frameidx);

                MaterialNameMiddle = RooFile.GetNameForMaterial(
                    ResourceMiddle, frameidx, SpeedMiddle);
            }
            else
            {
                TextureMiddle      = null;
                SpeedMiddle        = V2.ZERO;
                TextureNameMiddle  = null;
                MaterialNameMiddle = null;
            }

            /******************************************************************************/

            if (ResourceLower != null && ResourceLower.Frames.Count > 0)
            {
                frameidx = ResourceLower.GetFrameIndex(group, 0);
                frameidx = Math.Max(frameidx, 0);

                if (ResourceLower.Frames.Count > frameidx)
                {
                    TextureLower = ResourceLower.Frames[frameidx];
                    SpeedLower   = GetWallScrollSpeed(TextureLower.Width, TextureLower.Height);
                }
                else
                {
                    TextureLower = null;
                    SpeedLower   = V2.ZERO;
                }

                TextureNameLower = RooFile.GetNameForTexture(
                    ResourceLower, frameidx);

                MaterialNameLower = RooFile.GetNameForMaterial(
                    ResourceLower, frameidx, SpeedLower);
            }
            else
            {
                TextureLower      = null;
                SpeedLower        = V2.ZERO;
                TextureNameLower  = null;
                MaterialNameLower = null;
            }
        }