示例#1
0
        public CompassPanel(Transform firstPersonTransform) : base(firstPersonTransform, "CMP", "zcm_.map")
        {
            if (ReferenceImage == null)
            {
                return;
            }

            // The compass is a bit special since it smoothly scrolls, so we just load the entire frame instead of the actual sprite.
            CacheManager cacheManager    = CacheManager.Instance;
            Texture2D    bearingsTexture = cacheManager.GetTexture("zcme");

            if (bearingsTexture == null)
            {
                Debug.LogError("Failed to load compass texture.");
                return;
            }

            _textureWidth     = bearingsTexture.width;
            _bearingsPixels   = bearingsTexture.GetPixels();
            _compassSprite    = SpriteManager.GetSprite("zcme.map", "left", 0, 0, false);
            _overlapWrapValue = _textureWidth - _compassSprite.Width - TextureOverlapFix;
            _degreesPerPixel  = 360f / _overlapWrapValue;

            UpdateCompassHeading(0f);
        }
示例#2
0
        public WeaponsPanel(Transform firstPersonTransform) : base(firstPersonTransform, "WEP", "zbk_.map")
        {
            if (ReferenceImage == null)
            {
                return;
            }

            _separatorSprite = SpriteManager.GetSprite("zbar_.map", "sepbar");
        }
示例#3
0
        public void SetSpecialHealthGroup(int specialIndex, int healthGroup)
        {
            I76Sprite sprite = SpriteManager.GetDiodeSprite(healthGroup);

            if (sprite != null)
            {
                string spriteId = "sp_diode_" + (specialIndex + 1);
                ReferenceImage.ApplySprite(spriteId, sprite, true);
            }
        }
示例#4
0
        public void SetWeaponHealthGroup(int weaponIndex, int healthGroup)
        {
            I76Sprite sprite = SpriteManager.GetDiodeSprite(healthGroup);

            if (sprite != null)
            {
                string spriteId = "diode_" + (weaponIndex + 1);
                ReferenceImage.ApplySprite(spriteId, sprite, true);
            }
        }
示例#5
0
        public bool TryGetSpecialSprites(SpecialType special, out I76Sprite onSprite, out I76Sprite offSprite)
        {
            string spriteName;

            switch (special)
            {
            case SpecialType.RadarJammer:
                spriteName = "radar";
                break;

            case SpecialType.NitrousOxide:
                spriteName = "nitrous";
                break;

            case SpecialType.Blower:
                spriteName = "blower";
                break;

            case SpecialType.XAustBrake:
                spriteName = "xaust";
                break;

            case SpecialType.StructoBumper:
                spriteName = "structo";
                break;

            case SpecialType.CurbFeelers:
                spriteName = "curb";
                break;

            case SpecialType.MudFlaps:
                spriteName = "mud";
                break;

            case SpecialType.HeatedSeats:
                spriteName = "heated";
                break;

            case SpecialType.CupHolders:
                spriteName = "cuphdlr";
                break;

            default:
                Debug.LogWarningFormat("GetSpecialSprite was given an unexpected entry - {0}.", special.ToString());
                onSprite  = null;
                offSprite = null;
                return(false);
            }

            onSprite  = SpriteManager.GetSprite("zdse.map", spriteName + "_on");
            offSprite = SpriteManager.GetSprite("zdse.map", spriteName + "_off");

            return(onSprite != null && offSprite != null);
        }
示例#6
0
        public void SetWeaponCount(int weaponCount)
        {
            for (int i = 0; i < weaponCount; ++i)
            {
                int       iPlus1 = i + 1;
                I76Sprite sprite = SpriteManager.GetSprite("zwpe.map", "housing" + iPlus1);
                ReferenceImage.ApplySprite("bracket_" + iPlus1, sprite, false);
            }

            ReferenceImage.UploadToGpu();
        }
示例#7
0
文件: GearPanel.cs 项目: r1sc/Open76
        public GearPanel(Transform firstPersonTransform) : base(firstPersonTransform, "GER", "zgear101.map")
        {
            if (ReferenceImage == null)
            {
                return;
            }

            _arrowSprite      = SpriteManager.GetSprite("zgeare.map", "arrow");
            _backgroundSprite = SpriteManager.GetSprite("zgear2e.map", "prndback");

            ActiveGear = 'D';
        }
