public void Reset() { DelayTimer = 0; AlmostOwner = FlagOwner = AreaOwner = E_Team.None; AnimState = E_AnimationState.None; m_ClientFlagProgress = -1; FlagOwner = StartBase; ClientSetFlag(FlagOwner); if (StartBase == E_Team.None) { Progress = 0; SetFlagProgress(); } else { Progress = 1; SetFlagProgress(); } m_ForceSerialize = true; // Debug.Log(name + " Reset - " + FlagOwner); //Debug.Log( " ###### Reset() on " + this + " : " + Progress + " " + FlagOwner + " " + " " + AreaOwner + " " + " " + AlmostOwner ); }
void ServerUpdate() { if (DelayTimer > Time.timeSinceLevelLoad) { return; } E_Team oldAreaOwner = AreaOwner; E_Team oldAlmostOwner = AlmostOwner; E_Team oldFlagOwner = FlagOwner; AreaOwner = ServerGetAreaOwner(); if (AreaOwner == E_Team.None || (AreaOwner == FlagOwner && Progress == 1.0f)) { AnimState = E_AnimationState.None; } else if (AreaOwner == AlmostOwner && Progress != 1) { AnimState = E_AnimationState.Up; } else if (AreaOwner != E_Team.None && AlmostOwner == E_Team.None && FlagOwner == E_Team.None) { AnimState = E_AnimationState.Up; } else { AnimState = E_AnimationState.Down; } float oldProgress = Progress; if (AnimState == E_AnimationState.Down) { ServerGoDown(); } else if (AnimState == E_AnimationState.Up) { ServerGoUp(); } // serializing code is not called ever frame. In case of some change // we should deliver this change to clients if (false == m_IsChanging) { if (m_ForceSerialize) { m_IsChanging = true; m_ForceSerialize = false; } else { m_IsChanging = oldProgress != Progress || oldFlagOwner != FlagOwner || oldAlmostOwner != AlmostOwner || oldAreaOwner != AreaOwner; } } }