Inheritance: MonoBehaviour
        public void PickupFlag(FlagController flagController)
        {
            flag = flagController;

            flagController.gameObject.transform.SetParent(transform);
            flagController.gameObject.transform.localPosition = Vector3.zero;
        }
 public void ScoreFlag()
 {
     // Deparent before resetting position
     flag.gameObject.transform.SetParent(null);
     flag.Reset();
     flag = null;
 }
Example #3
0
        public Room(List <Door> doors, GameObject container, Vector2Int gridPosition, bool bossRoom)
        {
            Doors                   = doors;
            RealPosition            = container.transform.position;
            GridPosition            = gridPosition;
            roomGameObject          = container;
            ConnectedRoomDictionary = new Dictionary <string, Room>(4);
            HasDoor                 = new Dictionary <string, bool>(4);
            _controller             = GameObject.FindWithTag("Manager").GetComponent <FlagController>();
            enemies                 = new List <GameObject>();
            boss = new List <GameObject>();

            //Ugly manual setting for each type of entrance
            ConnectedRoomDictionary[_controller.DoorUp.name] = null;
            HasDoor[_controller.DoorUp.name] = false;
            ConnectedRoomDictionary[_controller.DoorDown.name] = null;
            HasDoor[_controller.DoorDown.name] = false;
            ConnectedRoomDictionary[_controller.DoorLeft.name] = null;
            HasDoor[_controller.DoorLeft.name] = false;
            ConnectedRoomDictionary[_controller.DoorRight.name] = null;
            HasDoor[_controller.DoorRight.name] = false;

            foreach (var door in doors)
            {
                HasDoor[door.type.name] = true;
            }

            this.bossRoom = bossRoom;
        }
Example #4
0
            internal override void OnEventPlayerDeath(EventManager.BaseEventPlayer victim, EventManager.BaseEventPlayer attacker = null, HitInfo info = null)
            {
                if (victim == null)
                {
                    return;
                }

                if ((victim as CaptureTheFlagPlayer).IsCarryingFlag)
                {
                    FlagController flagController = victim.Team == EventManager.Team.B ? TeamAFlag : TeamBFlag;
                    if (flagController.FlagHolder == victim)
                    {
                        flagController.DropFlag(true);
                        BroadcastToPlayers(GetMessage, "Notification.FlagDropped", victim.Player.displayName, flagController.Team, GetTeamColor(victim.Team), GetTeamColor(flagController.Team));
                    }
                }

                victim.OnPlayerDeath(attacker, Configuration.RespawnTime);

                if (attacker != null && victim != attacker && victim.Team != attacker.Team)
                {
                    attacker.OnKilledPlayer(info);
                }

                UpdateScoreboard();
                base.OnEventPlayerDeath(victim, attacker);
            }
Example #5
0
 public void Initialize()
 {
     roomGrid        = LevelGenerator.RoomGrid;
     gridHeightWidth = gameObject.GetComponent <LevelGenerator>().gridWidthHeight;
     _controller     = GameObject.FindWithTag("Manager").GetComponent <FlagController>();
     _levelManager   = LevelManager.Instance;
 }
Example #6
0
            internal override void InitializeEvent(IEventPlugin plugin, EventManager.EventConfig config)
            {
                flagRespawnTime = config.GetParameter <int>("flagRespawnTimer");

                base.InitializeEvent(plugin, config);

                TeamAFlag = FlagController.Create(this, EventManager.Team.A, _spawnSelectorA.ReserveSpawnPoint(0));
                TeamBFlag = FlagController.Create(this, EventManager.Team.B, _spawnSelectorB.ReserveSpawnPoint(0));
            }
Example #7
0
            internal static FlagController Create(CaptureTheFlagEvent captureTheFlagEvent, EventManager.Team team, Vector3 position)
            {
                Signage        signage        = Spawn(position);
                FlagController flagController = signage.gameObject.AddComponent <FlagController>();

                flagController.captureTheFlagEvent = captureTheFlagEvent;
                flagController.Team         = team;
                flagController.basePosition = position;

                return(flagController);
            }
    void Awake()
    {
        if (GetComponent <FlagController>() != null)
        {
            flagController = GetComponent <FlagController>();
        }
        if (GetComponent <PuzzleController>() != null)
        {
            puzzleController = GetComponent <PuzzleController>();
        }

        StartButtonUI.GetComponent <Button>().onClick.AddListener(PushStartButton);
    }
