Esempio n. 1
0
        private void InitializeWeapons()
        {
            IEnumerable <Weapon> weapons = WeaponManager.Instance.Weapons;

            MondstadtWeapons = weapons
                               .Where(item => WeaponHelper.IsTodaysMondstadtWeapon(item.Material))
                               .Where(item => WeaponManager.UnreleasedPolicyFilter(item))
                               .OrderByDescending(item => item.Star)
                               .Select(item =>
            {
                var w = new WeaponIcon()
                {
                    Weapon = item
                };
                w.IconClicked += OnWeaponClicked;
                return(w);
            });
            LiyueWeapons = weapons
                           .Where(item => WeaponHelper.IsTodaysLiyueWeapon(item.Material))
                           .Where(item => WeaponManager.UnreleasedPolicyFilter(item))
                           .OrderByDescending(item => item.Star)
                           .Select(item =>
            {
                var w = new WeaponIcon()
                {
                    Weapon = item
                };
                w.IconClicked += OnWeaponClicked;
                return(w);
            });
        }
Esempio n. 2
0
        public Weapon(int weaponIndex, FF1Rom rom)
        {
            WeaponIndex = weaponIndex;
            //read stats from memory
            int weaponBaseOffset = FF1Rom.WeaponOffset + (WeaponIndex * FF1Rom.WeaponSize);

            HitBonus          = rom.Get(weaponBaseOffset, 1).ToBytes()[0];
            Damage            = rom.Get(weaponBaseOffset + 1, 1).ToBytes()[0];
            Crit              = rom.Get(weaponBaseOffset + 2, 1).ToBytes()[0];
            SpellIndex        = rom.Get(weaponBaseOffset + 3, 1).ToBytes()[0];
            ElementalWeakness = rom.Get(weaponBaseOffset + 4, 1).ToBytes()[0];
            TypeWeakness      = rom.Get(weaponBaseOffset + 5, 1).ToBytes()[0];
            byte weaponSpriteTypeHolder = rom.Get(weaponBaseOffset + 6, 1).ToBytes()[0];

            WeaponTypeSprite         = getWeaponSpriteFromByte(weaponSpriteTypeHolder);
            WeaponSpritePaletteColor = rom.Get(weaponBaseOffset + 7, 1).ToBytes()[0];

            //get name stuff
            Icon = WeaponIcon.NONE;

            Name = rom.ItemsText[(int)Item.WoodenNunchucks + WeaponIndex];

            foreach (var kv in IconCodes)
            {
                if (Name.Contains(kv.Value))
                {
                    Icon = kv.Key;
                    break;
                }
            }
        }
Esempio n. 3
0
        public Weapon(int weaponIndex, NesRom rom)
        {
            WeaponIndex = weaponIndex;
            //read stats from memory
            int weaponBaseOffset = FF1Rom.WeaponOffset + (WeaponIndex * FF1Rom.WeaponSize);

            HitBonus          = rom.Get(weaponBaseOffset, 1).ToBytes()[0];
            Damage            = rom.Get(weaponBaseOffset + 1, 1).ToBytes()[0];
            Crit              = rom.Get(weaponBaseOffset + 2, 1).ToBytes()[0];
            SpellIndex        = rom.Get(weaponBaseOffset + 3, 1).ToBytes()[0];
            ElementalWeakness = rom.Get(weaponBaseOffset + 4, 1).ToBytes()[0];
            TypeWeakness      = rom.Get(weaponBaseOffset + 5, 1).ToBytes()[0];
            byte weaponSpriteTypeHolder = rom.Get(weaponBaseOffset + 6, 1).ToBytes()[0];

            WeaponTypeSprite         = getWeaponSpriteFromByte(weaponSpriteTypeHolder);
            WeaponSpritePaletteColor = rom.Get(weaponBaseOffset + 7, 1).ToBytes()[0];

            //read permissions
            int weaponUsabilityOffset = FF1Rom.WeaponPermissionsOffset + (WeaponIndex * FF1Rom.PermissionsSize);

            byte highByte = rom.Get(weaponUsabilityOffset, 1).ToBytes()[0];
            byte lowByte  = rom.Get(weaponUsabilityOffset + 1, 1).ToBytes()[0];

            ushort assembledUShort = BitConverter.ToUInt16(new byte[2] {
                highByte, lowByte
            }, 0);
            ushort convertedClassPermissions = (ushort)(assembledUShort ^ 0xFFF);

            ClassUsability = convertedClassPermissions;

            //get name stuff
            Icon = WeaponIcon.NONE;
            //hold over from armor, doesnt really need this check
            int weaponBaseNameOffset = FF1Rom.GearTextOffset + (WeaponIndex * FF1Rom.GearTextSize) + (weaponIndex > (byte)Item.Ribbon ? 1 : 0);
            //TODO figure out if treasure hunt is enabled, if so add 6 to this offset
            byte currentValue;

            NameBytes = rom.Get(weaponBaseNameOffset, 8).ToBytes();

            //find icon
            for (int i = 0; i < 8; i++)
            {
                currentValue = NameBytes[i];
                //icon range > 200
                if (currentValue > 200)
                {
                    //check for icon
                    Icon = getWeaponIconFromByte(currentValue);
                }
            }
        }
