Exemple #1
0
            void Start()
            {
                Debug.Log("MenuTriggers", "Start");

                Transform[] transforms = Resources.FindObjectsOfTypeAll <Transform>();

                for (int i = 0; i < transforms?.Length; i++)
                {
                    Transform transform = transforms[i];

                    switch (transform?.name)
                    {
                    case "WernerVonKerman":
                        UIKerbalWerner werner     = transform.gameObject.AddOrGetComponent <UIKerbalWerner>();
                        CustomHead     wernerHead = transform.gameObject.AddOrGetComponent <CustomHead>();
                        break;

                    case "Strategy_Mortimer":
                    case "Strategy_ScienceGuy":
                    case "Strategy_PRGuy":
                    case "Strategy_MechanicGuy":
                        UIKerbalStrategy strategy  = transform?.gameObject?.AddOrGetComponent <UIKerbalStrategy>();
                        CustomHead       adminHead = transform?.gameObject?.AddOrGetComponent <CustomHead>();
                        break;

                    case "instructor_Gene":
                        if (transform?.parent?.gameObject?.name == "Instructor_Gene")
                        {
                            UIKerbalGene gene     = transform?.gameObject?.AddOrGetComponent <UIKerbalGene>();
                            CustomHead   geneHead = transform?.gameObject?.AddOrGetComponent <CustomHead>();
                        }
                        break;
                    }
                }
            }
Exemple #2
0
            void OnCrewOnEva(GameEvents.FromToAction <Part, Part> action)
            {
                Debug.Log("FlightTriggers.OnCrewOnEva", "Part = " + action.to);

                KerbalEVA  kerbalEVA  = action.to.GetComponent <KerbalEVA>();
                CustomHead customHead = kerbalEVA.gameObject.AddOrGetComponent <CustomHead>();
            }
Exemple #3
0
            internal static void ApplyTo(ProtoCrewMember kerbal, CustomHead head)
            {
                Debug.Log("NyanHead.ApplyTo", "kerbal = " + kerbal);

                Renderer[] renderers = head.GetComponentsInChildren <Renderer>();

                for (int i = 0; i < renderers?.Length; i++)
                {
                    string   name     = renderers[i]?.name;
                    Material material = renderers[i]?.material;
                    if (material == null)
                    {
                        continue;
                    }


                    switch (name)
                    {
                    case "headMesh":
                    case "headMesh01":
                    case "headMesh02":
                    case "mesh_female_kerbalAstronaut01_kerbalGirl_mesh_polySurface51":
                        material.SetTexture(Nyan.nyanHead);
                        if (kerbal.gender == ProtoCrewMember.Gender.Female)
                        {
                            material.SetTextureOffset("_MainTex", new Vector2(-0.225f, -0.5f));
                            material.SetTextureScale("_MainTex", new Vector2(1.5f, 1.75f));
                        }
                        continue;
                    }
                }
            }
Exemple #4
0
            void Start()
            {
                ProtoCrewMember kerbal = UIKerbals.instructors[0];
                CustomHead      head   = gameObject.AddOrGetComponent <CustomHead>();

                head.LoadFor(kerbal);
                head.ApplyTo(kerbal);
            }
