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); }); }
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; } } }
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); } } }
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); }
//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; }
//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); } } } }
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); } } } } }
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; } } }