本文整理汇总了C#中IState.DoEnter方法的典型用法代码示例。如果您正苦于以下问题:C# IState.DoEnter方法的具体用法?C# IState.DoEnter怎么用?C# IState.DoEnter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IState
的用法示例。
在下文中一共展示了IState.DoEnter方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TryEnterState
public bool TryEnterState(ELifeState newStateID, bool force,object param = null)
{
if (null != m_CurrentState && m_CurrentState.GetState() == newStateID)
{
//do nothing
return true;
}
IState newState = StateFactory(newStateID);
if (null == newState)
{
return false;
}
if (null == m_CurrentState)
{
if (!newState.CanEnter())
{
return false;
}
//reset state
m_CurrentState = newState;
m_CurrentState.DoEnter(param);
return true;
}
if (!force )
{
List<StateConflictConfigElement> stateClash = null;
/*if (m_CurrentCharStateConflictMap.StateConflictMap.TryGetValue((int)(m_CurrentState.GetState()), out stateClash))
{
foreach (StateConflictConfigElement s in stateClash)
{
//与当前状态冲突
if (s.StateId == (int)newStateID)
{
if (s.IsConflict)
{
Debuger.LogWarning(string.Format("current state:{0} can't enter new state:{1}",
m_CurrentState.GetState(), newStateID));
return false;
}
else
{
break;
}
}
}
}*/
if (!m_CurrentState.CanExit())
{
return false;
}
if (!newState.CanEnter())
{
return false;
}
}
m_CurrentState.DoExit();
//reset state
m_CurrentState = newState;
m_CurrentState.DoEnter(param);
return true;
}