ModelViewer.Cache.Actor.CalculateArmorVarEquipId C# (CSharp) Method

CalculateArmorVarEquipId() private method

private CalculateArmorVarEquipId ( ModelPart modelPart, int actorVal ) : int
modelPart ModelPart
actorVal int
return int
        private int CalculateArmorVarEquipId(ModelPart modelPart, int actorVal)
        {
            if (actorVal == 0) { return 0; }

            int subModelId = actorVal >> 10;
            int texture = (actorVal >> 5) & 0x1F;
            int variation = actorVal & 0x1F;

            int varEquipId = 0;
            var modelType = (DatDigger.Xml.Format.ModelType)(this.BaseModel / 10000);
            switch (modelType)
            {
                case DatDigger.Xml.Format.ModelType.Monster:
                    varEquipId += 1000000000;
                    varEquipId += this.BaseModelFolder * 1000000;
                    varEquipId += subModelId * 1000;
                    varEquipId += texture * 10;
                    varEquipId += variation;
                    switch (modelPart)
                    {
                        case ModelPart.Top:
                            varEquipId += 0;
                            break;
                        case ModelPart.Dwn:
                            varEquipId += 200;
                            break;
                        case ModelPart.Glv:
                            varEquipId += 300;
                            break;
                        case ModelPart.Sho:
                            varEquipId += 400;
                            break;
                        case ModelPart.Met:
                            varEquipId += 600;
                            break;
                        default:
                            throw new System.InvalidOperationException("Unexpected Model Part " + modelPart);
                    }
                    break;
                case DatDigger.Xml.Format.ModelType.PC:
                    varEquipId = 100000000;
                    varEquipId += subModelId * 100000;
                    varEquipId += texture * 100;
                    varEquipId += variation;
                    switch (modelPart)
                    {
                        case ModelPart.Top:
                            varEquipId += 10000;
                            break;
                        case ModelPart.Dwn:
                            varEquipId += 20000;
                            break;
                        case ModelPart.Glv:
                            varEquipId += 30000;
                            break;
                        case ModelPart.Sho:
                            varEquipId += 40000;
                            break;
                        case ModelPart.Met:
                            varEquipId += 60000;
                            break;
                        default:
                            throw new System.InvalidOperationException("Unexpected Model Part " + modelPart);
                    }
                    break;
                case DatDigger.Xml.Format.ModelType.BgObject:
                case DatDigger.Xml.Format.ModelType.Weapon:
                    varEquipId = 0;
                    break;
                default:
                    throw new InvalidOperationException("Unknown Model Type: " + modelType);
            }

            return varEquipId;
        }