Exemple #5
0
        /// <summary>
        /// 解析包体,从buf的开头位置解析起
        /// <remark>abu 2008-02-18 </remark>
        /// </summary>
        /// <param name="buf">The buf.</param>
        protected override void ParseBody(ByteBuffer buf)
        {
#if DEBUG
            Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
#endif
            Empty = false;
            // 检查消息长度,至少要有16字节,因为我们需要前16字节做为确认发回
            if (buf.Remaining() < 16)
            {
                throw new PacketParseException("收到的消息太短,抛弃该消息");
            }
            // 得到前16个字节用作回复
            Reply = buf.GetByteArray(16);
            // 读取消息头
            buf.Position = 0;
            Header       = new ReceiveIMHeader();
            Header.Read(buf);
            // 检查输入流可用字节
            if (!buf.HasRemaining())
            {
                Empty = true;
                return;
            }
            // 判断消息类型
            int len = 0;
            switch (Header.Type)
            {
            case RecvSource.FRIEND_0801: //手机消息
                buf.Position += 10;      //buf.GetInt();
                ParseNormalIM(buf);
                break;

            case RecvSource.FRIEND_0802:
                ParseNormalIM(buf);
                break;

            case RecvSource.FRIEND_09:
                buf.Position += 11;
                ParseNormalIM(buf);
                break;

            case RecvSource.FRIEND_09SP1:
                buf.Position += 2;
                int len1 = buf.GetUShort();
                buf.Position += len1;
                ParseNormalIM(buf);
                break;

            case RecvSource.STRANGER:
                /* 是从好友或者陌生人处发来的消息 */
                ParseNormalIM(buf);
                break;

            case RecvSource.TEMP_SESSION:
                TempSessionIM = new TempSessionIM();
                TempSessionIM.Read(buf);
                break;

            case RecvSource.SYS_MESSAGE:
                /* 是系统消息 */
                buf.GetInt();    //00 00 00 00
                ParseSystemMessage(buf);
                break;

            case RecvSource.CLUSTER_09:
                /* 群消息09 */
                ParseClusterIM09(buf);
                break;

            case RecvSource.CLUSTER:

                /* 群消息 */
                ParseClusterIM(buf);
                break;

            case RecvSource.TEMP_CLUSTER:
                /* 临时群消息 */
                ParseTempClusterIM(buf);
                break;

            case RecvSource.UNKNOWN_CLUSTER:
                ParseUnknownClusterIM(buf);
                break;

            case RecvSource.BIND_USER:
                SMS = new SMS();
                SMS.ReadBindUserSMS(buf);
                break;

            case RecvSource.MOBILE_QQ:
                SMS = new SMS();
                SMS.ReadMobileQQSMS(buf);
                break;

            case RecvSource.MOBILE_QQ_2:
                SMS = new SMS();
                SMS.ReadMobileQQ2SMS(buf);
                break;

            case RecvSource.MOBILE:
                SMS = new SMS();
                SMS.ReadMobileSMS(buf);
                break;

            case RecvSource.CREATE_CLUSTER:
            case RecvSource.ADDED_TO_CLUSTER:
            case RecvSource.DELETED_FROM_CLUSTER:
                ExternalId  = buf.GetInt();
                ClusterType = (ClusterType)buf.Get();
                Sender      = buf.GetInt();
                break;

            case RecvSource.APPROVE_JOIN_CLUSTER:
            case RecvSource.REJECT_JOIN_CLUSTER:
            case RecvSource.REQUEST_JOIN_CLUSTER:
                ExternalId  = buf.GetInt();
                ClusterType = (ClusterType)buf.Get();
                Sender      = buf.GetInt();
                len         = buf.Get() & 0xFF;
                byte[] b = buf.GetByteArray(len);
                Message = Utils.Util.GetString(b);
                break;

            case RecvSource.CLUSTER_NOTIFICATION:
                ExternalId  = buf.GetInt();
                ClusterType = (ClusterType)buf.Get();
                OpCode      = buf.Get();
                MemberQQ    = buf.GetInt();
                Role        = buf.Get();
                Sender      = ExternalId;
                break;

            case RecvSource.SIGNATURE_CHANGE:
                SignatureOwner = buf.GetInt();
                ModifiedTime   = buf.GetInt();
                len            = buf.Get() & 0xFF;
                Signature      = Utils.Util.GetString(buf, len);
                break;

            case RecvSource.QQLIVE:
                QQLive = new QQLive();
                QQLive.Read(buf);
                break;

            case RecvSource.MEMBER_LOGIN_HINT:
                buf.Get();
                break;

            case RecvSource.CUSTOM_HEAD_CHANGE:
                int count = buf.Get() & 0xFF;
                if (count > 0)
                {
                    HeadChanges = new List <CustomHead>();
                    while (buf.HasRemaining())
                    {
                        CustomHead change = new CustomHead();
                        change.Read(buf);
                        HeadChanges.Add(change);
                    }
                }
                break;

            case RecvSource.PROPERTY_CHANGE:
                PropertyChange = new UserPropertyChange();
                PropertyChange.Read(buf);
                break;

            case RecvSource.INPUT_STATE_CHANGE: //输入状态
                buf.GetInt();                   //00 00 00 00
                Sender = buf.GetInt();          //09 58 8C 87
                buf.Get();                      //00
                break;

            default:
                // 其他类型的消息我们现在没有办法处理,忽略
                Client.LogManager.Log(ToString() + " Unknown RecvSource=0x" + Header.Type.ToString("X"));
                break;
            }
        }