MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / mng_SetAndLoadGeneric

Function mng_SetAndLoadGeneric

manage/generic.cpp:1844–1906  ·  view source on GitHub ↗

Given a generic page, allocs a generic and calls AssignGenericPageTogeneric to actually load models and values. Rturns generic handle on success, -1 if fail

Source from the content-addressed store, hash-verified

1842// Given a generic page, allocs a generic and calls AssignGenericPageTogeneric to actually
1843// load models and values. Rturns generic handle on success, -1 if fail
1844int mng_SetAndLoadGeneric(mngs_generic_page *genericpage, CFILE *infile) {
1845 int i, j, n;
1846 bool f_anim = false;
1847 bool f_weapons = false;
1848 bool f_ai = false;
1849
1850 f_ai = (genericpage->objinfo_struct.flags & OIF_CONTROL_AI) ? true : false;
1851
1852 if (f_ai) {
1853 f_weapons = f_anim = true;
1854 } else {
1855 if (genericpage->objinfo_struct.type == OBJ_ROBOT || genericpage->objinfo_struct.type == OBJ_BUILDING) {
1856 f_anim = true;
1857 } else if (genericpage->objinfo_struct.type == OBJ_POWERUP) {
1858 if (f_ai) {
1859 f_anim = true;
1860 } else {
1861 for (i = 0; i < NUM_MOVEMENT_CLASSES; i++) {
1862 for (j = 0; j < NUM_ANIMS_PER_CLASS; j++) {
1863 if (genericpage->anim[i].elem[j].to != 0 || genericpage->anim[i].elem[j].from != 0) {
1864 f_anim = true;
1865 break;
1866 }
1867 }
1868 }
1869 }
1870 } else if (genericpage->objinfo_struct.type == OBJ_CLUTTER) {
1871 if (f_ai) {
1872 f_anim = true;
1873 } else {
1874 for (i = 0; i < NUM_MOVEMENT_CLASSES; i++) {
1875 for (j = 0; j < NUM_ANIMS_PER_CLASS; j++) {
1876 if (genericpage->anim[i].elem[j].to != 0 || genericpage->anim[i].elem[j].from != 0) {
1877 f_anim = true;
1878 break;
1879 }
1880 }
1881 }
1882 }
1883 }
1884
1885 for (i = 0; i < MAX_WBS_PER_OBJ; i++) {
1886 for (j = 0; j < genericpage->static_wb[i].num_masks; j++) {
1887 if (genericpage->static_wb[i].gp_fire_masks[j] != 0) {
1888 f_weapons = true;
1889 break;
1890 }
1891 }
1892 }
1893 }
1894
1895 if (Running_editor) {
1896 f_ai = f_weapons = f_anim = true;
1897 }
1898
1899 n = AllocObjectID(genericpage->objinfo_struct.type, f_anim, f_weapons, f_ai);
1900 if (n < 0)
1901 return -1;

Callers 3

mng_LoadNetGenericPageFunction · 0.85
mng_LoadLocalGenericPageFunction · 0.85

Calls 2

AllocObjectIDFunction · 0.85

Tested by

no test coverage detected