Ejemplo n.º 1
0
        public OBJfFunctionEntry[] GenerateFunctionTable(OBJD obj)
        {
            OBJfFunctionEntry[] result = new OBJfFunctionEntry[33];

            result[0].ActionFunction = obj.BHAV_Init;
            result[1].ActionFunction = obj.BHAV_MainID;
            result[2].ActionFunction = obj.BHAV_Load;
            result[3].ActionFunction = obj.BHAV_Cleanup;
            result[4].ActionFunction = obj.BHAV_QueueSkipped;
            result[5].ActionFunction = obj.BHAV_AllowIntersectionID;
            result[6].ActionFunction = obj.BHAV_WallAdjacencyChanged;
            result[7].ActionFunction = obj.BHAV_RoomChange;
            result[8].ActionFunction = obj.BHAV_DynamicMultiTileUpdate;
            result[9].ActionFunction = obj.BHAV_Place;
            result[10].ActionFunction = obj.BHAV_PickupID;
            result[11].ActionFunction = obj.BHAV_UserPlace;
            result[12].ActionFunction = obj.BHAV_UserPickup;
            result[13].ActionFunction = obj.BHAV_LevelInfo;
            result[14].ActionFunction = obj.BHAV_ServingSurface;
            result[15].ActionFunction = obj.BHAV_Portal; //portal
            result[16].ActionFunction = obj.BHAV_GardeningID;
            result[17].ActionFunction = obj.BHAV_WashHandsID;
            result[18].ActionFunction = obj.BHAV_PrepareFoodID;
            result[19].ActionFunction = obj.BHAV_CookFoodID;
            result[20].ActionFunction = obj.BHAV_PlaceSurfaceID;
            result[21].ActionFunction = obj.BHAV_DisposeID;
            result[22].ActionFunction = obj.BHAV_EatID;
            result[23].ActionFunction = 0; //pickup from slot
            result[24].ActionFunction = obj.BHAV_WashDishID;
            result[25].ActionFunction = obj.BHAV_EatSurfaceID;
            result[26].ActionFunction = obj.BHAV_SitID;
            result[27].ActionFunction = obj.BHAV_StandID;
            result[28].ActionFunction = obj.BHAV_Clean;
            result[29].ActionFunction = 0; //repair
            result[30].ActionFunction = 0; //client house join
            result[31].ActionFunction = 0; //prepare for sale
            result[32].ActionFunction = 0; //house unload

            return result;
        }
