You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			168 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C#
		
	
		
		
			
		
	
	
			168 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C#
		
	
| 
											2 years ago
										 | using System; | ||
|  | using System.Collections.Generic; | ||
|  | using UnityEngine; | ||
|  | using Entitas; | ||
|  | using Game; | ||
|  | using Articy.Touhou; | ||
|  | using FluidDynamics; | ||
|  | 
 | ||
|  | namespace Game | ||
|  | { | ||
|  |     public abstract partial class Util | ||
|  |     { | ||
|  |         public static Dictionary<Type, int> CompKeymap; | ||
|  |         public static int GetCompnentIndex<T>() | ||
|  |         { | ||
|  |             if (CompKeymap == null) | ||
|  |             { | ||
|  |                 CompKeymap = new Dictionary<Type, int>(); | ||
|  |                 var compTypes = GameComponentsLookup.componentTypes; | ||
|  |                 for (int i = 0; i < compTypes.Length; i++) | ||
|  |                 { | ||
|  |                     CompKeymap[compTypes[i]] = i; | ||
|  |                 } | ||
|  |             } | ||
|  |             return CompKeymap[typeof(T)]; | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | public partial class GameEntity | ||
|  | { | ||
|  |     static GameEntity() | ||
|  |     { | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     public void AddComponent<T>() where T : IComponent | ||
|  |     { | ||
|  |         var index = Util.GetCompnentIndex<T>(); | ||
|  |         var component = (T)CreateComponent(index, typeof(T)); | ||
|  |         AddComponent(index, component); | ||
|  |     } | ||
|  |     public void AddID(string cfgId, EntityCreateHandler callback) | ||
|  |     { | ||
|  |         var newId = UtilID.GetID(EIdType.Entity); | ||
|  |         AddID(newId, new CommonData()); | ||
|  |         iD.Data.IsCreate = true; | ||
|  |         iD.Data.IsDestroy = false; | ||
|  |         iD.Data.CfgId = cfgId; | ||
|  |         iD.Data.CreateCallback = callback; | ||
|  |     } | ||
|  |     public void AddMonsterView(string[] prefabNames) | ||
|  |     { | ||
|  |         var cfg = Util.GetConfig(CfgId()); | ||
|  |         var monsterCfg = (cfg as IObjectWithFeatureMonster).GetFeatureMonster(); | ||
|  |         AddView(prefabNames[(int)monsterCfg.MonsterSize]); | ||
|  |     } | ||
|  |     public void AddView(string prefabPath) | ||
|  |     { | ||
|  |         AddComponent<ViewComponent>(); | ||
|  |         var entityPoolItem = EntityPoolManager.Instance.CreateEntity(prefabPath); | ||
|  |         var go = entityPoolItem.GameObject; | ||
|  |         view.EntityPoolItem = entityPoolItem; | ||
|  |         view.GameObject = go; | ||
|  |         view.GameObjectLogic = go.transform.Find("logic").gameObject; | ||
|  |         view.TransformLogic = view.GameObjectLogic.transform; | ||
|  |         view.TransformView = go.transform.Find("view"); | ||
|  |         view.TransformViewRot = go.transform.Find("view/viewRot"); | ||
|  |         view.TransformViewOffset = go.transform.Find("view/viewRot/viewOffset"); | ||
|  |         view.TransformViewMain = go.transform.Find("view/viewRot/viewOffset/animator"); | ||
|  |         view.TransformViewOther = go.transform.Find("view/other"); | ||
|  |         var goInfo = go.GetComponent<EntityInfo>(); | ||
|  |         if (goInfo == null) | ||
|  |         { | ||
|  |             goInfo = go.AddComponent<EntityInfo>(); | ||
|  |         } | ||
|  |         goInfo.entityId = ID(); | ||
|  |         view.SpriteRenderer = view.TransformViewMain.GetComponent<SpriteRenderer>(); | ||
|  |         view.SpriteRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On; | ||
|  |         view.SpriteRenderer.receiveShadows = true; | ||
|  | 
 | ||
|  |         view.Material = view.SpriteRenderer.material; | ||
|  |         view.Collider = go.GetComponent<Collider>(); | ||
|  | 
 | ||
|  |     } | ||
|  |     public void AddMove() | ||
|  |     { | ||
|  |         AddComponent<MoveComponent>(); | ||
|  |         var go = view.GameObject; | ||
|  |         move.Transform = go.transform; | ||
|  |         move.TransformViewMain = view.TransformViewMain; | ||
|  |         move.Rigidbody = go.GetComponent<Rigidbody>(); | ||
|  |         move.MoveParam = new MoveParam(); | ||
|  |     } | ||
|  |     public void AddAnimation() | ||
|  |     { | ||
|  |         AddComponent<AnimationComponent>(); | ||
|  |         var go = view.GameObject; | ||
|  |         animation.Animator = go.GetComponentInChildren<Animator>(); | ||
|  |         animation.AnimatorOverrideController = new AnimatorOverrideController(animation.Animator.runtimeAnimatorController); | ||
|  |         animation.Animator.runtimeAnimatorController = animation.AnimatorOverrideController; | ||
|  |         animation.ResetMsg = true; | ||
|  |     } | ||
|  |     public void AddTimeline() | ||
|  |     { | ||
|  |         AddComponent<TimelineComponent>(); | ||
|  |         timeline.Timeline = new TimelineObject(); | ||
|  |     } | ||
|  |     public void AddSkill() | ||
|  |     { | ||
|  |         AddComponent<SkillComponent>(); | ||
|  |     } | ||
|  |     public void AddCombo() | ||
|  |     { | ||
|  |         AddComponent<ComboComponent>(); | ||
|  | 
 | ||
|  |         //test 必须先加武器再加技能 | ||
|  |         Util.SetWeaponListAll(this); | ||
|  |         Util.AddSkillAll(this); | ||
|  |     } | ||
|  |     public void AddHp() | ||
|  |     { | ||
|  |         AddComponent<HpComponent>(); | ||
|  |         hp.IsDamaged.Value = false; | ||
|  |     } | ||
|  |     public void AddPause() | ||
|  |     { | ||
|  |         AddComponent<PauseComponent>(); | ||
|  |     } | ||
|  |     public void AddInteract(EInteractType interactType) | ||
|  |     { | ||
|  |         AddComponent<InteractComponent>(); | ||
|  |         interact.InteractType = interactType; | ||
|  |     } | ||
|  |     public void AddBullet() | ||
|  |     { | ||
|  |         AddComponent<BulletComponent>(); | ||
|  |     } | ||
|  |     public void AddAI() | ||
|  |     { | ||
|  |         AddComponent<AIComponent>(); | ||
|  |         aI.Data = new BlueprintBasicData(); | ||
|  |         aI.ThinkCdMax = 1;//保底思考频率1秒 | ||
|  |         aI.HungryMax.Value = 1;//保底最大饥饿值1 | ||
|  |     } | ||
|  |     public void AddBuff() | ||
|  |     { | ||
|  |         AddComponent<BuffComponent>(); | ||
|  |     } | ||
|  |     public void AddMasterSoul() | ||
|  |     { | ||
|  |         AddComponent<MasterSoulComponent>(); | ||
|  |         masterSoul.Emitter = view.TransformViewMain.GetComponentInChildren<Fluid_Dynamics_Game_Emitter>(); | ||
|  |     } | ||
|  |     public void AddPoint() | ||
|  |     { | ||
|  |         AddComponent<PointComponent>(); | ||
|  |     } | ||
|  |     public void AddBag() | ||
|  |     { | ||
|  |         AddComponent<BagComponent>(); | ||
|  |     } | ||
|  |     public void AddProperty() | ||
|  |     { | ||
|  |         AddComponent<PropertyComponent>(); | ||
|  |         Util.ClearProperty(this); | ||
|  |     } | ||
|  | 
 | ||
|  | } |