public static EntityBase ParseInteractiveObject(string[] inputs) { EntityBase entity = null; InteractiveObjectType interactiveType = InteractiveObjectType.NONE; string entityType = inputs[0]; // BUSH, from wood1 it can also be SPAWN int x = int.Parse(inputs[1]); int y = int.Parse(inputs[2]); int radius = int.Parse(inputs[3]); if (Enum.TryParse(entityType, out interactiveType)) { switch (interactiveType) { case InteractiveObjectType.BUSH: entity = new Bush(x, y, radius); break; case InteractiveObjectType.SPAWN: entity = new Spawn(x, y); break; } } return(entity); }
public void Init() { this.PuzzleEventsManager = GameObject.FindObjectOfType<PuzzleEventsManager>(); var puzzleCOnfigurationmanager = GameObject.FindObjectOfType<PuzzleGameConfigurationManager>(); var NPCAIManagerContainer = GameObject.FindObjectOfType<NPCAIManagerContainer>(); NPCAIManagerContainer.OnNPCAiManagerCreated(this); var interactiveObjectContainer = GameObject.FindObjectOfType<InteractiveObjectContainer>(); var playerManagerDataRetriever = GameObject.FindObjectOfType<PlayerManagerDataRetriever>(); var coreConfigurationManager = GameObject.FindObjectOfType<CoreConfigurationManager>(); var aiPositionsManager = GameObject.FindObjectOfType<AIPositionsManager>(); var animationConfiguration = coreConfigurationManager.AnimationConfiguration(); var rigidBody = GetComponent<Rigidbody>(); var animator = GetComponentInChildren<Animator>(); this.objectCollider = GetComponent<Collider>(); this.interactiveObjectSharedData = GetComponent<InteractiveObjectSharedDataType>(); this.NPCAIDestinationContext = new NPCAIDestinationContext(); agent = GetComponent<NavMeshAgent>(); agent.updatePosition = false; agent.updateRotation = false; var aiBehaviorInherentData = puzzleCOnfigurationmanager.AIComponentsConfiguration()[AiID]; var PuzzleEventsManager = GameObject.FindObjectOfType<PuzzleEventsManager>(); NpcFOVRingManager = new NpcInteractionRingManager(this); AIDestinationMoveManager = new NPCAIDestinationMoveManager(interactiveObjectSharedData.InteractiveObjectSharedDataTypeInherentData.TransformMoveManagerComponent, agent, this.SendOnDestinationReachedEvent); NPCSpeedAdjusterManager = new NPCSpeedAdjusterManager(agent); this.puzzleAIBehavior = this.GetComponent<GenericPuzzleAIBehavior>(); var aIBheaviorBuildInputData = new AIBheaviorBuildInputData(agent, aiBehaviorInherentData.AIComponents, OnFOVChange, PuzzleEventsManager, playerManagerDataRetriever, interactiveObjectContainer, this.AiID, this.objectCollider, this.ForceTickAI, aiPositionsManager); ((GenericPuzzleAIBehavior)this.puzzleAIBehavior).Init(agent, (GenericPuzzleAIComponents)aIBheaviorBuildInputData.aIComponents, aIBheaviorBuildInputData.OnFOVChange, aIBheaviorBuildInputData.ForceUpdateAIBehavior, aIBheaviorBuildInputData.PuzzleEventsManager, aIBheaviorBuildInputData.InteractiveObjectContainer, aIBheaviorBuildInputData.aiID, aIBheaviorBuildInputData.aiCollider, aIBheaviorBuildInputData.PlayerManagerDataRetriever, interactiveObjectSharedData.InteractiveObjectSharedDataTypeInherentData.TransformMoveManagerComponent, aIBheaviorBuildInputData.AIPositionsManager); ContextMarkVisualFeedbackManager = new ContextMarkVisualFeedbackManager(this, NpcFOVRingManager, puzzleCOnfigurationmanager); AnimationVisualFeedbackManager = new AnimationVisualFeedbackManager(animator, animationConfiguration); LineVisualFeedbackManager = new LineVisualFeedbackManager(this); NPCAIAnimationManager = new NPCAIAnimationManager(animator, animationConfiguration); this.GetComponent<InRangeColliderTracker>().IfNotNull((InRangeColliderTracker) => InRangeColliderTracker.Init()); //Sight listeners this.GetComponent<InteractiveObjectType>().IfNotNull((InteractiveObjectType) => InteractiveObjectType.GetEnabledOrDisabledModule<ObjectSightModule>().IfNotNull((ObjectSightModule) => ObjectSightModule.RegisterSightTrackingListener(this))); //Intiialize with 0 time this.TickWhenTimeFlows(0, 0); }