Esempio n. 4
0
        private WeaponIcon getWeaponIconFromByte(byte icon)
        {
            WeaponIcon matchedType = WeaponIcon.NONE;

            foreach (WeaponIcon temp in (WeaponIcon[])Enum.GetValues(typeof(WeaponIcon)))
            {
                if (icon == (byte)temp)
                {
                    matchedType = temp;
                }
            }

            return(matchedType);
        }
Esempio n. 5
0
 //pre-load values, could be used to create new weapons in the future
 public Weapon(int weaponIndex, string name, WeaponIcon icon, byte hitBonus, byte damage, byte crit, byte spellIndex, byte elementalWeakness, byte typeWeakeness, WeaponSprite weaponTypeSprite, byte weaponSpritePaletteColor)
 {
     WeaponIndex              = weaponIndex;
     Name                     = name;
     Icon                     = icon;
     HitBonus                 = hitBonus;
     Damage                   = damage;
     Crit                     = crit;
     SpellIndex               = spellIndex;
     ElementalWeakness        = elementalWeakness;
     TypeWeakness             = typeWeakeness;
     WeaponTypeSprite         = weaponTypeSprite;
     WeaponSpritePaletteColor = weaponSpritePaletteColor;
 }
Esempio n. 6
0
 //pre-load values, could be used to create new weapons in the future
 public Weapon(int weaponIndex, byte[] nameBytes, WeaponIcon icon, byte hitBonus, byte damage, byte crit, byte spellIndex, byte elementalWeakness, byte typeWeakeness, WeaponSprite weaponTypeSprite, byte weaponSpritePaletteColor)
 {
     WeaponIndex = weaponIndex;
     NameBytes   = nameBytes;
     Icon        = icon;
     if (icon != WeaponIcon.NONE)
     {
         NameBytes[6] = (byte)icon;
     }
     HitBonus                 = hitBonus;
     Damage                   = damage;
     Crit                     = crit;
     SpellIndex               = spellIndex;
     ElementalWeakness        = elementalWeakness;
     TypeWeakness             = typeWeakeness;
     WeaponTypeSprite         = weaponTypeSprite;
     WeaponSpritePaletteColor = weaponSpritePaletteColor;
 }
    private void OnTriggerEnter2D(Collider2D other)
    {
        WeaponIcon icon = other.GetComponent <WeaponIcon>();

        if (icon != null)
        {
            currentWeapon = null;
            currentWeapon = GetWeapon(weapons, icon.weaponType);
            Destroy(icon.gameObject);
            foreach (PlayerWeapon weapon in weapons)
            {
                if (weapon.weaponType != icon.weaponType)
                {
                    weapon.gameObject.SetActive(false);
                }
            }
        }
    }
Esempio n. 8
0
 private void EquipWeapon()
 {
     Collider2D[] objects = Physics2D.OverlapCircleAll(transform.position, 3f);
     foreach (Collider2D other in objects)
     {
         WeaponIcon icon = other.GetComponent <WeaponIcon>();
         if (icon != null)
         {
             currentWeapon = null;
             currentWeapon = GetWeapon(weapons, icon.weaponType);
             Destroy(icon.gameObject);
             foreach (PlayerWeapon weapon in weapons)
             {
                 if (weapon.weaponType != icon.weaponType)
                 {
                     weapon.gameObject.SetActive(false);
                 }
             }
         }
     }
 }
