public byte GetCharacterEquipment(CharNames charName, Func <CharMemLoc, IntPtr> addressSelector)
        {
            CharMemLoc charMemLoc = CharMemLoc.ByName(charName);
            var        bytes      = new byte[1];

            _memoryAccessor.ReadMem(Settings.ProcessName, addressSelector(charMemLoc), bytes);
            return(bytes[0]);
        }
        public void SetCharacterEquipment(CharNames charName, byte equipmentEquipmentId,
                                          Func <CharMemLoc, IntPtr> addressSelector)
        {
            CharMemLoc charMemLoc = CharMemLoc.ByName(charName);
            var        bytes      = new[] { equipmentEquipmentId };

            _memoryAccessor.WriteMem(Settings.ProcessName, addressSelector(charMemLoc), bytes);
        }
Example #3
0
        public string GetCharacterName(CharNames charName)
        {
            CharMemLoc cml = CharMemLoc.ByName(charName);

            byte[] bytes = new byte[cml.Name.NumBytes];
            _memoryAccessor.ReadMem(ProcessName, cml.Name.Address, bytes);

            string characterName = bytes.MapFf7BytesToString();

            return(characterName);
        }
Example #4
0
        public void SetCharacterName(CharNames charName, string newName)
        {
            CharMemLoc cml = CharMemLoc.ByName(charName);

            byte[] bytes = newName.MapStringToFf7Bytes();

            if (_momentAccessor.AtMomentOrLater(charName.AllowNamingAfter))
            {
                _memoryAccessor.WriteMem(ProcessName, cml.Name.Address, bytes);
            }
            _memoryAccessor.WriteMem(ProcessName, cml.StartingName.Address, bytes);
        }
Example #5
0
        public void RemoveArmletMateria(CharNames charNames, int keep = 0)
        {
            CharMemLoc charMemLoc = CharMemLoc.ByName(charNames);

            byte[] emptyRow = { byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue };

            for (int i = ItemSize * keep; i < charMemLoc.ArmorMateria.NumBytes; i += ItemSize)
            {
                IntPtr address = IntPtr.Add(charMemLoc.ArmorMateria.Address, i);
                var    bytes   = new byte[ItemSize];
                _memory.ReadMem(Settings.ProcessName, address, bytes);
                var materia = new MateriaSlot(bytes);
                AddMateria(materia.MateriaId, materia.Experience);
                _memory.WriteMem(Settings.ProcessName, address, emptyRow);
            }
        }
Example #6
0
        private static CharacterRecord CreateCharacterRecord(byte charId, byte[] map)
        {
            var charName = CharNames.GetById(charId);

            var offset = charName.SaveMapRecordOffset;

            if (offset == -1)
            {
                // Invalid or empty record
                return(new CharacterRecord {
                    Id = FF7Const.Empty
                });;
            }

            var record = new Span <byte>(map, offset, 0x80).ToArray().ToType <CharacterRecord>();

            return(record);
        }
Example #7
0
    private void Evolve()
    {
        Sequences selection = currentSequences[UnityEngine.Random.Range(0, 7)];
        CharNames nextChar  = CharNames.N;

        switch (selection)
        {
        case Sequences.Offensive:
            nextChar = CharNames.O;
            break;

        case Sequences.Defensive:
            nextChar = CharNames.D;
            break;

        case Sequences.Technical:
            nextChar = CharNames.T;
            break;
        }
        GetComponent <PlayerStats>().EvolveUpdate(Characters.CharacterStatsDictionary[nextChar]);
    }
Example #8
0
 public abstract bool IsMatchByEquipId(ushort equipId, CharNames charName = null);
Example #9
0
 public abstract bool IsMatchByItemId(ushort itemId, CharNames charName   = null);
