Esempio n. 1
0
        public void SetDisplayCharacter(Character.Character character)
        {
            if (character == null)
            {
                throw new ArgumentNullException(nameof(character));
            }

            _CharacterNameText.Text = character.Name;
            _CharacterNameText.Show();
            _Character.SetVisual(character.Template.Model.BaseDef.Visual);

            //We have custom visuals from the server because it is a human character.
            if (character is HumanCharacter humanCharacter)
            {
                HumanCharacterVisuals visuals = humanCharacter.CharacterVisuals;
                _Character.SetAdditionalVisuals(visuals.BodyMesh.ToString(), (int)visuals.BodyTex, visuals.HeadMesh.ToString(), (int)visuals.HeadTex);
                _Character.SetFatness(visuals.Fatness);
                _Character.SetScale(new Types.Vec3f(visuals.BodyWidth, 1.0f, visuals.BodyWidth));
            }
            else
            {
                //Its a non human character, take the visuals from the template.
                _Character.SetAdditionalVisuals(character.Template.BodyMesh, character.Template.BodyTex, character.Template.HeadMesh, character.Template.HeadTex);
                _Character.SetFatness(1);
                _Character.SetScale(new Types.Vec3f(1.0f, 1.0f, 1.0f));
            }

            _DisplayCharacterIsHidden = false;
        }
Esempio n. 2
0
        private void OnCursorChanged(GUCMainMenu sender)
        {
            if (cursor >= 0 && cursor < _Characters.Length)
            {
                Character.Character character = _Characters[cursor];

                _CharacterNameText.Text = character.Name;
                _CharacterNameText.Show();
                _CharacterDisplay.SetVisual(character.Template.Model.BaseDef.Visual);

                //We have custom visuals from the server because it is a human character.
                if (character is HumanCharacter humanCharacter)
                {
                    HumanCharacterVisuals visuals = humanCharacter.CharacterVisuals;
                    _CharacterDisplay.SetAdditionalVisuals(visuals.BodyMesh.ToString(), (int)visuals.BodyTex, visuals.HeadMesh.ToString(), (int)visuals.HeadTex);
                    _CharacterDisplay.SetFatness(visuals.Fatness);
                    _CharacterDisplay.SetScale(new Types.Vec3f(visuals.BodyWidth, 1.0f, visuals.BodyWidth));
                }
                else
                {
                    //Its a non human character, take the visuals from the template.
                    _CharacterDisplay.SetAdditionalVisuals(character.Template.BodyMesh, character.Template.BodyTex, character.Template.HeadMesh, character.Template.HeadTex);
                    _CharacterDisplay.SetFatness(1);
                    _CharacterDisplay.SetScale(new Types.Vec3f(1.0f, 1.0f, 1.0f));
                }
            }
        }
Esempio n. 3
0
        public Character.Character ReadCharacter(PacketReader stream)
        {
            try
            {
                int    characterId      = stream.ReadInt();
                string characterName    = stream.ReadString();
                int    templateId       = stream.ReadInt();
                bool   isHumanCharacter = stream.ReadBit();

                if (!_NpcDefList.TryGetByName(templateId, out NPCDef def))
                {
                    throw new ArgumentException($"Character with name '{characterName}' has a invalid templateId(NPCDef)!");
                }


                if (isHumanCharacter)
                {
                    HumanCharacterVisuals additionalVisuals = new HumanCharacterVisuals
                    {
                        BodyMesh  = (HumBodyMeshs)stream.ReadByte(),
                        BodyTex   = (HumBodyTexs)stream.ReadByte(),
                        HeadMesh  = (HumHeadMeshs)stream.ReadByte(),
                        HeadTex   = (HumHeadTexs)stream.ReadByte(),
                        Voice     = (HumVoices)stream.ReadByte(),
                        BodyWidth = stream.ReadFloat(),
                        Fatness   = stream.ReadFloat(),
                    };
                    return(new HumanCharacter(characterId, characterName, additionalVisuals, def));
                }
                return(new NonHumanCharacter(characterId, characterName, def));
            }
            catch (Exception e)
            {
                throw new ScriptMessageHandlingException("Something went wrong while reading character visuals information from a server script message!", e);
            }
        }