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); }
private void CmdDropFlag() { if (flag != null) { flag.RpcDropFlag(); flag = null; } }
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); }
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); }
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; } }