Given a generic page, allocs a generic and calls AssignGenericPageTogeneric to actually load models and values. Rturns generic handle on success, -1 if fail
| 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 |
| 1844 | int 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; |
no test coverage detected