示例#8
0
        public SpecialsPanel(Transform firstPersonTransform) : base(firstPersonTransform, "SPC", "zbks_.map")
        {
            if (ReferenceImage == null)
            {
                return;
            }

            for (int i = 0; i < SpecialsController.MaxSpecials; ++i)
            {
                int       iPlus1        = i + 1;
                string    spriteName    = "sp_bracket_" + iPlus1;
                I76Sprite housingSprite = SpriteManager.GetSprite("zwpe.map", "housing" + iPlus1);
                ReferenceImage.ApplySprite(spriteName, housingSprite, false);
            }

            ReferenceImage.UploadToGpu();
        }
示例#9
0
        public void UpdateActiveWeaponGroup(int weaponGroup, Weapon[] weapons)
        {
            for (int i = 0; i < weapons.Length; ++i)
            {
                string referenceName = "dymo_" + (i + 1);

                bool      sameGroup = weapons[i].WeaponGroupOffset == weaponGroup;
                I76Sprite sprite    = sameGroup ? weapons[i].OnSprite : weapons[i].OffSprite;
                ReferenceImage.ApplySprite(referenceName, sprite, false);

                if (SeparatorIndex == i)
                {
                    ReferenceImage.ApplySprite("separator_" + (i + 1), _separatorSprite, false);
                }
            }

            ReferenceImage.UploadToGpu();
        }
示例#10
0
        public void SetSpecialAmmoCount(int specialIndex, int ammoCount)
        {
            string numberString = string.Format("{0:000}", ammoCount);
            char   digit1       = numberString[0];
            char   digit2       = numberString[1];
            char   digit3       = numberString[2];

            I76Sprite digitSprite1 = SpriteManager.GetNumberSprite(digit1);
            I76Sprite digitSprite2 = SpriteManager.GetNumberSprite(digit2);
            I76Sprite digitSprite3 = SpriteManager.GetNumberSprite(digit3);

            string spriteIdSuffix = (specialIndex + 1).ToString();

            ReferenceImage.ApplySprite("sp_num_hunds_" + spriteIdSuffix, digitSprite1, false);
            ReferenceImage.ApplySprite("sp_num_tens_" + spriteIdSuffix, digitSprite2, false);
            ReferenceImage.ApplySprite("sp_num_ones_" + spriteIdSuffix, digitSprite3, false);

            ReferenceImage.UploadToGpu();
        }
示例#11
0
文件: RadarPanel.cs 项目: r1sc/Open76
        public RadarPanel(Car car, Transform firstPersonTransform) : base(firstPersonTransform, "RAD", "zrad.map")
        {
            if (ReferenceImage == null)
            {
                return;
            }

            _blipPixels = new Color32[4];
            for (int i = 0; i < 4; ++i)
            {
                _blipPixels[i] = Color.yellow;
            }

            _longRange              = true;
            _car                    = car;
            _radarContacts          = new Dictionary <Car, RadarContact>();
            _radarAudio             = _car.gameObject.AddComponent <AudioSource>();
            _radarAudio.playOnAwake = false;
            _radarAudio.volume      = 0.2f;

            CacheManager cacheManager = CacheManager.Instance;

            _newContact   = cacheManager.GetAudioClip("cgrowl.gpw");
            _sweepContact = cacheManager.GetAudioClip("cradar.gpw");

            _rangeSprites = new I76Sprite[3];
            for (int i = 0; i < 3; ++i)
            {
                _rangeSprites[i] = SpriteManager.GetSprite("zrge.map", "range_" + (i + 1));
            }

            _ledSprites = new I76Sprite[2];
            for (int i = 0; i < 2; ++i)
            {
                _ledSprites[i] = SpriteManager.GetSprite("ztge.map", "radled_" + (i + 1));
            }

            _sweepSprites  = new I76Sprite[SpriteFrames];
            _targetSprites = new I76Sprite[SpriteFrames];
            for (int i = 0; i < SpriteFrames; ++i)
            {
                string    numberString  = string.Format("{0:00}", i);
                Texture2D sweepTexture  = cacheManager.GetTexture("zradf0" + numberString);
                Texture2D targetTexture = cacheManager.GetTexture("zradb0" + numberString);

                I76Sprite sweepSprite = new I76Sprite
                {
                    Width  = sweepTexture.width,
                    Height = sweepTexture.height,
                    Pixels = sweepTexture.GetPixels32()
                };

                I76Sprite targetSprite = new I76Sprite
                {
                    Width  = targetTexture.width,
                    Height = targetTexture.height,
                    Pixels = targetTexture.GetPixels32()
                };

                _sweepSprites[i]  = sweepSprite;
                _targetSprites[i] = targetSprite;
            }
        }
