public void Clone(WorldState otherState) { Reset(); for (WorldStatePropKey i = 0; i < WorldStatePropKey.MAX; i++) { if (otherState.GetPropBitSet().Get((int)i) == true) { SetWSProperty(otherState.GetWSProperty(i)); } } }
public void ResetWSProperty(WorldStatePropKey key) { //Debug.Log("Reset WS property " + key.ToString()); int i = (int)key; if (_propState[i] != null) { WorldStatePropFactory.Collect(_propState[i]); _propState[i] = null; _propBitSet.Set(i, false); } }
public void SetWSProperty(WorldStatePropKey key, OrderType value) { int index = (int)key; if (_propState[index] != null) { WorldStatePropFactory.Collect(_propState[index]); } _propState[index] = WorldStatePropFactory.Get(key, value); _propBitSet.Set(index, true); }
public override string ToString() { string s = "World state : "; for (WorldStatePropKey i = WorldStatePropKey.ORDER; i < WorldStatePropKey.MAX; i++) { if (IsWSPropertySet(i)) { s += " " + GetWSProperty(i).ToString(); } } return(s); }
static public WorldStateProp Get(WorldStatePropKey key, UnityEngine.Vector3 vector) { WorldStateProp p = null; if (m_UnusedProps.Count > 0) { p = m_UnusedProps.Dequeue(); p.PropValue = new ValueVector(vector); p.PropType = WorldStatePropValueType.VECTOR; } else { p = new WorldStateProp(vector); } p.Time = UnityEngine.Time.timeSinceLevelLoad; p.PropKey = key; return(p); }
static public WorldStateProp Get(WorldStatePropKey key, bool state) { WorldStateProp p = null; if (m_UnusedProps.Count > 0) { p = m_UnusedProps.Dequeue(); p.PropValue = new ValueBool(state); p.PropType = WorldStatePropValueType.BOOL; } else { p = new WorldStateProp(state); } p.Time = UnityEngine.Time.timeSinceLevelLoad; p.PropKey = key; return(p); }
static public WorldStateProp Get(WorldStatePropKey key, float state) { WorldStateProp p; if (m_UnusedProps.Count > 0) { p = m_UnusedProps.Dequeue(); p.PropKey = key; p.PropValue = new ValueFloat(state); } else { p = new WorldStateProp(state); } p.Time = UnityEngine.Time.timeSinceLevelLoad; p.PropType = WorldStatePropValueType.FLOAT; return(p); }
static public WorldStateProp Get(WorldStatePropKey key, OrderType orderType) { WorldStateProp p = null; if (m_UnusedProps.Count > 0) { p = m_UnusedProps.Dequeue(); p.PropValue = new ValueOrder(orderType); p.PropType = WorldStatePropValueType.EVENT; } else { p = new WorldStateProp(orderType); } p.Time = UnityEngine.Time.timeSinceLevelLoad; p.PropKey = key; return(p); }
public int GetDiffCount(WorldState otherState) { int count = 0; for (WorldStatePropKey i = 0; i < WorldStatePropKey.MAX; ++i) { if (otherState.IsWSPropertySet(i) && IsWSPropertySet(i)) { if (GetWSProperty((WorldStatePropKey)i) != otherState.GetWSProperty((WorldStatePropKey)i)) { ++count; } } else if (otherState.IsWSPropertySet(i) || IsWSPropertySet(i)) { ++count; } } return(count); }
// 以己方为参照,获得对方不满足己方的属性数量 public int GetUnsatisfiedCount(WorldState otherState) { int count = 0; for (WorldStatePropKey i = 0; i < WorldStatePropKey.MAX; ++i) { if (IsWSPropertySet(i) == false) { continue; } if (otherState.IsWSPropertySet(i) == false) { ++count; } if (GetWSProperty(i) != otherState.GetWSProperty(i)) { ++count; } } return(count); }
public bool IsWSPropertySet(WorldStatePropKey key) { return(_propBitSet.Get((int)key)); }
public WorldStateProp GetWSProperty(WorldStatePropKey key) { return(_propState[(int)key]); }