Esempio n. 1
0
    public static void EnsurePrefabIsPlayerRootCompatible(string name)
    {
        byte num;

        NetMainPrefab.EnsurePrefabName(name);
        if (!playerRootCompatibilityCache.TryGetValue(name, out num))
        {
            ControllablePrefab prefab = NetMainPrefab.Lookup <ControllablePrefab>(name);
            if (prefab == null)
            {
                num = 0;
            }
            else if (!prefab.playerRootComapatable)
            {
                num = 2;
            }
            else
            {
                num = 1;
            }
            playerRootCompatibilityCache[name] = num;
        }
        switch (num)
        {
        case 0:
            throw new NonControllableException(name);

        case 2:
            throw new NonPlayerRootControllableException(name);
        }
    }
Esempio n. 2
0
    public static void EnsurePrefabIsPlayerRootCompatible(string name)
    {
        byte num;

        NetMainPrefab.EnsurePrefabName(name);
        if (!ControllablePrefab.playerRootCompatibilityCache.TryGetValue(name, out num))
        {
            ControllablePrefab controllablePrefab = NetMainPrefab.Lookup <ControllablePrefab>(name);
            if (controllablePrefab)
            {
                num = (byte)((controllablePrefab.playerRootComapatable ? 1 : 2));
            }
            else
            {
                num = 0;
            }
            ControllablePrefab.playerRootCompatibilityCache[name] = num;
        }
        if (num == 0)
        {
            throw new NonControllableException(name);
        }
        if (num == 2)
        {
            throw new NonPlayerRootControllableException(name);
        }
    }
Esempio n. 3
0
    public static void EnsurePrefabIsAIRootCompatible(string name, out bool staticGroup)
    {
        sbyte num;

        NetMainPrefab.EnsurePrefabName(name);
        if (!ControllablePrefab.aiRootCompatibilityCache.TryGetValue(name, out num))
        {
            ControllablePrefab controllablePrefab = NetMainPrefab.Lookup <ControllablePrefab>(name);
            if (!controllablePrefab)
            {
                num = 0;
            }
            else if (controllablePrefab.aiRootComapatable)
            {
                num = (!((Character)controllablePrefab.serverPrefab).controllable.classFlagsStaticGroup ? 1 : -1);
            }
            else
            {
                num = 2;
            }
            ControllablePrefab.aiRootCompatibilityCache[name] = num;
        }
        switch (num)
        {
        case -1:
        {
            staticGroup = true;
            break;
        }

        case 0:
        {
            throw new NonControllableException(name);
        }

        case 1:
        {
            staticGroup = false;
            break;
        }

        case 2:
        {
            throw new NonAIRootControllableException(name);
        }

        default:
        {
            throw new NonControllableException(name);
        }
        }
    }
Esempio n. 4
0
 public static void EnsurePrefabIsVessel(string name, Controllable forControllable, out ControllablePrefab.VesselInfo vi)
 {
     ControllablePrefab.EnsurePrefabIsVessel(name, out vi);
     if (forControllable && forControllable.controlled)
     {
         if (forControllable.aiControlled)
         {
             if (!vi.supportsAI)
             {
                 throw new NonAIVesselControllableException(name);
             }
         }
         else if (forControllable.playerControlled && !vi.supportsPlayer)
         {
             throw new NonPlayerVesselControllableException(name);
         }
     }
 }
Esempio n. 5
0
    public static void EnsurePrefabIsVessel(string name, out ControllablePrefab.VesselInfo vi)
    {
        byte vesselCompatibility = ControllablePrefab.GetVesselCompatibility(name);

        if ((vesselCompatibility & 1) != 1)
        {
            if ((vesselCompatibility & 64) != 64)
            {
                throw new NonControllableException(name);
            }
            throw new NonVesselControllableException(name);
        }
        if ((vesselCompatibility & 24) == 0)
        {
            throw new NonControllableException("The vessel has not been marked for either ai and/or player control. not bothering to spawn it.");
        }
        vi = new ControllablePrefab.VesselInfo(vesselCompatibility);
    }
Esempio n. 6
0
    private static byte GetVesselCompatibility(string name)
    {
        byte vesselCompatibility;

        NetMainPrefab.EnsurePrefabName(name);
        if (!vesselCompatibilityCache.TryGetValue(name, out vesselCompatibility))
        {
            ControllablePrefab prefab = NetMainPrefab.Lookup <ControllablePrefab>(name);
            if (prefab == null)
            {
                vesselCompatibility = 0;
            }
            else
            {
                vesselCompatibility = prefab.vesselCompatibility;
            }
            vesselCompatibilityCache[name] = vesselCompatibility;
        }
        return(vesselCompatibility);
    }
Esempio n. 7
0
    private static byte GetVesselCompatibility(string name)
    {
        byte num;

        NetMainPrefab.EnsurePrefabName(name);
        if (ControllablePrefab.vesselCompatibilityCache.TryGetValue(name, out num))
        {
            return(num);
        }
        ControllablePrefab controllablePrefab = NetMainPrefab.Lookup <ControllablePrefab>(name);

        if (controllablePrefab)
        {
            num = controllablePrefab.vesselCompatibility;
        }
        else
        {
            num = 0;
        }
        ControllablePrefab.vesselCompatibilityCache[name] = num;
        return(num);
    }
Esempio n. 8
0
    public static void EnsurePrefabIsAIRootCompatible(string name, out bool staticGroup)
    {
        sbyte num;

        NetMainPrefab.EnsurePrefabName(name);
        if (!aiRootCompatibilityCache.TryGetValue(name, out num))
        {
            ControllablePrefab prefab = NetMainPrefab.Lookup <ControllablePrefab>(name);
            if (prefab == null)
            {
                num = 0;
            }
            else if (!prefab.aiRootComapatable)
            {
                num = 2;
            }
            else
            {
                num = !((Character)prefab.serverPrefab).controllable.classFlagsStaticGroup ? ((sbyte)1) : ((sbyte)(-1));
            }
            aiRootCompatibilityCache[name] = num;
        }
        sbyte num2 = num;

        switch ((num2 + 1))
        {
        case 0:
            staticGroup = true;
            return;

        case 2:
            staticGroup = false;
            return;

        case 3:
            throw new NonAIRootControllableException(name);
        }
        throw new NonControllableException(name);
    }
Esempio n. 9
0
 public static void EnsurePrefabIsVessel(string name, Controllable forControllable, out ControllablePrefab.VesselInfo vi)
 {
     ControllablePrefab.EnsurePrefabIsVessel(name, out vi);
     if (forControllable && forControllable.controlled)
     {
         if (forControllable.aiControlled)
         {
             if (!vi.supportsAI)
             {
                 throw new NonAIVesselControllableException(name);
             }
         }
         else if (forControllable.playerControlled && !vi.supportsPlayer)
         {
             throw new NonPlayerVesselControllableException(name);
         }
     }
 }
Esempio n. 10
0
 public static void EnsurePrefabIsVessel(string name, out ControllablePrefab.VesselInfo vi)
 {
     byte vesselCompatibility = ControllablePrefab.GetVesselCompatibility(name);
     if ((vesselCompatibility & 1) != 1)
     {
         if ((vesselCompatibility & 64) != 64)
         {
             throw new NonControllableException(name);
         }
         throw new NonVesselControllableException(name);
     }
     if ((vesselCompatibility & 24) == 0)
     {
         throw new NonControllableException("The vessel has not been marked for either ai and/or player control. not bothering to spawn it.");
     }
     vi = new ControllablePrefab.VesselInfo(vesselCompatibility);
 }