示例#12
0
        public void SetSystemHealthGroup(SystemType systemType, int healthGroup, bool uploadToGpu)
        {
            string spriteName;
            string referenceName = null;

            string healthSuffix;

            switch (healthGroup)
            {
            case 0:
                healthSuffix = "_off";
                break;

            case 1:
                healthSuffix = "_grn";
                break;

            case 2:
                healthSuffix = "_ylw";
                break;

            case 3:
                healthSuffix = "_red";
                break;

            case 4:
                healthSuffix = "_drk";
                break;

            default:
                Debug.LogWarning("Health group out of range in SystemsPanel.");
                return;
            }

            switch (systemType)
            {
            case SystemType.Brakes:
                spriteName = "brakes";
                break;

            case SystemType.Engine:
                spriteName = "engine";
                break;

            case SystemType.Suspension:
                spriteName = "suspen";
                break;

            case SystemType.FrontArmor:
                spriteName = "farm";
                break;

            case SystemType.LeftArmor:
                spriteName = "larm";
                break;

            case SystemType.RightArmor:
                spriteName = "rarm";
                break;

            case SystemType.BackArmor:
                spriteName = "barm";
                break;

            case SystemType.FrontChassis:
                spriteName = "fchas";
                break;

            case SystemType.LeftChassis:
                spriteName = "lchas";
                break;

            case SystemType.RightChassis:
                spriteName = "rchas";
                break;

            case SystemType.BackChassis:
                spriteName = "bchas";
                break;

            case SystemType.TireFL:
                spriteName    = "tire";
                referenceName = "fltire";
                break;

            case SystemType.TireFR:
                spriteName    = "tire";
                referenceName = "frtire";
                break;

            case SystemType.TireBL:
                spriteName    = "tire";
                referenceName = "rltire";
                break;

            case SystemType.TireBR:
                spriteName    = "tire";
                referenceName = "rrtire";
                break;

            default:
                Debug.LogWarning("Unknown systemType in SystemsPanel. - " + systemType);
                return;
            }

            if (referenceName == null)
            {
                referenceName = spriteName;
            }

            I76Sprite sprite = SpriteManager.GetSprite("zsye.map", spriteName + healthSuffix);

            if (sprite != null)
            {
                ReferenceImage.ApplySprite(referenceName, sprite, uploadToGpu);
            }
        }
示例#13
0
        public bool TryGetWeaponSprites(Gdf weaponGdf, out I76Sprite onSprite, out I76Sprite offSprite)
        {
            string spriteName;

            switch (weaponGdf.Name)
            {
            case "30cal MG":
                spriteName = "30cal_mg";
                break;

            case "50cal MG":
                spriteName = "50cal_mg";
                break;

            case "20mm Cannnon":
                spriteName = "20mm_can";
                break;

            case "25mm Cannon":
                spriteName = "25mm_can";
                break;

            case "30mm Cannon":
                spriteName = "30mm_can";
                break;

            case "Oil Slick":
                spriteName = "oilslick";
                break;

            case "FireRite Rkt":
                spriteName = "fr_rocket";
                break;

            case "Landmines":
                spriteName = "landmines";
                break;

            case "Fire-Dropper":
                spriteName = "firedropper";
                break;

            case "Gas Launcher":
                spriteName = "gaslaunchr";
                break;

            case "7.62mm MG":
                spriteName = "762_mg";
                break;

            default:
                Debug.LogWarningFormat("GetWeaponSprite for weapon '{0}' not implemented.", weaponGdf.Name);
                onSprite  = null;
                offSprite = null;
                return(false);
            }

            onSprite  = SpriteManager.GetSprite("zdue.map", spriteName + "_on");
            offSprite = SpriteManager.GetSprite("zdue.map", spriteName + "_off");

            return(onSprite != null && offSprite != null);
        }