Exemplo n.º 1
0
    IEnumerator NewBehaviorRoutine()
    {
        player.DisableControls = true;

        // Ensure flag is in the ground and visible
        HideFlag();
        yield return(new WaitForEndOfFrame());

        // Disable the FOVs
        leftFovGO.SetActive(false);
        rightFovGO.SetActive(false);

        var index = RandomNumberGenerator.Instance.Next(behaviors.Count);

        if (isFirstBehavior)
        {
            index           = 0;
            isFirstBehavior = false;
        }

        // Become the next flag type
        activeBehavior = behaviors[index];
        behaviors.RemoveAt(index);
        activeBehavior.OnStart();

        flagCaptured           = false;
        player.DisableControls = false;

        HintSystemPanel.Instance.SetHint(activeBehavior.Hint);
    }
Exemplo n.º 2
0
 private void CmdDropFlag()
 {
     if (flag != null)
     {
         flag.RpcDropFlag();
         flag = null;
     }
 }
Exemplo n.º 3
0
    public static FlagBehavior Create(FlagBehavior.Type type, Flag _parent)
    {
        FlagBehavior behavior = null;

        switch (type)
        {
        case FlagBehavior.Type.Normal:
            behavior = new NormalFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsContinuously:
            behavior = new TeleportsContinuouslyFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWhileMouseNotOn:
            behavior = new TeleportsWhileMouseNotOnFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWhilePlayerIsLooking:
            behavior = new TeleportsWhilePlayerIsLookingFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.HidesWhilePlayerIsLooking:
            behavior = new HidesWhilePlayerIsLookingFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWhilePlayerIsInLeftFieldOfVision:
            behavior = new TeleportsWhilePlayerIsInLeftFieldOfVisionFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWhilePlayerIsInRightFieldOfVision:
            behavior = new TeleportsWhilePlayerIsInRightFieldOfVisionFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWhileIsWrongColor:
            behavior = new TeleportsWhileIsWrongColorFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWaitUntilRightColor:
            behavior = new TeleportsWaitUntilRightColorFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWhileFlagIsDown:
            behavior = new TeleportsWhileFlagIsDownFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWhileFlagIsFlipped:
            behavior = new TeleportsWhileFlagIsFlippedFlagBehavior(_parent);
            break;

        case FlagBehavior.Type.TeleportsWhilePlayerIsNotLooking:
            behavior = new TeleportsWhilePlayerIsNotLookingFlagBehavior(_parent);
            break;
        }

        return(behavior);
    }
Exemplo n.º 4
0
    public void SetupStart()
    {
        hammerState = HammerSteps.IDLE;
        jump        = false;

        rigid  = GetComponent <Rigidbody2D>();
        sprite = GetComponent <SpriteRenderer>();
        UpdateSpawnPosition();

        if (isLocalPlayer)
        {
            Camera.main.GetComponent <CameraBehavior>().player = gameObject;
            GameManager._instance.localPlayer = this;
        }

        flag = null;

        OnChangeName(playerName);
        OnChangeTeam(playerTeam);
        OnChangeSkin(playerSkin);
    }
 public void SetData(Color team, FlagBehavior flag)
 {
     Team = team;
     Flag = flag;
     renderer.material.SetColor("_TeamCol", Team);
 }
Exemplo n.º 6
0
    void OtherCollision(int index)
    {
        GameObject other = ColManager.Others[index];

        if (other.tag == "Powerup")
        {
            OwnerStats.PowerupsCollected += 1;
        }

        else if (other.tag == "Flag")
        {
            FlagBehavior flB = other.GetComponent <FlagBehavior>();

            //If the flag is being carried, don't do anything.
            if (flB.Carrying != null)
            {
                return;
            }
            //If the flag is from the same team, it might have been returned.
            if (flB.Team == ActorData.Team)
            {
                if (!flB.AtHome && Manager.MatchRules.CTF.TouchFlagToReturn)
                {
                    OwnerStats.FlagsReturned += 1;
                }
                return;
            }
            //If this actor is already carrying, don't do anything.
            if (OwnerStats.CarryingFlag)
            {
                return;
            }
            //If this actor can't pick up flags, don't do anything.
            if (!Manager.MatchRules.EnemiesArePeopleToo && !IsPlayer)
            {
                return;
            }
            //If this actor is hurt, don't do anything.
            if (CurrentState is HurtState)
            {
                return;
            }

            tookFlag = true;
        }

        else if (other.tag == "Waypoint")
        {
            //Don't bother doing anything on the player side.
        }

        else if (other.tag == "FlagBase")
        {
            //If the player isn't carrying a flag, stop.
            if (!OwnerStats.CarryingFlag)
            {
                return;
            }

            FlagBaseBehavior flBB = other.GetComponent <FlagBaseBehavior>();

            //If it's not this actor's base, then ignore it.
            if (!flBB.Team.Equals(ActorData.Team))
            {
                return;
            }

            //If this actor's flag isn't at home and it has to be at home to score, ignore the base.
            FlagBehavior beh = Manager.FlagsByTeam[ActorData.Team].GetComponent <FlagBehavior>();
            if (Manager.MatchRules.CTF.FlagAtHomeToScore && !beh.AtHome)
            {
                return;
            }

            //Update the stats.
            OwnerStats.FlagsCaptured += 1;
            OwnerStats.CarryingFlag   = false;
        }
    }