Inheritance: MonoBehaviour
    public TutorialManager(CharacterType type, NpcSpawnData spawnData = null, string nickname = "")
    {
        parasitesStillAlive = 0;
        characterSpawner    = type == CharacterType.Parasite ? new CharacterSpawner(Restart) : new CharacterSpawner();
        characterType       = type;
        localName           = nickname;
        SpawnPlayer();
        UiManager.Instance.SetCharacterType(type);
        UiManager.Instance.DeactivateControls();
        triggerZones = GameObject.FindObjectsOfType <TriggerZone>();
        infoScreens  = GameObject.FindObjectsOfType <InfoScreen>();
        detector     = GameObject.FindObjectOfType <NPCInfectionDetector>();

        if (spawnData != null)
        {
            npcManager = new NpcManager(spawnData);
            detector.ScanForNPCs();
        }
        if (type == CharacterType.Parasite)
        {
            // Spawn static orbs
            GameObject orbManagerPrefab = Resources.Load("OrbManager") as GameObject;
            orbManager = GameObject.Instantiate(orbManagerPrefab).GetComponent <OrbManager>();
            new ParasiteTutorialWinCondition();
        }
        else
        {
            new HunterTutorialNpcWinCondition();
        }
        InstantiatePauseOverlay();
        SetPauseOverlayActive(false);
    }
Esempio n. 2
0
        void ParseForServerMode()
        {
            if (string.IsNullOrEmpty(GetArg("-server")))
            {
                return;
            }

            GameObject serverGo = Instantiate(ServerPrefab);

            serverGo.name         = "Server";
            server                = serverGo.GetComponent <NetworkServer>();
            server.MaxConnections = 9999;
            server.SocketFactory  = socketFactory;
            serverObjectManager   = serverGo.GetComponent <ServerObjectManager>();

            NetworkSceneManager networkSceneManager = serverGo.GetComponent <NetworkSceneManager>();

            networkSceneManager.Server = server;

            serverObjectManager.Server = server;
            serverObjectManager.NetworkSceneManager = networkSceneManager;
            serverObjectManager.Start();

            CharacterSpawner spawner = serverGo.GetComponent <CharacterSpawner>();

            spawner.ServerObjectManager = serverObjectManager;
            spawner.Server = server;

            server.Started.AddListener(OnServerStarted);
            server.Authenticated.AddListener(conn => serverObjectManager.SpawnVisibleObjects(conn, true));
            server.StartServer();
            Console.WriteLine("Starting Server Only Mode");
        }
Esempio n. 3
0
        void ParseForServerMode()
        {
            if (!string.IsNullOrEmpty(GetArg("-server")))
            {
                var serverGo = new GameObject($"Server", typeof(NetworkServer), typeof(ServerObjectManager), typeof(NetworkSceneManager), typeof(CharacterSpawner));

                server = serverGo.GetComponent <NetworkServer>();
                server.MaxConnections = 9999;
                server.Transport      = transport;
                serverObjectManager   = serverGo.GetComponent <ServerObjectManager>();

                NetworkSceneManager networkSceneManager = serverGo.GetComponent <NetworkSceneManager>();
                networkSceneManager.Server = server;

                serverObjectManager.Server = server;
                serverObjectManager.NetworkSceneManager = networkSceneManager;
                serverObjectManager.Start();

                CharacterSpawner spawner = serverGo.GetComponent <CharacterSpawner>();
                spawner.PlayerPrefab        = PlayerPrefab.GetComponent <NetworkIdentity>();
                spawner.ServerObjectManager = serverObjectManager;
                spawner.Server = server;

                server.Started.AddListener(OnServerStarted);
                server.Authenticated.AddListener(conn => serverObjectManager.SetClientReady(conn));
                _ = server.ListenAsync();
                Console.WriteLine("Starting Server Only Mode");
            }
        }