Example #10
0
    // Update is called once per frame
    void Update()
    {
        if (startedGame)
        {
            return;
        }

        if (Input.GetButtonUp("Player_One_Pause") || Input.GetButtonUp("Player_Two_Pause"))
        {
            if (Player1Chosen && Player2Chosen)
            {
                StartGameButton.GetComponent <MenuButtons>().PressButton();
                return;
            }
        }

        if (ReturnButton.GetComponent <MouseHover>().GetSelected() && !StartGameButton.activeInHierarchy)
        {
            ReturnButton.GetComponent <MouseHover>().SetSelected(false);
            ReturnButton.GetComponent <TextMesh>().color = Color.white;
        }

        if (Input.GetAxis("Player_One_Joystick_Vertical") > 0 || Input.GetButtonUp("Player_One_Menu_Down"))
        {
            if (!Player1Chosen)
            {
                onReturn = true;
                ReturnButton.GetComponent <TextMesh>().color = Color.white;
                Player1Icon.SetActive(false);
            }
        }
        else if (Input.GetAxis("Player_One_Joystick_Vertical") < 0 || Input.GetButtonUp("Player_One_Menu_Up"))
        {
            if (onReturn)
            {
                onReturn = false;
                ReturnButton.GetComponent <TextMesh>().color = new Color(1, 0.75f, 0);
                Player1Icon.SetActive(true);
            }
        }

        if (Input.GetButtonUp("Player_One_Paddle_Forward"))
        {
            if (!onReturn)
            {
                if (Player1Chosen == false)
                {
                    if (!Player2Chosen || Player1Pos != Player2Pos)
                    {
                        CharNames name = (CharNames)Player1Pos;
                        PlayerData.player1Character = name.ToString();

                        Player1Chosen = true;
                        Player1Icon.SetActive(false);
                        Player1Text.SetActive(true);

                        if (Player1Pos == 0)
                        {
                            audioP1.pitch = rogerPitch;
                        }
                        else
                        {
                            audioP1.pitch = jollyPitch;
                        }

                        audioP1.PlayOneShot(onCharacterClip[Player1Pos]);


                        if (Player1Chosen && Player2Chosen)
                        {
                            StartGameButton.SetActive(true);
                            ReturnButton.GetComponent <TextMesh>().color = new Color(0.85f, 0.65f, 0);
                        }
                    }
                }
            }
            else
            {
                ReturnButton.GetComponent <TextMesh>().color = new Color(1, 0.75f, 0);
                ReturnButton.GetComponent <MenuButtons>().PressButton();
            }
        }
        else if (Input.GetButtonUp("Player_One_Paddle_Back"))
        {
            if (Player1Chosen == true)
            {
                StartGameButton.SetActive(false);
                Player1Chosen = false;
                Player1Icon.SetActive(true);
                Player1Text.SetActive(false);
            }
            else
            {
                ReturnButton.GetComponent <TextMesh>().color = new Color(1, 0.75f, 0);
                ReturnButton.GetComponent <MenuButtons>().PressButton();
            }
        }
        else if (!Player1Chosen && !onReturn)
        {
            if (Input.GetButtonDown("Player_One_Paddle_Right") || Input.GetAxis("Player_One_Joystick_Horizontal") > 0)
            {
                if (Player1Pos + 1 < AmountOfChars)
                {
                    Player1Icon.transform.localPosition += portraitDistance;
                    Player1Text.transform.localPosition += portraitDistance;
                    Player1Pos++;
                    audioP1.pitch = 1;
                    audioP1.PlayOneShot(changingCharacterClip);
                }
            }
            else if (Input.GetButtonDown("Player_One_Paddle_Left") || Input.GetAxis("Player_One_Joystick_Horizontal") < 0)
            {
                if (Player1Pos > 0)
                {
                    Player1Icon.transform.localPosition -= portraitDistance;
                    Player1Text.transform.localPosition -= portraitDistance;
                    Player1Pos--;
                    audioP1.pitch = 1;
                    audioP1.PlayOneShot(changingCharacterClip);
                }
            }
        }


        if (Input.GetButtonDown("Player_Two_Paddle_Forward"))
        {
            if (!Player2Chosen)
            {
                if (!Player1Chosen || Player1Pos != Player2Pos)
                {
                    CharNames name = (CharNames)Player2Pos;
                    PlayerData.player2Character = name.ToString();

                    Player2Chosen = true;
                    Player2Icon.SetActive(false);
                    Player2Text.SetActive(true);

                    if (Player2Pos == 0)
                    {
                        audioP2.pitch = rogerPitch;
                    }
                    else
                    {
                        audioP2.pitch = jollyPitch;
                    }

                    audioP2.PlayOneShot(onCharacterClip[Player2Pos]);

                    if (Player1Chosen && Player2Chosen)
                    {
                        StartGameButton.SetActive(true);
                        ReturnButton.GetComponent <TextMesh>().color = new Color(0.85f, 0.65f, 0);
                    }
                }
            }
        }
        else if (Input.GetButtonDown("Player_Two_Paddle_Back"))
        {
            StartGameButton.SetActive(false);
            Player2Chosen = false;
            Player2Icon.SetActive(true);
            Player2Text.SetActive(false);
        }
        else if (!Player2Chosen)
        {
            if (Input.GetButtonDown("Player_Two_Paddle_Right") || Input.GetAxis("Player_Two_Joystick_Horizontal") > 0)
            {
                if (Player2Pos + 1 < AmountOfChars)
                {
                    Player2Icon.transform.localPosition += portraitDistance;
                    Player2Text.transform.localPosition += portraitDistance;
                    Player2Pos++;
                    audioP2.pitch = 1;
                    audioP2.PlayOneShot(changingCharacterClip);
                }
            }
            else if (Input.GetButtonDown("Player_Two_Paddle_Left") || Input.GetAxis("Player_Two_Joystick_Horizontal") < 0)
            {
                if (Player2Pos > 0)
                {
                    Player2Icon.transform.localPosition -= portraitDistance;
                    Player2Text.transform.localPosition -= portraitDistance;
                    Player2Pos--;
                    audioP2.pitch = 1;
                    audioP2.PlayOneShot(changingCharacterClip);
                }
            }
        }
    }
        public static EquippableSettings FindByValue(this List <EquippableSettings> list, string value, CharNames charName)
        {
            IEnumerable <EquippableSettings> enabled = list.Where(x => x.Enabled);

            if (ushort.TryParse(value, out ushort id))
            {
                return(enabled.FirstOrDefault(x => x.Item.IsMatchByEquipId(id, charName)));
            }

            return(enabled.FirstOrDefault(x => x.Words.Any(w => w.EqualsIns(value))));
        }