Example #9
0
    private void Awake()
    {
        if (Instance != null)
        {
            Destroy(gameObject);
        }
        else
        {
            Instance = this;
        }

        _flags = new Dictionary <string, bool>();
    }
 public void Init(FlagController flagController)
 {
     allSRs = gameObject.FindComponents <SpriteRenderer>(true);
     //Register delegates for updating artifact sprites
     for (int i = 0; i < flagController.pedestalList.Count; i++)
     {
         Pedestal       pdstl = flagController.pedestalList[i];
         SpriteRenderer slot  = artifactSlots[i];
         pdstl.onArtifactChanged +=
             (artifact) => UpdateArtifactSlot(slot, artifact);
         UpdateArtifactSlot(slot, null);// pdstl.Artifact);
     }
     //Register delegate for showing/hiding
     gameObject.FindComponent <MapMarker>().onShow +=
         (show) => allSRs.ForEach(sr => sr.enabled  = show);
 }
Example #11
0
    private void Start()
    {
        I = this;

        Messages         = new GameEventDispatcher();
        SystemController = new SystemController();
        EntityManager    = new EntityController();
        EntitySpawner    = new EntitySpawner();
        MapController.Init();
        UserInputController.Init();
        GameUI.Init();

        flagController = new FlagController();

        EntitySpawner.StartGame();
    }
Example #12
0
 private void Awake()
 {
     lock (padlock)
     {
         if (_instance != null && _instance != this)
         {
             Destroy(this.gameObject);
         }
         else
         {
             _instance = this;
             //Here any additional initialization should occur:
         }
     }
     //DontDestroyOnLoad(this.gameObject);
 }
Example #13
0
            private void OnTriggerEnter(Collider col)
            {
                if (captureTheFlagEvent.Status != EventManager.EventStatus.Started)
                {
                    return;
                }

                CaptureTheFlagPlayer eventPlayer = col.GetComponent <CaptureTheFlagPlayer>();

                if (eventPlayer == null || eventPlayer.IsDead)
                {
                    return;
                }

                if (IsAtBase)
                {
                    if (eventPlayer.Team != Team)
                    {
                        PickupFlag(eventPlayer);
                    }
                    else
                    {
                        if (eventPlayer.IsCarryingFlag)
                        {
                            FlagController enemyFlag = Team == EventManager.Team.A ? captureTheFlagEvent.TeamBFlag : captureTheFlagEvent.TeamAFlag;
                            enemyFlag.CaptureFlag(eventPlayer);
                        }
                    }
                }
                else
                {
                    if (FlagHolder == null)
                    {
                        if (eventPlayer.Team != Team)
                        {
                            PickupFlag(eventPlayer);
                        }
                        else
                        {
                            ResetFlag();
                            captureTheFlagEvent.BroadcastToPlayers(GetMessage, "Notification.FlagReset", eventPlayer.Team, captureTheFlagEvent.GetTeamColor(eventPlayer.Team));
                        }
                    }
                }
            }
Example #14
0
    private void SpawnFlag()
    {
        if (_flag != null && _grassList.Count != 0)
        {
            int instantiateFlagRightSide = Random.Range(_grassList.Count / 2, _grassList.Count - 1);
            colliderGrass = _grassList[instantiateFlagRightSide].GetComponent <Collider2D>();

            colliderGrass.isTrigger = true;
            flagInstantiate         = Instantiate(_flag, _grassList[instantiateFlagRightSide]);

            FlagController flagController = flagInstantiate.transform.GetComponentInChildren <FlagController>();

            if (flagController != null)
            {
                flagController.SetGameManager(GetComponent <GameManager>());
            }
        }
    }
Example #15
0
    public void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("Coin"))
        {
            catchCoin(other.gameObject);
        }
        else if (other.gameObject.CompareTag("RedFlag"))
        {
            spawnPoint.position = other.gameObject.transform.position;
            FlagController flagController = other.gameObject.GetComponent <FlagController>();

            if (flagController != null)
            {
                flagController.check();
            }
        }
        else if (other.gameObject.CompareTag("RedDiamond"))
        {
            catchRedDiamond(other.gameObject);
        }
        else if (other.gameObject.CompareTag("BossPhase"))
        {
            enterBossPhase(other.gameObject);
        }
        else if (other.gameObject.CompareTag("Enemy"))
        {
            print("OnCollisionEnter2D Enemy");

            if (_rigidbody.velocity.y < 0f)
            {
                EnemyController enemyController = other.gameObject.GetComponent <EnemyController>();
                if (enemyController != null)
                {
                    enemyController.damage();
                }
            }
        }
    }