Esempio n. 4
0
        public void Setup()
        {
            go                         = new GameObject();
            client                     = go.AddComponent <NetworkClient>();
            server                     = go.AddComponent <NetworkServer>();
            spawner                    = go.AddComponent <CharacterSpawner>();
            sceneManager               = go.AddComponent <NetworkSceneManager>();
            serverObjectManager        = go.AddComponent <ServerObjectManager>();
            clientObjectManager        = go.AddComponent <ClientObjectManager>();
            spawner.SceneManager       = sceneManager;
            sceneManager.Client        = client;
            sceneManager.Server        = server;
            serverObjectManager.Server = server;
            clientObjectManager.Client = client;
            clientObjectManager.NetworkSceneManager = sceneManager;
            spawner.Client = client;
            spawner.Server = server;
            spawner.ServerObjectManager = serverObjectManager;
            spawner.ClientObjectManager = clientObjectManager;

            playerPrefab = new GameObject();
            NetworkIdentity playerId = playerPrefab.AddComponent <NetworkIdentity>();

            spawner.PlayerPrefab = playerId;

            pos1 = new GameObject().transform;
            pos2 = new GameObject().transform;
            spawner.startPositions.Add(pos1);
            spawner.startPositions.Add(pos2);
        }
    // Use this for initialization
    void Start()
    {
        characterSpawner = GetComponent <CharacterSpawner>();

        cssm.Add(CharacterSpawnerStates.ON, new Action(OnState));
        cssm.Add(CharacterSpawnerStates.OFF, new Action(OffState));
    }
Esempio n. 6
0
    /* Main Functions */

    void Start()
    {
        UnityEngine.Random.InitState((int)(System.DateTime.Now.Ticks));

        triggers      = gameObject.GetComponent <AITriggerManager>(); // must be initialized first
        movement      = gameObject.GetComponent <AIMovementManager>();
        inventory     = gameObject.GetComponent <AIInventoryManager>();
        weaponManager = gameObject.GetComponent <AIWeaponManager>();

        BuildingSpawner buildingSpawner = GameObject.Find("BuildingSpawner").GetComponent <BuildingSpawner>();

        buildingsGLOBAL = buildingSpawner.buildingLocations;
        placesToLoot    = new List <GameObject>(buildingsGLOBAL);

        CharacterSpawner charSpawner = GameObject.Find("CharacterSpawner").GetComponent <CharacterSpawner>();

        threatsGLOBAL = charSpawner.threats;
        //threats = new List<AIThreat>(threatsGLOBAL);

        status           = gameObject.AddComponent <Status>();
        status.health    = 100;
        status.maxHealth = 100;
        status.armor     = 0;
        status.maxArmor  = 100;

        lootLevel = 0;

        skill      = (int)(UnityEngine.Random.value * 8 + 2);
        aggression = (int)(UnityEngine.Random.value * 9 + 1);

        positionOptions = new List <GameObject>();

        StartCoroutine(AILoop());
    }
    void SpawnPlayableCharacters()
    {
        CharacterType type;
        Character     character;
        InputSource   inputSource;

        characterSpawners = new CharacterSpawner[spawnData.playableCharacterSpawnPoints.Length];
        for (int i = 0; i < spawnData.playableCharacterSpawnPoints.Length; i++)
        {
            NpcSpawnData.playableCharacterSpawnPoint spawnPoint = spawnData.playableCharacterSpawnPoints[i];
            if (spawnPoint.isParasite)
            {
                type = CharacterType.Parasite;
                characterSpawners[i] = new CharacterSpawner(TutorialManager.OnParasiteKilled);
                inputSource          = new EmptyInputSource();
            }
            else
            {
                type = CharacterType.Hunter;
                characterSpawners[i] = new CharacterSpawner();
                inputSource          = new HunterAiInputSource();
            }
            character = characterSpawners[i].SpawnPlayerCharacter(type, spawnPoint.coordinates, Vector2.zero, false, false, inputSource);
            // Don't draw hunter UI
            if (!spawnPoint.isParasite)
            {
                ((Hunter)character).isNpcControlled = true;
            }
        }
    }
