コード例 #1
0
 public List <BattleObject> GetObjectList(BattleObjectType objType)
 {
     if (objListDict.ContainsKey(objType))
     {
         return(objListDict[objType]);
     }
     return(null);
 }
コード例 #2
0
    public void RemoveObject(BattleObject obj)
    {
        BattleObjectType    objType = obj.objectType;
        List <BattleObject> objList;

        if (objListDict.TryGetValue(objType, out objList))
        {
            objList.Remove(obj);
        }
    }
コード例 #3
0
    public void AddObject(BattleObject obj)
    {
        BattleObjectType    objType = obj.objectType;
        List <BattleObject> objList;

        if (!objListDict.TryGetValue(objType, out objList))
        {
            objList = new List <BattleObject>();
            objListDict.Add(objType, objList);
        }
        objList.Add(obj);
    }
コード例 #4
0
 private void UpdateObjects()
 {
     for (BattleObjectType t = BattleObjectType.Item; t >= BattleObjectType.Player; --t)
     {
         List <BattleObject> objList = GetObjectList(t);
         if (objList != null)
         {
             for (int i = objList.Count - 1; i >= 0; --i)
             {
                 objList[i].InternalUpdate();
             }
         }
     }
 }
コード例 #5
0
    private void CheckCollisionPair(BattleObjectType type1, BattleObjectType type2)
    {
        List <BattleObject> objList1, objList2;

        if (objListDict.TryGetValue(type1, out objList1) && objListDict.TryGetValue(type2, out objList2))
        {
            for (int i1 = objList1.Count - 1; i1 >= 0; --i1)
            {
                BattleObject obj1 = objList1[i1];
                for (int i2 = objList2.Count - 1; i2 >= 0; --i2)
                {
                    BattleObject obj2 = objList2[i2];
                    if (obj1.valid && obj2.valid && obj1.CheckCollision(obj2))
                    {
                        obj1.OnCollision(obj2);
                        obj2.OnCollision(obj1);
                    }
                }
            }
        }
    }