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; } } }
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>(); }
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; } } }
void Start() { ProtoCrewMember kerbal = UIKerbals.instructors[0]; CustomHead head = gameObject.AddOrGetComponent <CustomHead>(); head.LoadFor(kerbal); head.ApplyTo(kerbal); }
/// <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; } }