Esempio n. 8
0
 void ListenCharacterDestroyed(CharacterSpawner _spawner, Character _character)
 {
     if (postDestroy != null)
     {
         postDestroy(_spawner, _character);
     }
 }
 public void Restart(CharacterSpawner spawner)
 {
     // Respawn player
     spawner.DestroyCharacter();
     SpawnPlayer();
     UiManager.Instance.RemoveHud();
     UiManager.Instance.SetCharacterType(characterType);
     UiManager.Instance.DeactivateControls();
     foreach (TriggerZone zone in triggerZones)
     {
         zone.Reset();
     }
     foreach (InfoScreen screen in infoScreens)
     {
         screen.Reset();
     }
     // Respawn NPCs
     npcManager.Restart();
     if (characterType == CharacterType.Parasite)
     {
         // NPC Infection Detector is only used in Parasite tutorial
         //  and will log an error if it's Reset in the Hunter tutorial
         detector.Reset();
     }
 }
Esempio n. 10
0
        void StartClient(int i, string networkAddress)
        {
            GameObject clientGo = Instantiate(ClientPrefab);

            clientGo.name = $"Client {i}";
            NetworkClient       client              = clientGo.GetComponent <NetworkClient>();
            ClientObjectManager objectManager       = clientGo.GetComponent <ClientObjectManager>();
            CharacterSpawner    spawner             = clientGo.GetComponent <CharacterSpawner>();
            NetworkSceneManager networkSceneManager = clientGo.GetComponent <NetworkSceneManager>();

            networkSceneManager.Client = client;

            objectManager.Client = client;
            objectManager.NetworkSceneManager = networkSceneManager;
            objectManager.Start();
            objectManager.RegisterPrefab(MonsterPrefab.GetComponent <NetworkIdentity>());
            objectManager.RegisterPrefab(PlayerPrefab.GetComponent <NetworkIdentity>());

            spawner.Client              = client;
            spawner.PlayerPrefab        = PlayerPrefab.GetComponent <NetworkIdentity>();
            spawner.ClientObjectManager = objectManager;
            spawner.SceneManager        = networkSceneManager;

            client.SocketFactory = socketFactory;

            try
            {
                client.Connect(networkAddress);
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
        }
Esempio n. 11
0
        async UniTask StartClient(int i, string networkAddress)
        {
            var                 clientGo            = new GameObject($"Client {i}", typeof(NetworkClient), typeof(ClientObjectManager), typeof(CharacterSpawner), typeof(NetworkSceneManager));
            NetworkClient       client              = clientGo.GetComponent <NetworkClient>();
            ClientObjectManager objectManager       = clientGo.GetComponent <ClientObjectManager>();
            CharacterSpawner    spawner             = clientGo.GetComponent <CharacterSpawner>();
            NetworkSceneManager networkSceneManager = clientGo.GetComponent <NetworkSceneManager>();

            networkSceneManager.Client = client;

            objectManager.Client = client;
            objectManager.NetworkSceneManager = networkSceneManager;
            objectManager.Start();
            objectManager.RegisterPrefab(MonsterPrefab.GetComponent <NetworkIdentity>());
            objectManager.RegisterPrefab(PlayerPrefab.GetComponent <NetworkIdentity>());

            spawner.Client              = client;
            spawner.PlayerPrefab        = PlayerPrefab.GetComponent <NetworkIdentity>();
            spawner.ClientObjectManager = objectManager;
            spawner.SceneManager        = networkSceneManager;

            client.Transport = transport;

            try
            {
                await client.ConnectAsync(networkAddress);
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
        }
Esempio n. 12
0
 void ListenSpawn(CharacterSpawner _spawner, Character _character)
 {
     if (postSpawn != null)
     {
         postSpawn(_spawner, _character);
     }
 }
 void Start()
 {
     //removes (Clone) that Unity gives to the gameObject's name
     transform.name = transform.name.Replace("(Clone)", "").Trim();
     this.gameObject.SetActive(true);
     test             = GameObject.Find("ground");
     characterSpawner = test.GetComponent <CharacterSpawner>();
 }
 // CLEANUP: this and its associated variables should probably be extracted
 //  to a separate class
 public static void OnParasiteKilled(CharacterSpawner spawner)
 {
     spawner.DestroyCharacter();
     if (parasitesStillAlive == 0)
     {
         UiManager.Instance.SetReturnToMenuPanelActive(true);
     }
 }
Esempio n. 15
0
 public CameraManager(
     Camera camera,
     CinemachineVirtualCamera cinemachineCamera,
     CharacterSpawner characterSpawner)
 {
     _camera            = camera;
     _cinemachineCamera = cinemachineCamera;
     _characterSpawner  = characterSpawner;
 }
 void Start()
 {
     _spawner          = FindObjectOfType <CharacterSpawner> ();
     _meatSystem       = FindObjectOfType <MeatSystem> ();
     _settings         = FindObjectOfType <Settings> ();
     _meat             = baseCharacter.meat;
     _cooldownPurchase = baseCharacter.cooldownPurchase;
     _nameText.text    = baseCharacter.name;
     _meatText.text    = _meat.ToString();
     _button.onClick.AddListener(() => OnClick());
 }
 public ParasiteData(CharacterSpawner owner, DeathHandler deathHandler = null)
 {
     this.owner = owner;
     if (deathHandler == null)
     {
         deathHandler = DefaultDeathHandler;
     }
     this.deathHandler = deathHandler;
     hasHandledDeath   = false;
     isVamparasite     = false;
     ParasiteHealth    = STARTING_HEALTH;
 }
 public NetworkedCharacterSpawner(
     GenericMessageWithResponseClient messageWithResponse,
     GlobalHostPlayerManager globalHostPlayerManager,
     CharacterSpawner characterSpawner,
     NetworkRelay networkRelay,
     UnityClient client
     )
 {
     _globalHostPlayerManager = globalHostPlayerManager;
     _messageWithResponse     = messageWithResponse;
     _characterSpawner        = characterSpawner;
     _networkRelay            = networkRelay;
     _client = client;
 }
Esempio n. 19
0
 void InfectNpc(NonPlayerCharacter npc)
 {
     // Let the npc know it will be controlled by this player from now on
     npc.photonView.RequestOwnership();
     // Store spawner for eventual transfer back to parasite
     CharacterSpawner.SetCharacter(npc);
     npc.SetName(characterName, false);
     // Set isInfected to true/update sprite on new authority's client
     npc.Infect(input);
     // Update client's camera and render settings to reflect new character
     npc.SetCameraFollow(false);
     npc.SetRenderLayer();
     UiManager.Instance.ActivateControls(CharacterType.NPC);
     UiManager.Instance.minimap.SetTarget(npc.transform);
     npc.gameObject.AddComponent <AudioListener>();
 }
Esempio n. 20
0
    private void Awake()
    {
        if (instance == null)
        {
            instance       = this;
            characterDatas = new List <GOAP_Character.CharacterData>();

            characterDatas.Add(example1);
            characterDatas.Add(example2);

            SceneManager.sceneLoaded += OnSceneLoaded;
            DontDestroyOnLoad(this.gameObject);
        }
        else
        {
            Destroy(gameObject);
        }
    }
Esempio n. 21
0
 private void Awake()
 {
     cSpawner = FindObjectOfType <CharacterSpawner>();
     rbBody   = transform.Find("Body").GetComponent <Rigidbody2D>();
     rbHead   = rbBody.transform.Find("Head").GetComponent <Rigidbody2D>();
     child1   = rbBody.transform.Find("Arm_R").GetChild(3).GetComponent <Rigidbody2D>();
     child2   = rbBody.transform.Find("Arm_L").GetChild(3).GetComponent <Rigidbody2D>();
     enemies  = FindObjectsOfType <PlayerConroller>().Except(this.Yield()).ToList();
     foreach (Transform ch in rbBody.transform)
     {
         var lr = ch.GetComponent <LineRenderer>();
         if (lr != null)
         {
             lines.Add(lr);
         }
     }
     crashForce = rbBody.GetComponent <CrashForce>();
 }
    public void OnEvent(EventData photonEvent)
    {
        switch (photonEvent.Code)
        {
        case EventCodes.StartGame:
            if (characterSpawner != null)
            {
                characterSpawner.DestroyCharacter();
            }
            break;

        case EventCodes.AssignPlayerTypeAndSpawnPoint:
            // Deconstruct event
            int actorNumber = (int)EventCodes.GetEventContentAtPosition(photonEvent, 0);
            if (actorNumber == PhotonNetwork.LocalPlayer.ActorNumber)
            {
                CharacterType assignedCharacterType = (CharacterType)EventCodes.GetEventContentAtPosition(photonEvent, 1);
                Vector3       spawnPoint            = (Vector2)EventCodes.GetEventContentAtPosition(photonEvent, 2);
                characterSpawner = new CharacterSpawner();
                // Spawn Character of type `assignedCharacterType` across clients
                Character character = characterSpawner.SpawnPlayerCharacter(
                    assignedCharacterType,
                    spawnPoint,
                    Vector2.zero,
                    true,
                    true,
                    null,
                    false,
                    PhotonNetwork.LocalPlayer.NickName);
                character.gameObject.AddComponent <AudioListener>();
                UiManager.Instance.minimap.SetTarget(character.transform);
                UiManager.Instance.minimap.Activate();
            }
            break;

        case EventCodes.Mutation:
            if (characterSpawner != null)
            {
                // CharacterSpawner may be null if we're currently in a tutorial
                characterSpawner.OnMutation();
            }
            break;
        }
    }
Esempio n. 23
0
        public override void ExtraSetup()
        {
            bundle = AssetBundle.LoadFromFile("Assets/Tests/Runtime/TestScene/testscene");

            spawner = networkManagerGo.AddComponent <CharacterSpawner>();

            spawner.Client              = client;
            spawner.Server              = server;
            spawner.SceneManager        = sceneManager;
            spawner.ClientObjectManager = clientObjectManager;
            spawner.ServerObjectManager = serverObjectManager;

            player = new GameObject();
            NetworkIdentity identity = player.AddComponent <NetworkIdentity>();

            spawner.PlayerPrefab = identity;

            spawner.AutoSpawn = false;
        }
Esempio n. 24
0
        public override void ExtraSetup()
        {
            // call base for SceneManager Setup
            base.ExtraSetup();

            // disable so awake isn't called till setup finished
            networkManagerGo.SetActive(false);
            spawner = networkManagerGo.AddComponent <CharacterSpawner>();

            spawner.Client              = client;
            spawner.Server              = server;
            spawner.SceneManager        = sceneManager;
            spawner.ClientObjectManager = clientObjectManager;
            spawner.ServerObjectManager = serverObjectManager;

            spawner.PlayerPrefab = CreateNetworkIdentity();

            spawner.AutoSpawn = false;
            networkManagerGo.SetActive(true);
        }
Esempio n. 25
0
    void SpawnParasite()
    {
        Character newParasite = CharacterSpawner.SpawnPlayerCharacter(CharacterType.Parasite,
                                                                      transform.position,
                                                                      new Vector2(0, PARASITE_LAUNCH_VELOCITY),
                                                                      false, // Force Camera Snap
                                                                      false, // Should Camera Follow
                                                                      input,
                                                                      true,  // Preserve Parasite Health
                                                                      characterName
                                                                      );

        if (input.ShouldCameraFollowOwner())
        {
            // Only show parasite controls if this client is playing as this parasite
            UiManager.Instance.ActivateControls(CharacterType.Parasite);
            UiManager.Instance.minimap.SetTarget(newParasite.transform);
            newParasite.gameObject.AddComponent <AudioListener>();
        }
    }
Esempio n. 26
0
    private void SplitIntoTwo(string spriteName)
    {
        Debug.Log(spriteName);
        Sprite[] temp = null;
        temp = CharacterSpawner.GetSprSides(spriteName);
        if (temp != null)
        {
            Debug.Log(temp[0].name);
            Debug.Log(temp[1].name);
        }
        else
        {
            Debug.Log("Didnot get sprite splits");
        }
        GameObject partOne = GameObjectUtility.customInstantiate(prefabPartOne, transform.position + new Vector3(0.8f, 0f, 0f));

        partOne.GetComponent <SpriteRenderer> ().sprite = temp [0];
        GameObject partTwo = GameObjectUtility.customInstantiate(prefabPartTwo, transform.position + new Vector3(-0.8f, 0f, 0f));

        partTwo.GetComponent <SpriteRenderer> ().sprite = temp [1];
    }
Esempio n. 27
0
    private void Start()
    {
        winobj   = GameObject.Find("Player_Win_Canvas");
        winImage = GameObject.Find("PWIN").GetComponent <Image>();
        winobj.SetActive(false);
        mid      = FindObjectOfType <CharacterSpawner>().transform;
        cam      = GetComponent <Camera>();
        cSpawner = FindObjectOfType <CharacterSpawner>();
        var playercontrollers = FindObjectsOfType <PlayerConroller>();
        var rbBodies          = playercontrollers.Select(x => x.rbBody.transform);

        targets.AddRange(rbBodies);
        cSpawner.OnTargetRevived -= OnTargetRevived;
        cSpawner.OnDeath         -= OnTargetDie;
        cSpawner.OnTargetRevived += OnTargetRevived;
        cSpawner.OnDeath         += OnTargetDie;

        var   dist    = GetGreatestDistance();
        float newZoom = Mathf.Lerp(maxZoom, minZoom, dist / zoomLimiter);

        cam.fieldOfView = newZoom;
    }
 public void End()
 {
     characterSpawner.DestroyCharacter();
     characterSpawner = null;
     npcManager.DespawnNPCs();
     npcManager = null;
     GameObject.Destroy(pauseOverlay);
     // OrbManager is used in the parasite tutorial to manage the static
     //  orbs that are part of the level
     if (orbManager != null)
     {
         orbManager.DestroyOrbs();
         orbManager = null;
     }
     foreach (TriggerZone zone in triggerZones)
     {
         zone.Reset();
     }
     foreach (InfoScreen screen in infoScreens)
     {
         screen.Reset();
     }
 }
Esempio n. 29
0
 public LivingCharactersRegistry(CharacterSpawner characterSpawner)
 {
     _characterSpawner = characterSpawner;
 }
 static void ListenCharacterSpawned(CharacterSpawner _spawner, Character _character)
 {
     Game.Character.Add(_character);
 }
 static void ListenCharacterDestroyed(CharacterSpawner _spawner, Character _character)
 {
     // Game.Character.characters.Remove(_character.id);
 }
 void ListenSpawn(CharacterSpawner _spawner, Character _character)
 {
     if (postSpawn != null) postSpawn(_spawner, _character);
 }
 void ListenDestroy(CharacterSpawner _spawner, Character _character)
 {
     if (postDestroy != null) postDestroy(_spawner, _character);
 }
 static void ListenCharacterDestroyed(CharacterSpawner _spawner, Character _character)
 {
     // Game.Character.characters.Remove(_character.id);
 }