Example #16
0
    private void StartFlag()
    {
        //disable guessing while flaground
        UpdateGuessingStatus(false);
        //Debug.Log("StartFlag called");

        //Bättre att ha statiska som lyses upp i en sequence än att skapa o döda
        GameObject flag = Instantiate(flagPrefab);
        //flag.GetComponent<FlagController>().lastFlagPos = lastFlagPos;
        //nrFlagsShown++;

        //give the flagcontroller the flagorganizerts "id", so we can update FO from FC
        FlagController flagController = flag.GetComponentInChildren <FlagController>();

        flagController.flagOrganizer = this;

        //Tell the flagcontroller how many flags to show this round
        flag.GetComponent <FlagController>().maxNrFlagsToShow = maxNrFlagsToShowThisRound;

        gameManager.UpDateRoundNrDisplay(maxNrFlagsToShowThisRound);

        maxNrFlagsToShowThisRound++;
    }
Example #17
0
    // Start is called before the first frame update
    void Start()
    {
        _controller      = GetComponent <FlagController>();
        _spawnController = GetComponent <SpawnController>();

        //Grid init
        RoomGrid = new Room[gridWidthHeight, gridWidthHeight];

        roomsToGen = roomGenNumber;

        startingGridPostion = new Vector2Int(gridWidthHeight / 2, gridWidthHeight / 2);
        Debug.Log("Starting grid location " + startingGridPostion.ToString());

        deltaVectors    = _controller.deltaVectors;
        directionsDelta = _controller.directionsDelta;

        //Create main room on grid
        var homeRoom = SetupMainRoom();

        var playerGameObject = GameObject.FindWithTag("Player");

        if (playerGameObject == null)
        {
            playerGameObject = _spawnController.SpawnPlayerInRoomCenter(homeRoom);
        }
        else
        {
            SpawnController.MoveObjectToRoomCenter(playerGameObject, homeRoom);
        }

        //We get the modifier that we have to multiply delta movement by because of how Tiler scales things
        modifier = _gridGameObject.GetComponent <Grid>().cellSize;

        //Loading all the saved room prefabs
        var _roomGameObjects = LoadGameObjectRooms();

        GameObjectRoomsByExits = SortGameObjectRoomsBySize(_roomGameObjects);

        var actionList = new[]
        {
            new Action(() =>
            {
                GenerateRoomsNew(startingGridPostion.x + deltaVectors[0].x,
                                 startingGridPostion.y + deltaVectors[0].y, directionsDelta[0], homeRoom, branchMaxLength);
            }),
            new Action(() =>
            {
                GenerateRoomsNew(startingGridPostion.x + deltaVectors[1].x,
                                 startingGridPostion.y + deltaVectors[1].y, directionsDelta[1], homeRoom, branchMaxLength);
            }),
            new Action(() =>
            {
                GenerateRoomsNew(startingGridPostion.x + deltaVectors[2].x,
                                 startingGridPostion.y + deltaVectors[2].y, directionsDelta[2], homeRoom, branchMaxLength);
            }),
            new Action(() =>
            {
                GenerateRoomsNew(startingGridPostion.x + deltaVectors[3].x,
                                 startingGridPostion.y + deltaVectors[3].y, directionsDelta[3], homeRoom, branchMaxLength);
            })
        }.ToList();

        Shuffle(actionList);
        for (int i = 0; i < actionList.Count; i++)
        {
            var action = actionList[i];
            action();
        }

        PatchLeftovers();

        /**
         * //Pretty print
         * int rowLength = RoomGrid.GetLength(0);
         * int colLength = RoomGrid.GetLength(1);
         * string arrayString = "";
         * for (int i = 0; i < rowLength; i++)
         * {
         *  for (int j = 0; j < colLength; j++)
         *  {
         *      arrayString += string.Format("{0} ", RoomGrid[i, j] == null ? "None" : RoomGrid[i,j].roomGameObject.name);
         *      arrayString += "     ";
         *  }
         *  arrayString += Environment.NewLine + Environment.NewLine;
         * }
         **/

        AddNavMeshModifierToWalls();
        AddNavMeshModifierToPillars();
        AddTagToEveryRoomWall();
        AddTagToEveryRoomPillar();
        BakeNavMesh();

        gameObject.GetComponent <SpawnController>().Initialize();
        gameObject.GetComponent <SpawnController>().SpawnForAllRooms();

        if (!gameObject.GetComponent <SpawnController>().bossSpawned)
        {
            var spawnController = gameObject.GetComponent <SpawnController>();

            foreach (var room in spawnController.roomGrid)
            {
                if (room != null)
                {
                    spawnController.ForceSpawnBoss(room.GridPosition);
                    Debug.LogWarning("Force spawned");
                    break;
                }
            }
        }

        gameObject.GetComponent <LocationController>()
        .Initialize(startingGridPostion, RoomGrid, playerGameObject, gameObject.GetComponent <SpawnController>());

        gameObject.GetComponent <KillQuestController>().Init();

        RemoveFlagRendering();


        _roomGameObjects.ForEach(room => Destroy(room));
        Debug.Assert(madeBossRoom);
    }