Example #12
0
 public override bool IsMatchByEquipId(ushort equipId, CharNames charName = null)
 => EquipmentId == equipId && CharName == charName;
Example #13
0
 public abstract bool IsMatchByName(string name, CharNames charName);
Example #14
0
        public static List <EquippableSettings> AllByName(this List <EquippableSettings> list, string name, CharNames charName)
        {
            IEnumerable <EquippableSettings> enabled = list.Where(x => x.Enabled);

            if (string.IsNullOrWhiteSpace(name))
            {
                return(enabled.Where(x => x.Item.IsMatchByCharacter(charName)).ToList());
            }

            return(enabled.Where(x => x.Item.IsMatchByName(name, charName)).ToList());
        }
Example #15
0
 public override bool IsMatchByCharacter(CharNames charName) => true;
Example #16
0
 protected Weapon(ushort id, string name, ushort defaultPrice, ushort typeOffset, CharNames charName,
                  byte weaponOffset, bool enabled, params string[] words)
     : base(id, name, defaultPrice, enabled, typeOffset, weaponOffset, words)
 {
     CharName = charName;
 }
Example #17
0
        private static bool FillChar(byte charId, ref CharacterRecord characterRecord, byte[] map)
        {
            CharNames charName = CharNames.GetById(charId);

            var offset = charName.SaveMapRecordOffset;

            if (offset == -1)
            {
                // Invalid or empty record
                return(false);
            }

            characterRecord.DefaultName = charName;

            var characterNameBytes = new byte[12];

            Array.Copy(map, offset + SaveMapCharacterOffsets.Name, characterNameBytes, 0, 12);
            characterRecord.Name = characterNameBytes.ToFFString();

            characterRecord.Id            = charId;
            characterRecord.Level         = map[offset + SaveMapCharacterOffsets.Level];
            characterRecord.Strength      = map[offset + SaveMapCharacterOffsets.Strength];
            characterRecord.Vitality      = map[offset + SaveMapCharacterOffsets.Vitality];
            characterRecord.Magic         = map[offset + SaveMapCharacterOffsets.Magic];
            characterRecord.Spirit        = map[offset + SaveMapCharacterOffsets.Spirit];
            characterRecord.Dexterity     = map[offset + SaveMapCharacterOffsets.Dexterity];
            characterRecord.Luck          = map[offset + SaveMapCharacterOffsets.Luck];
            characterRecord.StrBonus      = map[offset + SaveMapCharacterOffsets.StrengthBonus];
            characterRecord.VitBonus      = map[offset + SaveMapCharacterOffsets.VitalityBonus];
            characterRecord.MagBonus      = map[offset + SaveMapCharacterOffsets.MagicBonus];
            characterRecord.SprBonus      = map[offset + SaveMapCharacterOffsets.SpiritBonus];
            characterRecord.DexBonus      = map[offset + SaveMapCharacterOffsets.DexterityBonus];
            characterRecord.LucBonus      = map[offset + SaveMapCharacterOffsets.LuckBonus];
            characterRecord.LimitLevel    = map[offset + SaveMapCharacterOffsets.LimitLevel];
            characterRecord.LimitBar      = map[offset + 0x0F];
            characterRecord.Weapon        = map[offset + SaveMapCharacterOffsets.EquipedWeapon];
            characterRecord.Armor         = map[offset + SaveMapCharacterOffsets.EquipedArmor];
            characterRecord.Accessory     = map[offset + SaveMapCharacterOffsets.EquipedAccessory];
            characterRecord.Flags         = map[offset + SaveMapCharacterOffsets.StatusFlags];
            characterRecord.AtFront       = map[offset + SaveMapCharacterOffsets.Row] == FF7Const.Empty;
            characterRecord.LevelProgress = map[offset + 0x21];
            characterRecord.LimitMask     = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.LimitBreaks);
            characterRecord.Kills         = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.NumberOfKills);
            characterRecord.LimitTimes    = new short[3];
            characterRecord.LimitTimes[0] =
                BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.LimitLevel1Uses);
            characterRecord.LimitTimes[1] =
                BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.LimitLevel2Uses);
            characterRecord.LimitTimes[2] =
                BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.LimitLevel3Uses);
            characterRecord.CurrentHp     = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.CurrentHp);
            characterRecord.BaseHp        = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.BaseHp);
            characterRecord.MaxHp         = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.MaxHp);
            characterRecord.CurrentMp     = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.CurrentMp);
            characterRecord.BaseMp        = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.BaseMp);
            characterRecord.MaxMp         = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.MaxMp);
            characterRecord.Experience    = BitConverter.ToInt32(map, offset + SaveMapCharacterOffsets.CurrentExp);
            characterRecord.WeaponMateria = new int[8];

            for (var materiaSlot = 0; materiaSlot <= 7; materiaSlot++)
            {
                characterRecord.WeaponMateria[materiaSlot] =
                    map[offset + SaveMapCharacterOffsets.WeaponMateria1 + (4 * materiaSlot)];
            }

            characterRecord.ArmorMateria = new int[8];

            for (var materiaSlot = 0; materiaSlot <= 7; materiaSlot++)
            {
                characterRecord.ArmorMateria[materiaSlot] =
                    map[offset + SaveMapCharacterOffsets.ArmorMateria1 + (4 * materiaSlot)];
            }

            characterRecord.ExpToLevel = BitConverter.ToInt32(map, offset + SaveMapCharacterOffsets.ExpToNextLevel);
            return(true);
        }