Ejemplo n.º 2
0
 //hilariously large switch case. there's got to be a better way
 public static short GetEntityDefinitionVar(OBJD objd, VMOBJDVariable var, VMStackFrame context)
 {
     switch (var)
     {
         case VMOBJDVariable.Version1:
             return (short)(objd.Version%0xFFFF);
         case VMOBJDVariable.Version2:
             return (short)(objd.Version>>16);
         case VMOBJDVariable.InitialStackSize:
             return (short)objd.StackSize;
         case VMOBJDVariable.BaseGraphic:
             return (short)objd.BaseGraphicID;
         case VMOBJDVariable.NumGraphics:
             return (short)objd.NumGraphics;
         case VMOBJDVariable.MainTreeID:
             return (short)objd.BHAV_MainID; // should this use OBJf functions?
         case VMOBJDVariable.GardeningTreeID:
             return (short)objd.BHAV_GardeningID;
         case VMOBJDVariable.TreeTableID:
             return (short)objd.TreeTableID;
         case VMOBJDVariable.IntersectionGroup:
             return (short)objd.InteractionGroupID;
         case VMOBJDVariable.Type:
             return (short)objd.ObjectType;
         case VMOBJDVariable.MasterID:
             return (short)objd.MasterID;
         case VMOBJDVariable.SubIndex:
             return (short)objd.SubIndex;
         case VMOBJDVariable.WashHandsTreeID:
             return (short)objd.BHAV_WashHandsID;
         case VMOBJDVariable.AnimTableID:
             return (short)objd.AnimationTableID;
         case VMOBJDVariable.GUID1:
             return (short)(objd.GUID % 0xFFFF);
         case VMOBJDVariable.GUID2:
             return (short)(objd.GUID >> 16);
         case VMOBJDVariable.Disabled:
             return (short)objd.Disabled;
         case VMOBJDVariable.PortalTreeID:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.Price:
             return (short)objd.Price;
         case VMOBJDVariable.BodyStringsID:
             return (short)objd.BodyStringID;
         case VMOBJDVariable.SlotsID:
             return (short)objd.SlotID;
         case VMOBJDVariable.AllowIntersectionTreeID:
             return (short)objd.BHAV_AllowIntersectionID;
         case VMOBJDVariable.UsesFnTable:
             return (short)objd.UsesFnTable;
         case VMOBJDVariable.Bitfield1:
             return (short)objd.BitField1;
         case VMOBJDVariable.PrepareFoodTreeID:
             return (short)objd.BHAV_PrepareFoodID;
         case VMOBJDVariable.CookFoodTreeID:
             return (short)objd.BHAV_CookFoodID;
         case VMOBJDVariable.PlaceOnSurfaceTreeID:
             return (short)objd.BHAV_PlaceSurfaceID;
         case VMOBJDVariable.DisposeTreeID:
             return (short)objd.BHAV_DisposeID;
         case VMOBJDVariable.EatFoodTreeID:
             return (short)objd.BHAV_EatID;
         case VMOBJDVariable.PickupFromSlotTreeID:
             return (short)objd.BHAV_PickupID; //uh
         case VMOBJDVariable.WashDishTreeID:
             return (short)objd.BHAV_WashDishID;
         case VMOBJDVariable.EatingSurfaceTreeID:
             return (short)objd.BHAV_EatSurfaceID;
         case VMOBJDVariable.SitTreeID:
             return (short)objd.BHAV_SitID;
         case VMOBJDVariable.StandTreeID:
             return (short)objd.BHAV_StandID;
         case VMOBJDVariable.SalePrice:
             return (short)objd.SalePrice;
         case VMOBJDVariable.Unused35:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.Unused36:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.BrokenBaseGraphicOffset:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.Unused38:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.HasCriticalAttributes:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.BuyModeType:
             return (short)objd.FunctionFlags;
         case VMOBJDVariable.CatalogStringsID:
             return (short)objd.CatalogStringsID;
         case VMOBJDVariable.IsGlobalSimObject:
             return (short)objd.Global;
         case VMOBJDVariable.InitTreeID:
             return (short)objd.BHAV_Init;
         case VMOBJDVariable.PlaceTreeID:
             return (short)objd.BHAV_Place;
         case VMOBJDVariable.UserPickupTreeID:
             return (short)objd.BHAV_UserPickup;
         case VMOBJDVariable.WallStyle:
             return (short)objd.WallStyle;
         case VMOBJDVariable.LoadTreeID:
             return (short)objd.BHAV_Load;
         case VMOBJDVariable.UserPlaceTreeID:
             return (short)objd.BHAV_UserPlace;
         case VMOBJDVariable.ObjectVersion:
             return (short)objd.ObjectVersion;
         case VMOBJDVariable.RoomChangedTreeID:
             return (short)objd.BHAV_RoomChange;
         case VMOBJDVariable.MotiveEffectsID:
             return (short)objd.MotiveEffectsID;
         case VMOBJDVariable.CleanupTreeID:
             return (short)objd.BHAV_Cleanup;
         case VMOBJDVariable.LevelInfoRequestTreeID:
             return (short)objd.BHAV_LevelInfo;
         case VMOBJDVariable.CatalogPopupID:
             return (short)objd.CatalogID;
         case VMOBJDVariable.ServingSurfaceTreeID:
             return (short)objd.CatalogID;
         case VMOBJDVariable.LevelOffset:
             return (short)objd.LevelOffset;
         case VMOBJDVariable.Shadow:
             return (short)objd.Shadow;
         case VMOBJDVariable.NumAttributes:
             return (short)objd.NumAttributes;
         case VMOBJDVariable.CleanTreeID:
             return (short)objd.BHAV_Clean;
         case VMOBJDVariable.QueueSkippedTreeID:
             return (short)objd.BHAV_QueueSkipped;
         case VMOBJDVariable.FrontDirection:
             return (short)objd.FrontDirection;
         case VMOBJDVariable.WallAdjacencyChangedTreeID:
             return (short)objd.BHAV_WallAdjacencyChanged;
         case VMOBJDVariable.MyLeadObject:
             return (short)objd.MyLeadObject;
         case VMOBJDVariable.DynamicSpritesBaseID:
             return (short)objd.DynamicSpriteBaseId;
         case VMOBJDVariable.NumDynamicSprites:
             return (short)objd.NumDynamicSprites;
         case VMOBJDVariable.ChairEntryFlags:
             return (short)objd.ChairEntryFlags;
         case VMOBJDVariable.TileWidth:
             return (short)objd.TileWidth;
         case VMOBJDVariable.LotCategories:
             return 0; //NOT IN OBJD RIGHT NOW!
         case VMOBJDVariable.BuildModeType:
             return (short)objd.BuildModeType;
         case VMOBJDVariable.OriginalGUID1:
             return (short)objd.OriginalGUID1;
         case VMOBJDVariable.OriginalGUID2:
             return (short)objd.OriginalGUID2;
         case VMOBJDVariable.SuitGUID1:
             return (short)objd.SuitGUID1;
         case VMOBJDVariable.SuitGUID2:
             return (short)objd.SuitGUID2;
         case VMOBJDVariable.PickupTreeID:
             return (short)objd.BHAV_Pickup;
         case VMOBJDVariable.ThumbnailGraphic:
             return (short)objd.ThumbnailGraphic;
         case VMOBJDVariable.ShadowFlags:
             return (short)objd.ShadowFlags;
         case VMOBJDVariable.FootprintMask:
             return (short)objd.FootprintMask;
         case VMOBJDVariable.DynamicMultiTileUpdateTreeID:
             return (short)objd.BHAV_DynamicMultiTileUpdate;
         case VMOBJDVariable.ShadowBrightness:
             return (short)objd.ShadowBrightness;
         case VMOBJDVariable.RepairTreeID:
             return (short)objd.BHAV_Repair;
         case VMOBJDVariable.WallStyleSpriteID:
             return (short)objd.WallStyleSpriteID;
         case VMOBJDVariable.RatingHunger:
             return (short)objd.RatingHunger;
         case VMOBJDVariable.RatingComfort:
             return (short)objd.CatalogID;
         case VMOBJDVariable.RatingHygiene:
             return (short)objd.RatingHygiene;
         case VMOBJDVariable.RatingBladder:
             return (short)objd.RatingBladder;
         case VMOBJDVariable.RatingEnergy:
             return (short)objd.RatingEnergy;
         case VMOBJDVariable.RatingFun:
             return (short)objd.RatingFun;
         case VMOBJDVariable.RatingRoom:
             return (short)objd.RatingRoom;
         case VMOBJDVariable.RatingSkillFlags:
             return (short)objd.RatingSkillFlags;
         case VMOBJDVariable.NumTypeAttributes:
             throw new VMSimanticsException("Not Implemented!", context); //??
         case VMOBJDVariable.MiscFlags:
             throw new VMSimanticsException("Not Implemented!", context); //??
         case VMOBJDVariable.TypeAttrGUID1:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.TypeAttrGUID2:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.InteractionResultStrings:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.ClientHouseJoinTreeID:
             throw new VMSimanticsException("Not Implemented!", context);
         case VMOBJDVariable.PrepareForSaleTreeID:
             throw new VMSimanticsException("Not Implemented!", context);
         default:
             throw new VMSimanticsException("Unknown definition var", context);
     }
 }