Example #18
0
 public void setFlagController(FlagController control)
 {
     ctrFlag = control;
 }
Example #19
0
        public static FlagController Fixture()
        {
            FlagController controller = new FlagController(new FlagRepository(), "", new LoginView());

            return(controller);
        }
 public void DropFlag()
 {
     flag.gameObject.transform.SetParent(null);
     flag = null;
 }
Example #21
0
 private void Awake()
 {
     Instance = this;
 }
Example #22
0
 void Start()
 {
     fc = transform.parent.gameObject.GetComponent <FlagController>();
 }
Example #23
0
    void resetGame()
    {
        Debug.Log("resetGame");

        // Clear game area
        if (CurrentGameMap != null)
        {
            Destroy(CurrentGameMap.gameObject);
        }
        players.Clear();

        // Pick a random map
        CurrentGameMap = Instantiate(GameMaps[Random.Range(0, GameMaps.Length)]);

        List <Color> colors = new List <Color> {
            Color.red, Color.blue, Color.green, Color.yellow
        };
        List <string> colorNames = new List <string> {
            "Red", "Blue", "Green", "Yellow"
        };

        for (int i = 0; i < NUM_PLAYERS; i++)
        {
            Vector3 pos = CurrentGameMap.GetSpawnPosition(GenMinSceneryDistance, GenMinDistance, GenMaxDistance, CurrentGameMap.CannonPlacementMap);
            // TODO implement dynamic cannon height (0 - 0.39)
            pos.y -= 0.39f;
            float      dir    = Random.Range(0, 360);
            GameObject cannon = (GameObject)Instantiate(CannonPrefab, pos, Quaternion.Euler(0, dir, 0));
            cannon.transform.parent = CurrentGameMap.WorldContainer.transform;

            Player player = new Player();
            player.Id     = i;
            player.Cannon = cannon;

            int colorIndex = Random.Range(0, colors.Count);
            player.Color     = colors[colorIndex];
            player.ColorName = colorNames[colorIndex];

            FlagController flag = cannon.GetComponentInChildren <FlagController>();
            flag.gameObject.GetComponent <MeshRenderer>().material.color = player.Color;

            CannonController cannonController = cannon.GetComponentInChildren <CannonController>();
            cannonController.OnCannonFired     = delegate { cannonController.FiringEnabled = false; };
            cannonController.OnCannonExploded  = delegate { OnCannonDestroyed(player.Cannon); };
            cannonController.OnMissileExploded = delegate { StartCoroutine(changeTurnDelayed()); };
            cannonController.Player            = player;

            colors.RemoveAt(colorIndex);
            colorNames.RemoveAt(colorIndex);

            player.CurrentTeleportIndex = 0;
            players.Add(player);

            Debug.Log("created player [" + player.Id + ", " + player.ColorName + "] cannon at " + player.Cannon.transform.position.ToString("f4") + ", rot: " + player.Cannon.transform.eulerAngles.ToString("f4"));
        }

        // Generate waypoints for players
        foreach (Player p in players)
        {
            // Cannon location
            Teleport.TeleportLocation t = new Teleport.TeleportLocation();
            t.Position = p.Cannon.transform.position;
            // TODO account for dynamic height once such is implemented
            t.Position.y += 0.39f;
            p.TeleportLocations.Add(t);

            // Bird view locations, one per opponent
            foreach (Player p2 in players)
            {
                if (p != p2)
                {
                    t = new Teleport.TeleportLocation();
                    Vector3 p2p = p2.Cannon.transform.position - p.Cannon.transform.position;

                    Vector3 perp = Vector3.Cross(p2p, new Vector3(0, 1, 0)).normalized;

                    t.Position   = p.Cannon.transform.position + p2p * 0.5f + perp * (p2p.magnitude / 2);
                    t.Position.y = CurrentGameMap.Terrain.SampleHeight(new Vector3(t.Position.x, 0, t.Position.z)) + 80;

                    Vector3 toCannon = p.Cannon.transform.position - t.Position;
                    toCannon.y = 0;
                    toCannon.Normalize();

                    t.Rotation      = Quaternion.LookRotation(toCannon);
                    t.ForceRotation = true;

                    p.TeleportLocations.Add(t);
                }
            }
        }

        // Spawn scenery objects
        CurrentGameMap.SpawnSceneryObjects();

        gameOver = false;
        changeTurn();
    }