Esempio n. 9
0
    void CheckMouseDown()
    {
        if (Input.GetMouseButtonDown(0))
        {
            cannon = null;
            float          dis;
            float          dis2    = 10;
            RaycastHit2D[] hitInfo = Physics2D.RaycastAll(new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y), Vector2.zero, 1f);
            for (int i = 0; i < hitInfo.Length; i++)
            {
                if (paused == false)
                {
                    if (hitInfo[i].collider.gameObject.name == "OptionsButton")
                    {
                        paused = true;
                        UnityEngine.Object[] objects = FindObjectsOfType(typeof(GameObject));
                        foreach (GameObject go in objects)
                        {
                            go.SendMessage("OnPauseGame", SendMessageOptions.DontRequireReceiver);
                        }
                        options = true;
                        GameObject instance = Instantiate(Resources.Load("OptionsMenu", typeof(GameObject))) as GameObject;

                        OptionsMenu om = instance.GetComponent <OptionsMenu>();
                        om.mouseCheck = this.gameObject;
                        return;
                    }

                    if (hitInfo[i].collider.gameObject.tag == "hitTest")
                    {
                        dis = Vector2.Distance(new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y), new Vector2(hitInfo[i].collider.gameObject.transform.parent.transform.position.x, hitInfo[i].collider.gameObject.transform.parent.transform.position.y));
                        if (dis < dis2)
                        {
                            dis2   = dis;
                            cannon = hitInfo[i].collider.gameObject.GetComponentInParent <Cannon>();
                        }
                    }
                    else if (hitInfo[i].collider.gameObject.tag == "WeaponIcon")
                    {
                        WeaponIcon icon = hitInfo[i].collider.gameObject.GetComponent <WeaponIcon>();
                        if (icon.type != "Platform")
                        {
                            if (energy.energy >= icon.cost)
                            {
                                GameObject instance = Instantiate(Resources.Load(icon.type, typeof(GameObject))) as GameObject;
                                cannon      = instance.GetComponent <Cannon>();
                                cannon.type = icon.type;
                                cannon.Drag(false);
                                cannon.cost = icon.cost;
                                return;
                            }
                            else
                            {
                                infoText.color = new Color(infoText.color.r, infoText.color.g, infoText.color.b, 1f);
                            }
                        }
                        else
                        {
                            if (energy.energy >= icon.cost)
                            {
                                GameObject instance = Instantiate(Resources.Load(icon.type, typeof(GameObject))) as GameObject;
                                platform = instance.GetComponent <Platform>();
                            }
                        }
                    }
                    else if (hitInfo[i].collider.gameObject.name == "GoBack")
                    {
                        SceneManager.LoadScene(2);
                        MusicPlayer mp = GameObject.Find("MusicPlayer").GetComponent <MusicPlayer>();
                        mp.ChangeSong = true;
                        mp.nextSong   = 0;
                    }
                    else if (hitInfo[i].collider.gameObject.name == "RestartLevel")
                    {
                        GameObject   instance = Instantiate(Resources.Load("WeaponSelectPrefab", typeof(GameObject))) as GameObject;
                        WeaponSelect ws       = instance.gameObject.GetComponentInChildren <WeaponSelect>();
                        ws.map = false;
                        paused = true;
                    }
                }
                else
                {
                    if (hitInfo[i].collider.gameObject.name == "Go")
                    {
                        if (hitInfo[i].collider.transform.parent.FindChild("WeaponSelect").FindChild("ActiveBox1").GetComponent <ActiveBox>().Type != "Empty")
                        {
                            SceneManager.LoadScene(1);
                        }
                        else
                        {
                            hitInfo[i].collider.gameObject.transform.parent.FindChild("WeaponSelect").FindChild("NoweaponsSelected").GetComponent <Text>().color = new Color(1f, 0f, 0f, 1f);
                        }
                    }
                    else if (hitInfo[i].collider.gameObject.name == "ReturnToMap")
                    {
                        SceneManager.LoadScene(2);
                        MusicPlayer mp = GameObject.Find("MusicPlayer").GetComponent <MusicPlayer>();
                        mp.ChangeSong = true;
                        mp.nextSong   = 0;
                    }
                    else
                    {
                        for (int r = 1; r < 4; r++)
                        {
                            if (hitInfo[i].collider.gameObject.name == r.ToString())
                            {
                                if (GameVar.WeaponsUnlocked[11 + r] == true)
                                {
                                    Info info = GameObject.Find("Info").GetComponent <Info>();
                                    info.ChangeInfo((byte)(12 + r));
                                }
                            }
                        }
                        string PassiveSlotName;
                        for (int r = 1; r < 13; r++)
                        {
                            PassiveSlotName = "PassiveBox" + r;
                            if (hitInfo[i].collider.gameObject.name == PassiveSlotName)
                            {
                                PassiveBox passiveBox = hitInfo[i].collider.gameObject.GetComponent <PassiveBox>();
                                passiveBox.AddWeapon();
                                if (passiveBox.Locked == false)
                                {
                                    Info info = GameObject.Find("Info").GetComponent <Info>();
                                    info.ChangeInfo((byte)passiveBox.num);
                                }
                            }
                        }
                        for (int r = 1; r < 5; r++)
                        {
                            PassiveSlotName = "ActiveBox" + r;
                            if (hitInfo[i].collider.gameObject.name == PassiveSlotName)
                            {
                                ActiveBox activeBox = hitInfo[i].collider.gameObject.GetComponent <ActiveBox>();
                                activeBox.ResetIcons();
                            }
                        }
                    }
                }
            }
            if (cannon != null)
            {
                cannon.Drag();
            }
        }
        if (Input.GetMouseButtonUp(0))
        {
            if (platform == null)
            {
                if (cannon != null)
                {
                    RaycastHit2D[] hitInfo = Physics2D.RaycastAll(new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y), Vector2.zero, 1f);
                    for (int i = 0; i < hitInfo.Length; i++)
                    {
                        if (hitInfo[i].collider.gameObject.tag == "TrashCan")
                        {
                            if (cannon.emptyCannon != null)
                            {
                                energy.energy += Mathf.Round(cannon.cost * 0.66f);
                                if (cannon.type == "Battery")
                                {
                                    energy.maxEnergy *= 0.5f;
                                }
                                if (cannon.type == "Generator")
                                {
                                    energy.energyAmount -= 1;
                                }
                                energy.UpdateUI();
                            }
                            Destroy(cannon.emptyCannon, 0f);
                            Destroy(cannon.gameObject, 0f);;
                            return;
                        }
                    }


                    StartCoroutine(MouseRelease(cannon));
                }
            }
            else
            {
                platform.Drop(energy);
                platform = null;
            }
        }
    }