Example #18
0
 public T GetByEquipId(ushort equipId, CharNames charName = null)
 => All.SingleOrDefault(x => x.IsMatchByEquipId(equipId, charName));
Example #19
0
 public T GetByItemId(ushort itemId, CharNames charName = null)
 => All.SingleOrDefault(x => x.IsMatchByItemId(itemId, charName));
Example #20
0
 public NameVoteReceived(CharNames charName, string bidName, BidRecord bidRecord)
 {
     CharName  = charName;
     BidName   = bidName;
     BidRecord = bidRecord;
 }
Example #21
0
 public static CharMemLoc ByName(CharNames charName)
 {
     return(All[charName.Id]);
 }
Example #22
0
 public abstract bool IsMatchByCharacter(CharNames charName);
Example #23
0
 public override bool IsMatchById(ushort id, CharNames charName)
 => Id == id;
Example #24
0
 public abstract bool IsMatchById(ushort id, CharNames charName);
Example #25
0
 public TopNameChanged(CharNames charName, string newName)
 {
     CharName = charName;
     NewName  = newName;
 }
Example #26
0
 public override bool IsMatchByItemId(ushort itemId, CharNames charName)
 => ItemId == itemId;
Example #27
0
 public override bool IsMatchByEquipId(ushort equipId, CharNames charName)
 => EquipmentId == equipId;
Example #28
0
 public override bool IsMatchByName(string name, CharNames charName)
 => IsMatchByName(name);
 private void ContentListOnScrollChanged(object sender, ScrollChangedEventArgs e)
 {
     CharNames.GetChild <ScrollViewer>().ScrollToVerticalOffset(e.VerticalOffset);
 }
Example #30
0
 public override bool IsMatchByItemId(ushort itemId, CharNames charName = null)
 => ItemId == itemId && CharName == charName;