Example #24
0
 public static FlagController Fixture()
 {
     FlagController controller = new FlagController(new FlagRepository());
     return controller;
 }
Example #25
0
    private List <List <float> > _ParseMap(IEnumerator <string> se)
    {
        InGameCommon gameController = InGameCommon.CurrentGame;
        Teams        teams          = gameController.GetComponent <Teams>();

        // game mode
        //   0 - capture the flag
        int gameMode = int.Parse(_Take(se));
        // number of teams - n
        int numTeams = int.Parse(_Take(se));

        // n team colors
        {
            List <Color> colors = new List <Color>(numTeams);
            for (int i = 0; i < numTeams; ++i)
            {
                Color color = new Color();
                color.r = float.Parse(_Take(se));
                color.g = float.Parse(_Take(se));
                color.b = float.Parse(_Take(se));
                color.a = 1.0f;
                colors.Add(color);
            }
            teams.Colors = colors;
        }
        // n team spawn spefications
        {
            List <InGameCommon.SpawnList> spawns = new List <InGameCommon.SpawnList>(numTeams);
            for (int i = 0; i < numTeams; ++i)
            {
                int numSpawns = int.Parse(_Take(se));
                InGameCommon.SpawnList teamSpawns = new InGameCommon.SpawnList {
                    Spawns = new List <SpawnPoint>(numSpawns)
                };
                for (int j = 0; j < numSpawns; ++j)
                {
                    float      x     = float.Parse(_Take(se)) * PrismScale;
                    float      y     = float.Parse(_Take(se)) * PrismScale;
                    GameObject spawn = Instantiate(
                        PlayerSpawnPrefab, new Vector3(x, 0.0f, y), Quaternion.identity
                        );
                    teamSpawns.Spawns.Add(spawn.GetComponent <SpawnPoint>());
                }
                spawns.Add(teamSpawns);
            }
            gameController.TeamSpawns = spawns;
        }
        if (gameMode == 0)
        {
            FlagController flagController = gameController.GetComponent <FlagController>();
            // flag zones
            for (int i = 0; i < numTeams; ++i)
            {
                int numFlagZones = int.Parse(_Take(se));
                for (int j = 0; j < numFlagZones; ++j)
                {
                    float     x      = float.Parse(_Take(se)) * PrismScale;
                    float     y      = float.Parse(_Take(se)) * PrismScale;
                    float     radius = float.Parse(_Take(se));
                    Transform t      =
                        Instantiate(FlagZonePrefab, new Vector3(x, 0.0f, y), Quaternion.identity).transform;
                    t.localScale = new Vector3(radius, 100.0f, radius);
                    t.GetComponent <FlagZone>().Team = i;
                }
            }
            // flag spawns
            int numFlagSpawns = int.Parse(_Take(se));
            {
                List <SpawnPoint> spawns = new List <SpawnPoint>(numFlagSpawns);
                for (int i = 0; i < numFlagSpawns; ++i)
                {
                    float      x     = float.Parse(_Take(se)) * PrismScale;
                    float      y     = float.Parse(_Take(se)) * PrismScale;
                    GameObject spawn = Instantiate(
                        FlagSpawnPrefab, new Vector3(x, 0.0f, y), Quaternion.identity
                        );
                    spawns.Add(spawn.GetComponent <SpawnPoint>());
                }
                flagController.Spawns = spawns;
            }
        }
        // map properties
        NumPrismsX = int.Parse(_Take(se));
        NumPrismsZ = int.Parse(_Take(se));
        MinHeight  = float.Parse(_Take(se));
        MaxHeight  = float.Parse(_Take(se));
        // initial tile heights
        List <List <float> > heights = new List <List <float> >(NumPrismsZ);

        for (int z = 0; z < NumPrismsZ; ++z)
        {
            List <float> row = new List <float>(NumPrismsX);
            for (int x = 0; x < NumPrismsX; ++x)
            {
                row.Add(float.Parse(_Take(se)));
            }
            heights.Add(row);
        }
        return(heights);
    }