Пример #1
0
        public FileResult Avatar(int id, AvatarType type = AvatarType.Default, bool cache = true)
        {
            var bytes = Exigo.Images().GetCustomerAvatar(id, type, cache);

            // Return the image
            return File(bytes, "application/png", "{0}.png".FormatWith(id));
        }
		public void UpdateLayout(AvatarType type)
		{
			nfloat scale = type == AvatarType.User ? 0.592f: 1;
			nfloat avatarDiameter = CellSize.Width * scale;
			nfloat strokeDiameter = avatarDiameter + 4;

			nfloat centerOffsetY = CellSize.Width / 2;
			avatarCenterY.Constant = centerOffsetY;
			strokeEmulatorCenterY.Constant = centerOffsetY;

			avatarWidth.Constant = avatarHeight.Constant = avatarDiameter;
			strokeEmulatorWidth.Constant = strokeEmulatorHeight.Constant = strokeDiameter;
			avatar.Layer.CornerRadius = avatarDiameter / 2;
			strokeEmulator.Layer.CornerRadius = strokeDiameter / 2;

			strokeEmulator.Hidden = type != AvatarType.User;
		}
Пример #3
0
        public byte[] GetCustomerAvatar(int customerID, AvatarType type, bool cache = true)
        {
            var bytes = new byte[0];

            // Try to return the image found at the avatar path
            bytes = GlobalUtilities.GetExternalImageBytes(GlobalUtilities.GetCustomerAvatarUrl(customerID, type, cache));

            // If we didn't find anything there, convert the default image (which is Base64) to a byte array.
            // We'll use that instead
            if (bytes == null || bytes.Length == 0)
            {
                Exigo.Images().SetCustomerAvatar(customerID, Convert.FromBase64String(GlobalSettings.Avatars.DefaultAvatarAsBase64));
                return GetCustomerAvatar(customerID, type, cache);
            }

            return bytes;
        }
Пример #4
0
        public string CreateRelativeAvatarPath(string imageName, AvatarType avatarType, AvatarSizeType size)
        {
            _logger.LogInformation($"{nameof(MediaService)}.{nameof(CreateRelativeAvatarPath)}.Start");
            AvatarSizeFolders avatarTypeFolder = null;

            switch (avatarType)
            {
            case AvatarType.Standard:
                avatarTypeFolder = _folderConfiguration.Avatars.Standards;
                break;

            case AvatarType.Custom:
            default:
                avatarTypeFolder = _folderConfiguration.Avatars.Customs;
                break;
            }

            var name           = Path.GetFileNameWithoutExtension(imageName);
            var ext            = Path.GetExtension(imageName);
            var relativeFolder = "";

            switch (size)
            {
            case AvatarSizeType.Original:
                relativeFolder = avatarTypeFolder.Originals.GetFullHashPath();
                break;

            case AvatarSizeType.Small:
                relativeFolder = avatarTypeFolder.Smalls.GetFullHashPath();
                break;

            case AvatarSizeType.Large:
                relativeFolder = avatarTypeFolder.Larges.GetFullHashPath();
                break;
            }

            var result = Path.Combine(relativeFolder, name + $"_{size.ToString().ToLower()}" + ext);

            _logger.LogInformation($"{nameof(MediaService)}.{nameof(CreateRelativeAvatarPath)}.End");
            return(result);
        }
Пример #5
0
        public void UpdateLayout(CGSize cellSize, AvatarType type)
        {
            nfloat scale          = 0.592f;
            nfloat avatarDiameter = cellSize.Width * scale;
            nfloat strokeDiameter = avatarDiameter + 4;

            nfloat centerOffsetY = cellSize.Width / 2;

            avatarCenterY.Constant         = centerOffsetY;
            strokeEmulatorCenterY.Constant = centerOffsetY;

            avatarWidth.Constant              = avatarHeight.Constant = avatarDiameter;
            strokeEmulatorWidth.Constant      = strokeEmulatorHeight.Constant = strokeDiameter;
            avatar.Layer.CornerRadius         = avatarDiameter / 2;
            strokeEmulator.Layer.CornerRadius = strokeDiameter / 2;

            nickNameTopSpacing.Constant      = cellSize.Width - 10;
            nickname.PreferredMaxLayoutWidth = cellSize.Width;

            strokeEmulator.Hidden = type != AvatarType.User;
        }
Пример #6
0
    public List <AvatarData> Get(AvatarType _avatarType)
    {
        List <AvatarData> _avatarList = new List <AvatarData>(avatarDic.Values);

        if (_avatarList.Count <= 0)
        {
            return(null);
        }

        List <AvatarData> _typeList = new List <AvatarData>();

        for (int i = 0; i < _avatarList.Count; i++)
        {
            if (_avatarList[i].avatarType == _avatarType)
            {
                _typeList.Add(_avatarList[i]);
            }
        }

        return(_typeList);
    }
Пример #7
0
    private void CreateModel(AvatarType avatarType, int idModel, int idWeapon)
    {
        switch (avatarType)
        {
        case AvatarType.DODGER:
            avatarModel = Instantiate(Resources.Load <GameObject>(ResourcePaths.DodgerAvatar));
            weapon      = new NoWeapon();
            break;

        case AvatarType.SHOOTER:
            avatarModel = Instantiate(Resources.Load <GameObject>(ResourcePaths.ShooterAvatar));
            GameObject weaponGO = Instantiate(Resources.Load <GameObject>(ResourcePaths.Weapon));
            SetupSharedGameObject(idWeapon, weaponGO);
            weapon = weaponGO.GetComponent <Weapon>();
            break;

        default:
            throw new UnhandledEnumCase(avatarType);
        }
        SetupSharedGameObject(idModel, avatarModel);
    }
Пример #8
0
        public GameObject CreateAvatar(AvatarType aType)
        {
            GameObject avatarObj = null;

            switch (aType)
            {
            case AvatarType.Human:
                avatarObj = (GameObject)GameObject.Instantiate(GameApp.GetInstance().GetResourceConfig().human, Vector3.zero, Quaternion.identity);
                break;

            case AvatarType.Plumber:
                avatarObj = (GameObject)GameObject.Instantiate(GameApp.GetInstance().GetResourceConfig().plumbers, Vector3.zero, Quaternion.identity);
                break;

            case AvatarType.Marine:
                avatarObj = (GameObject)GameObject.Instantiate(GameApp.GetInstance().GetResourceConfig().marine, Vector3.zero, Quaternion.identity);
                break;

            case AvatarType.EnegyArmor:
                avatarObj = (GameObject)GameObject.Instantiate(GameApp.GetInstance().GetResourceConfig().enegyArmor, Vector3.zero, Quaternion.identity);
                break;

            case AvatarType.Nerd:
                avatarObj = (GameObject)GameObject.Instantiate(GameApp.GetInstance().GetResourceConfig().nerd, Vector3.zero, Quaternion.identity);
                break;

            case AvatarType.Doctor:
                avatarObj = (GameObject)GameObject.Instantiate(GameApp.GetInstance().GetResourceConfig().doctor, Vector3.zero, Quaternion.identity);
                break;

            case AvatarType.Cowboy:
                avatarObj = (GameObject)GameObject.Instantiate(GameApp.GetInstance().GetResourceConfig().cowboy, Vector3.zero, Quaternion.identity);
                break;

            case AvatarType.Swat:
                avatarObj = (GameObject)GameObject.Instantiate(GameApp.GetInstance().GetResourceConfig().swat, Vector3.zero, Quaternion.identity);
                break;
            }
            return(avatarObj);
        }
Пример #9
0
    public void StartMatch(int type)
    {
        if (!PhotonNetwork.isMasterClient)
        {
            photonView.RPC("StartMatch", PhotonTargets.MasterClient, (int)((AvatarType)type).OtherType());
        }
        else if (State == MatchState.CHOOSING_ROLES)
        {
            AvatarType myType = (AvatarType)type;
            foreach (var playerID in avatarList.Keys)
            {
                AvatarType avatarType  = playerID == PhotonNetwork.player.ID ? myType : myType.OtherType();
                int        spawnNumber = avatarType == AvatarType.DODGER ? 0 : 1;

                Avatar avatar = avatarList[playerID];

                avatar.OutOfHealth += OutOfHealth;
                avatar.CreateAvatar(avatarType, spawns.GetChild(spawnNumber).position);
            }
            State = MatchState.PLAYING;
        }
    }
Пример #10
0
    // Red > Green > Blue > Red
    float DamageFromType(AvatarType avatarTypeAttacker)
    {
        float extraDamage = 1;

        if (avatarTypeAttacker == AvatarType.Blue)
        {
            if (_avatarType == AvatarType.Red)
            {
                extraDamage = 2;
            }
            else if (_avatarType == AvatarType.Green)
            {
                extraDamage = 0.7f;
            }
        }
        if (avatarTypeAttacker == AvatarType.Green)
        {
            if (_avatarType == AvatarType.Blue)
            {
                extraDamage = 2;
            }
            else if (_avatarType == AvatarType.Red)
            {
                extraDamage = 0.7f;
            }
        }
        if (avatarTypeAttacker == AvatarType.Red)
        {
            if (_avatarType == AvatarType.Green)
            {
                extraDamage = 2;
            }
            else if (_avatarType == AvatarType.Blue)
            {
                extraDamage = 0.7f;
            }
        }
        return(extraDamage);
    }
Пример #11
0
    private void InitAvatar(Vector3 spawnPosition, AvatarType avatarType)
    {
        switch (avatarType)
        {
        case AvatarType.DODGER:
            HealthAmount = START_HEALTH;
            healthBar.gameObject.SetActive(true);
            break;

        case AvatarType.SHOOTER:
            healthBar.gameObject.SetActive(false);
            break;

        default:
            break;
        }

        foreach (Renderer renderer in avatarModel.transform.GetComponentsInChildren <Renderer>())
        {
            if (renderer.tag == Tags.TeamColored)
            {
                renderer.material.color = Team.Color();
            }
        }
        avatarModel.transform.SetParent(transform, false);

        AvatarTypeSettings = avatarType.Settings();
        title.text         = AvatarTypeSettings.Name;

        weapon.Init(this);
        if (photonView.isMine)
        {
            AvatarControl avatarControl = gameObject.AddComponent <AvatarControl>();
            avatarControl.Init(this, avatarModel, weapon);
        }

        transform.position = spawnPosition;
        gameObject.SetActive(true);
    }
Пример #12
0
        public override void Initialize()
        {
            Debug.Log("Initializing Avatar");

            base.Initialize();
            instance = this;
            //UnityClient.UserSession.Instance.Avatar = instance;

            if (GameObject.FindObjectsOfType <SkyboxWidget>().Any(sw => sw.stereo))
            {
                currentType = AvatarType.Stereo;
            }

            var avatarTemplate = UnityClient.UserSession.Instance.m_settings.avatarTemplates.FirstOrDefault(t => t.type == currentType);
            var avatarInstance = Instantiate(avatarTemplate.prefab, transform, false);

            avatarInstance.AddComponent <InstancedAssetWidget>();

            foreach (var part in GetComponentsInChildren <AvatarAnatomyWidget>())
            {
                foreach (var asset in assets.Where(p => p.part == part.part))
                {
                    asset.widget = part;
                    var thisWidget = part.gameObject.AddComponent <AssetWidget>();
                    thisWidget.assetID = asset.assetID;
                }

                if (part.part == AvatarAnatomyWidget.Location.Head)
                {
                    head = part.transform;
                }
            }

            if (!head)
            {
                head = transform;
            }
        }
Пример #13
0
    public void ChangeAvatar(AvatarType aType)
    {
        ClearModels();
        GameObject avatarObj = AvatarFactory.GetInstance().CreateAvatar(aType);  //! 改变人物

        avatarObj.transform.rotation = Quaternion.Euler(0f, 200f, 0f);

        ResourceConfigScript rConf = GameApp.GetInstance().GetResourceConfig();

        Weapon w = GameApp.GetInstance().GetGameState().GetBattleWeapons()[0];
        string firstWeaponName = w.Name;
        string wNameEnd        = Weapon.GetWeaponNameEnd(w.GetWeaponType());

        GameObject weapon          = WeaponFactory.GetInstance().CreateWeaponModel(firstWeaponName, avatarObj.transform.position, avatarObj.transform.rotation); //! 创建武器
        Transform  weaponBoneTrans = avatarObj.transform.Find(BoneName.WEAPON_PATH);                                                                             //! 获取人物上挂载武器的节点

        weapon.transform.parent        = weaponBoneTrans;                                                                                                        //! 设置武器的父节点
        avatarObj.transform.localScale = scale;
        avatarObj.GetComponent <UnityEngine.Animation>()[AnimationName.PLAYER_IDLE + wNameEnd].wrapMode = WrapMode.Loop;
        avatarObj.GetComponent <UnityEngine.Animation>().Play(AnimationName.PLAYER_IDLE + wNameEnd);

        SetModel(avatarObj);
        lastMotionTime = Time.time;
    }
Пример #14
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (AvatarType != 0)
            {
                hash ^= AvatarType.GetHashCode();
            }
            hash ^= slot_.GetHashCode();
            hash ^= filters_.GetHashCode();
            if (Start != 0)
            {
                hash ^= Start.GetHashCode();
            }
            if (Limit != 0)
            {
                hash ^= Limit.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
Пример #15
0
        public AssemblerData Assemble(UserAvatar avatar)
        {
            Contract.Requires(avatar != null);

            UserInfo userInfo = avatar.UserInfo;
            string   userName = FileUtility.MakeNameWindowsSafe(userInfo.Username);

            string appData = Environment.GetEnvironmentVariable("LocalAppData");
            string rbx2Src = Path.Combine(appData, "Rbx2Source");
            string avatars = Path.Combine(rbx2Src, "Avatars");
            string userBin = Path.Combine(avatars, userName);

            string modelDir     = Path.Combine(userBin, "Model");
            string anim8Dir     = Path.Combine(modelDir, "Animations");
            string texturesDir  = Path.Combine(userBin, "Textures");
            string materialsDir = Path.Combine(userBin, "Materials");

            FileUtility.InitiateEmptyDirectories(modelDir, anim8Dir, texturesDir, materialsDir);

            AvatarType          avatarType = avatar.PlayerAvatarType;
            ICharacterAssembler assembler;

            if (avatarType == AvatarType.R15)
            {
                assembler = new R15CharacterAssembler();
            }
            else
            {
                assembler = new R6CharacterAssembler();
            }

            string compileDir = "roblox_avatars/" + userName;

            string avatarTypeName  = Rbx2Source.GetEnumName(avatarType);
            Folder characterAssets = AppendCharacterAssets(avatar, avatarTypeName);

            Rbx2Source.ScheduleTasks
            (
                "BuildCharacter",
                "BuildCollisionModel",
                "BuildAnimations",
                "BuildTextures",
                "BuildMaterials",
                "BuildCompilerScript"
            );

            Rbx2Source.PrintHeader("BUILDING CHARACTER MODEL");
            #region Build Character Model
            ///////////////////////////////////////////////////////////////////////////////////////////////////////

            StudioMdlWriter writer = assembler.AssembleModel(characterAssets, avatar.Scales, DEBUG_RAPID_ASSEMBLY);

            string studioMdl = writer.BuildFile();
            string modelPath = Path.Combine(modelDir, "CharacterModel.smd");
            FileUtility.WriteFile(modelPath, studioMdl);

            string staticPose = writer.BuildFile(false);
            string refPath    = Path.Combine(modelDir, "ReferencePos.smd");
            FileUtility.WriteFile(refPath, staticPose);

            Rbx2Source.MarkTaskCompleted("BuildCharacter");

            ///////////////////////////////////////////////////////////////////////////////////////////////////////
            #endregion

            Rbx2Source.PrintHeader("BUILDING COLLISION MODEL");
            #region Build Character Collisions
            ///////////////////////////////////////////////////////////////////////////////////////////////////////

            Folder          collisionAssets = AppendCollisionAssets(avatar, avatarTypeName);
            StudioMdlWriter collisionWriter = assembler.AssembleModel(collisionAssets, avatar.Scales, true);

            string collisionModel = collisionWriter.BuildFile();
            string cmodelPath     = Path.Combine(modelDir, "CollisionModel.smd");
            FileUtility.WriteFile(cmodelPath, collisionModel);

            byte[] collisionJoints = assembler.CollisionModelScript;
            string cjointsPath     = Path.Combine(modelDir, "CollisionJoints.qc");

            FileUtility.WriteFile(cjointsPath, collisionJoints);
            Rbx2Source.MarkTaskCompleted("BuildCollisionModel");

            ///////////////////////////////////////////////////////////////////////////////////////////////////////
            #endregion

            Rbx2Source.PrintHeader("BUILDING CHARACTER ANIMATIONS");
            #region Build Character Animations
            ///////////////////////////////////////////////////////////////////////////////////////////////////////

            var animIds      = assembler.CollectAnimationIds(avatar);
            var compileAnims = new Dictionary <string, Asset>();

            if (animIds.Count > 0)
            {
                Rbx2Source.Print("Collecting Animations...");
                Rbx2Source.IncrementStack();

                Action <string, Asset> collectAnimation = (animName, animAsset) =>
                {
                    if (!compileAnims.ContainsKey(animName))
                    {
                        Rbx2Source.Print("Collected animation {0} with id {1}", animName, animAsset.Id);
                        compileAnims.Add(animName, animAsset);
                    }
                };

                foreach (string animName in animIds.Keys)
                {
                    var animId    = animIds[animName];
                    var animAsset = animId.GetAsset();
                    var import    = animAsset.OpenAsModel();

                    if (animId.AnimationType == AnimationType.R15AnimFolder)
                    {
                        Folder r15Anim = import.FindFirstChild <Folder>("R15Anim");

                        if (r15Anim != null)
                        {
                            foreach (Instance animDef in r15Anim.GetChildren())
                            {
                                if (animDef.Name == "idle")
                                {
                                    var anims = animDef.GetChildrenOfType <Animation>();

                                    if (anims.Length == 2)
                                    {
                                        var getLookAnim = anims.OrderBy((anim) =>
                                        {
                                            var weight = anim.FindFirstChild <NumberValue>("Weight");

                                            if (weight != null)
                                            {
                                                return(weight.Value);
                                            }

                                            return(0.0);
                                        });

                                        var lookAnim = getLookAnim.First();
                                        lookAnim.Destroy();

                                        Asset lookAsset = Asset.GetByAssetId(lookAnim.AnimationId);
                                        collectAnimation("Idle2", lookAsset);
                                    }
                                }

                                Animation compileAnim = animDef.FindFirstChildOfClass <Animation>();

                                if (compileAnim != null)
                                {
                                    Asset  compileAsset = Asset.GetByAssetId(compileAnim.AnimationId);
                                    string compileName  = animName;

                                    if (animDef.Name == "pose")
                                    {
                                        compileName = "Pose";
                                    }

                                    collectAnimation(compileName, compileAsset);
                                }
                            }
                        }
                    }
                    else
                    {
                        collectAnimation(animName, animAsset);
                    }
                }

                Rbx2Source.DecrementStack();
            }
            else
            {
                Rbx2Source.Print("No animations found :(");
            }

            if (compileAnims.Count > 0)
            {
                Rbx2Source.Print("Assembling Animations...");
                Rbx2Source.IncrementStack();

                foreach (string animName in compileAnims.Keys)
                {
                    Rbx2Source.Print("Building Animation {0}...", animName);

                    Asset animAsset = compileAnims[animName];
                    var   import    = animAsset.OpenAsModel();

                    var sequence = import.FindFirstChildOfClass <KeyframeSequence>();
                    sequence.Name = animName;

                    var avatarTypeRef = new StringValue()
                    {
                        Value  = $"{avatarType}",
                        Name   = "AvatarType",
                        Parent = sequence
                    };

                    string animation = AnimationBuilder.Assemble(sequence, writer.Skeleton[0].Bones);
                    string animPath  = Path.Combine(anim8Dir, animName + ".smd");

                    FileUtility.WriteFile(animPath, animation);
                }

                Rbx2Source.DecrementStack();
            }

            Rbx2Source.MarkTaskCompleted("BuildAnimations");

            ///////////////////////////////////////////////////////////////////////////////////////////////////////
            #endregion

            Rbx2Source.PrintHeader("BUILDING CHARACTER TEXTURES");
            #region Build Character Textures
            ///////////////////////////////////////////////////////////////////////////////////////////////////////

            var             materials = writer.Materials;
            TextureBindings textures;

            if (DEBUG_RAPID_ASSEMBLY)
            {
                textures = new TextureBindings();
                materials.Clear();
            }
            else
            {
                TextureCompositor texCompositor = assembler.ComposeTextureMap(characterAssets, avatar.BodyColors);
                textures = assembler.BindTextures(texCompositor, materials);
            }

            var images = textures.Images;
            textures.MaterialDirectory = compileDir;

            foreach (string imageName in images.Keys)
            {
                Rbx2Source.Print("Writing Image {0}.png", imageName);

                Image  image     = images[imageName];
                string imagePath = Path.Combine(texturesDir, imageName + ".png");

                try
                {
                    image.Save(imagePath, ImageFormat.Png);
                }
                catch
                {
                    Rbx2Source.Print("IMAGE {0}.png FAILED TO SAVE!", imageName);
                }

                FileUtility.LockFile(imagePath);
            }

            CompositData.FreeAllocatedTextures();
            Rbx2Source.MarkTaskCompleted("BuildTextures");

            ///////////////////////////////////////////////////////////////////////////////////////////////////////
            #endregion

            Rbx2Source.PrintHeader("WRITING MATERIAL FILES");
            #region Write Material Files
            ///////////////////////////////////////////////////////////////////////////////////////////////////////

            var matLinks = textures.MatLinks;

            foreach (string mtlName in matLinks.Keys)
            {
                Rbx2Source.Print("Building VMT {0}.vmt", mtlName);

                string targetVtf = matLinks[mtlName];
                string vmtPath   = Path.Combine(materialsDir, mtlName + ".vmt");

                ValveMaterial mtl = materials[mtlName];
                mtl.SetVmtField("basetexture", "models/" + compileDir + "/" + targetVtf);
                mtl.WriteVmtFile(vmtPath);
            }

            Rbx2Source.MarkTaskCompleted("BuildMaterials");

            ///////////////////////////////////////////////////////////////////////////////////////////////////////
            #endregion

            Rbx2Source.PrintHeader("WRITING COMPILER SCRIPT");
            #region Write Compiler Script
            ///////////////////////////////////////////////////////////////////////////////////////////////////////

            string       modelName = compileDir + ".mdl";
            QuakeCWriter qc        = new QuakeCWriter();

            qc.Add("body", userName, "CharacterModel.smd");
            qc.Add("modelname", modelName);
            qc.Add("upaxis", "y");

            // Compute the floor level of the avatar.
            Folder assembly = characterAssets.FindFirstChild <Folder>("ASSEMBLY");

            if (assembly != null)
            {
                float  floor  = ComputeFloorLevel(assembly);
                string origin = "0 " + floor.ToInvariantString() + " 0";
                qc.Add("origin", origin);
            }

            qc.Add("cdmaterials", "models/" + compileDir);
            qc.Add("surfaceprop", "flesh");
            qc.Add("include", "CollisionJoints.qc");

            QuakeCItem refAnim = qc.Add("sequence", "reference", "ReferencePos.smd");
            refAnim.AddSubItem("fps", 1);
            refAnim.AddSubItem("loop");

            foreach (string animName in compileAnims.Keys)
            {
                QuakeCItem sequence = qc.Add("sequence", animName.ToLowerInvariant(), "Animations/" + animName + ".smd");
                sequence.AddSubItem("fps", AnimationBuilder.FrameRate);

                if (avatarType == AvatarType.R6)
                {
                    sequence.AddSubItem("delta");
                }

                sequence.AddSubItem("loop");
            }

            string qcFile = qc.ToString();
            string qcPath = Path.Combine(modelDir, "Compile.qc");

            FileUtility.WriteFile(qcPath, qcFile);
            Rbx2Source.MarkTaskCompleted("BuildCompilerScript");

            ///////////////////////////////////////////////////////////////////////////////////////////////////////
            #endregion

            AssemblerData data = new AssemblerData()
            {
                ModelData      = writer,
                ModelName      = modelName,
                TextureData    = textures,
                CompilerScript = qcPath,

                RootDirectory     = userBin,
                CompileDirectory  = compileDir,
                TextureDirectory  = texturesDir,
                MaterialDirectory = materialsDir,
            };

            return(data);
        }
Пример #16
0
 /// <summary>
 /// 得到头像地址
 /// </summary>
 /// <param name="uid">Uid</param>
 /// <param name="size">大小</param>
 /// <param name="type">类型</param>
 /// <returns></returns>
 public string AvatarUrl(int uid, AvatarSize size, AvatarType type = AvatarType.Virtual)
 {
     return(string.Format("{0}avatar.php?uid={1}&type={2}&size={3}", UcConfig.UcApi, uid,
                          type.ToString().ToLower(), size.ToString().ToLower()));
 }
Пример #17
0
 public override String GetBubbleAvatarPath(String bubbleId, AvatarType avatarType = AvatarType.ROUNDED)
 {
     return(RbAvatars.GetBubbleAvatarPath(bubbleId, avatarType));
 }
Пример #18
0
 /// <summary>
 /// 得到头像地址
 /// </summary>
 /// <param name="uid">Uid</param>
 /// <param name="size">大小</param>
 /// <param name="type">类型</param>
 /// <returns></returns>
 public string AvatarUrl(decimal uid, AvatarSize size, AvatarType type = AvatarType.Virtual)
 {
     return string.Format("{0}avatar.php?uid={1}&type={2}&size={3}", UcConfig.UcApi, uid,
                          type.ToString().ToLower(), size.ToString().ToLower());
 }
Пример #19
0
 public void AvatarChoice(string type)
 {
     avatarType = (AvatarType)Enum.Parse(typeof(AvatarType), type);
     DisplayPlayerSettings();
 }
Пример #20
0
 public void SetAvatarType(AvatarType value)
 {
     _avatarType = value;
 }
Пример #21
0
        /// <summary>
        /// Get the image bytes from a web request to an image at the provided URL
        /// </summary>
        /// <param name="url">The URL of the image</param>
        /// <returns>A byte array </returns>
        public static string GetCustomerAvatarUrl(int customerID, AvatarType type = AvatarType.Default, bool cache = true)
        {
            var cachekey = (!cache) ? "?nocache={0}".FormatWith(Guid.NewGuid()) : string.Empty;
            var filename = "avatar";
            switch (type)
            {
                case AvatarType.Tiny: filename += "-xs"; break;
                case AvatarType.Small: filename += "-sm"; break;
                case AvatarType.Large: filename += "-lg"; break;
            }

            return "http://api.exigo.com/4.0/{0}/images/customers/{1}/{2}.png{3}".FormatWith(GlobalSettings.Exigo.Api.CompanyKey, customerID, filename, cachekey);
        }
Пример #22
0
 private string CreateAvatarPath(AvatarType backgroundType, AvatarSizeType copyToNewSize)
 {
     return(Path.Combine(GetHashFolderName("Avatar"), GetHashFolderName(backgroundType.ToString()),
                         GetHashFolderName(copyToNewSize.ToString())));
 }
Пример #23
0
        public AvatarResponse GetCustomerAvatarResponse(int customerID, AvatarType type, bool cache = true, byte[] bytes = null)
        {
            var response = new AvatarResponse();

            var path     = "/customers/" + customerID.ToString();
            var filename = "avatar";

            switch (type)
            {
            case AvatarType.Tiny: filename += "-xs"; break;

            case AvatarType.Small: filename += "-sm"; break;

            case AvatarType.Large: filename += "-lg"; break;
            }

            // All images set to png, so we have to have this work around for now
            filename = filename + ".png";
            if (bytes == null)
            {
                using (var conn = Exigo.Sql())
                {
                    conn.Open();

                    var cmd = new SqlCommand(@"
						SELECT 
							TOP 1 ImageData 
						FROM
							ImageFiles 
						WHERE
							Path=@FilePath 
							AND Name=@FileName
						"                        , conn);
                    cmd.Parameters.Add("@FilePath", System.Data.SqlDbType.NVarChar, 500).Value = path;
                    cmd.Parameters.Add("@FileName", System.Data.SqlDbType.NVarChar, 500).Value = filename;
                    bytes = (byte[])cmd.ExecuteScalar();
                }
            }

            response.Bytes = bytes;

            // If we didn't find anything there, convert the default image (which is Base64) to a byte array.
            // We'll use that instead
            if (bytes == null)
            {
                bytes = Convert.FromBase64String(GlobalSettings.Avatars.DefaultAvatarAsBase64);


                return(GetCustomerAvatarResponse(customerID, type, cache, GlobalUtilities.ResizeImage(bytes, type)));
            }
            else
            {
                var    extension   = Path.GetExtension(filename).ToLower();
                string contentType = "image/jpeg";
                switch (extension)
                {
                case ".gif":
                    contentType = "image/gif";
                    break;

                case ".jpeg":
                    contentType = "image/png";
                    break;

                case ".bmp":
                    contentType = "image/bmp";
                    break;

                case ".png":
                    contentType = "image/png";
                    break;

                case ".jpg":
                default:
                    contentType = "image/jpeg";
                    break;
                }

                response.FileType = contentType;
            }


            return(response);
        }
Пример #24
0
 public ActionResult <AvatarType> Post([FromBody] AvatarType aType)
 {
     return(_typeService.CreateType(aType));
 }
Пример #25
0
 public ActionResult <AvatarType> Put(int id, [FromBody] AvatarType aType)
 {
     return(_typeService.UpdateAvatarType(aType));
 }
Пример #26
0
 ///<summary>
 /// 修改头像
 ///</summary>
 ///<param name="uid">Uid</param>
 ///<param name="type"></param>
 ///<returns></returns>
 public string Avatar(decimal uid, AvatarType type = AvatarType.Virtual)
 {
     var args = new Dictionary<string, string>
                    {
                        {"uid", uid.ToString()}
                    };
     string input = GetInput(args);
     string movie =
         string.Format("{0}images/camera.swf?inajax=1&appid={1}&input={2}&agent={3}&ucapi={4}&avatartype={5}",
                       UcConfig.UcApi, UcConfig.UcAppid, input, UcUtility.Md5(UcUtility.GetUserAgent()),
                       UcUtility.PhpUrlEncode(UcConfig.UcApi.Replace("http://", "")), type.ToString().ToLower());
     return getFlashPlayerCode(movie);
 }
Пример #27
0
 public static Sprite Avatar(AvatarType type)
 {
     return(Avatar(type.ToString()));
 }
Пример #28
0
 /// <summary>
 /// 检查头像是否存在
 /// </summary>
 /// <param name="uid"></param>
 /// <param name="size"></param>
 /// <param name="type"></param>
 /// <returns></returns>
 public bool AvatarCheck(decimal uid, AvatarSize size = AvatarSize.Middle, AvatarType type = AvatarType.Virtual)
 {
     var args = new Dictionary<string, string>
                    {
                        {"uid", uid.ToString()},
                        {"size", size.ToString().ToLower()},
                        {"type", type.ToString().ToLower()},
                        {"check_file_exists", "1"}
                    };
     return toBool(SendGet(UcConfig.UcApi + "avatar.php", args));
 }
Пример #29
0
        public async Task <(bool isUpdated, string url)> UpdateAvatarViaFile(int userId, AvatarType avatarType,
                                                                             AvatarSizeType avatarSizeType, IFormFile file)
        {
            Logger.LogInformation($"{nameof(AccountService)}.{nameof(UpdateAvatarViaFile)}.Start ");
            var url = await Hub.Media.UploadAvatarFile(AvatarType.Custom, file);

            var result = url.IsNullOrEmpty()
        ? (false, null)
        : (await Db.UsersInfo.UpdateUserOriginalAvatar(userId, url), MediaConverter.ToFullAvatarUrl(url, avatarSizeType)
           );

            Logger.LogInformation($"{nameof(AccountService)}.{nameof(UpdateAvatarViaFile)}.End ");
            return(result);
        }
Пример #30
0
 /// <summary>
 /// Gets the URL of the provided customer's avatar photo. Defaults to the current backoffice owner if no CustomerID is provided.
 /// </summary>
 /// <param name="helper">The UrlHelper object</param>
 /// <param name="CustomerID">The customer ID of the desired avatar URL.</param>
 /// <returns>The avatar photo's URL.</returns>
 public static string Avatar(this UrlHelper helper, int customerID, AvatarType type, bool cache = true)
 {
     return helper.Action("Avatar", "App", new { id = customerID, type = type, cache = cache });
 }
Пример #31
0
    private void LoadStaticHeads()
    {
        var names = new string[] { "Caleb", "Emily", "Lydia", "Matthew" };
        var avatars = new AvatarType[] { AvatarType.Robot, AvatarType.Guy, AvatarType.Guy, AvatarType.Robot };
        var types = System.Enum.GetValues(typeof(SpriteType)).Cast<SpriteType>();

        var sprites = Resources.LoadAll<Sprite>("");

        var i = 0;

        foreach (var n in names)
        {
            if (!sprites.Any(s => s.name.Contains(n)))
            {
                i++;
                continue;
            }

            var p = new PlayerData() { ID = n, AvatarType = avatars[i] };
            AvailablePlayers.Add(p);

            foreach (var ty in types)
            {
                var typeName = System.Enum.GetName(typeof(SpriteType), ty);
                var namePart = n + typeName;

                foreach (var s in sprites)
                {
                    if (s.name.Contains(namePart))
                    {
                        p.Sprites.Add(new SpriteInfo() { Sprite = s, SpriteType = ty });
                    }
                }
            }

            i++;
        }
    }
Пример #32
0
 public override String GetContactAvatarPath(String contactId, AvatarType avatarType = AvatarType.ROUNDED)
 {
     return(RbAvatars.GetContactAvatarPath(contactId, avatarType));
 }
Пример #33
0
    private void ActivateAvatar()
    {
        if (_lastAvatarType == PlayerViewModel.PlayerData.AvatarType)
        {
            return;
        }

        _lastAvatarType = PlayerViewModel.PlayerData.AvatarType;

        _childAvatarDirection = transform.GetChild(0).GetChild(0).gameObject;
        var rotationAndScale = _childAvatarDirection.transform.GetChild(0).gameObject;

        var avatarName = Enum.GetName(typeof(AvatarType), PlayerViewModel.PlayerData.AvatarType);

        _childAvatar = null;

        for (int i = 0; i < rotationAndScale.transform.childCount; i++)
        {
            var aChild = rotationAndScale.transform.GetChild(i);

            if (aChild.name == avatarName)
            {
                _childAvatar = aChild.gameObject;
                aChild.gameObject.SetActive(true);
            }
            else
            {
                aChild.gameObject.SetActive(false);
            }
        }

        if (_childAvatar == null)
        {
            _childAvatar = rotationAndScale.transform.GetChild(0).gameObject;
            _childAvatar.SetActive(true);
        }

        _headHolder = _childAvatar.transform.GetComponentInChildren<SpriteRenderer>().transform.parent.gameObject;
        _headView.Initialize(_headHolder);

        _animator = _childAvatar.transform.GetComponentInChildren<Animator>();

        _initialPosition = _childAvatar.transform.localPosition;
        _initialRotation = _childAvatar.transform.localRotation;
    }
Пример #34
0
        public AvatarResponse GetCustomerAvatarResponse(int customerID, AvatarType type, bool cache = true, byte[] bytes = null)
        {
            var response = new AvatarResponse();

            response.Bytes = bytes;

            var path     = "/customers/" + customerID.ToString();
            var filename = "avatar";

            switch (type)
            {
            //case AvatarType.Tiny: filename += "-xs"; break;
            case AvatarType.Small: filename += "-sm.png"; break;

            case AvatarType.Large: filename += "-lg.png"; break;
            }

            if (bytes == null)
            {
                using (var conn = new SqlConnection(GlobalSettings.Exigo.Api.Sql.ConnectionStrings.SqlReporting))
                {
                    conn.Open();

                    string query = "Select top 1 ImageData as Bytes, '' as FileType, '' as FileName, ModifiedDate From ImageFiles Where Path=@FilePath AND Name=@FileName";
                    var    res   = conn.Query <AvatarResponse>(query, new { FilePath = path, FileName = filename }).FirstOrDefault();
                    if (res != null)
                    {
                        response = res;
                    }
                }
            }

            // If we didn't find anything there, convert the default image (which is Base64) to a byte array.
            // We'll use that instead
            if (response.Bytes == null)
            {
                bytes             = Convert.FromBase64String(GlobalSettings.Avatars.DefaultAvatarAsBase64);
                response.FileName = filename; //We will respond with the generic avatar filename so we can let the browser cache it.
                return(GetCustomerAvatarResponse(customerID, type, cache, GlobalUtilities.ResizeImage(bytes, type)));
            }
            else
            {
                var    extension   = Path.GetExtension(filename).ToLower();
                string contentType = "image/jpeg";
                switch (extension)
                {
                case ".gif":
                    contentType = "image/gif";
                    break;

                case ".jpeg":
                    contentType = "image/png";
                    break;

                case ".bmp":
                    contentType = "image/bmp";
                    break;

                case ".png":
                    contentType = "image/png";
                    break;

                case ".jpg":
                default:
                    contentType = "image/jpeg";
                    break;
                }
                response.FileName = customerID.ToString() + "-" + Path.GetFileNameWithoutExtension(filename) + "-" + response.ModifiedDate.ToBinary() + extension; //If we have it, we will change the filename to the customerID and modifieddate so it will show up immediately.
                response.FileType = contentType;
            }

            return(response);
        }
Пример #35
0
 public void SetWingsuitTarget(FlightStatistics target)
 {
     _target              = target;
     _targetType          = AvatarType.Wingsuit;
     _transitionStartTime = _clock.CurrentTime;
 }
Пример #36
0
 // Token: 0x06000BCD RID: 3021 RVA: 0x0000FEE8 File Offset: 0x0000E0E8
 public LoadoutView(int loadoutId, int backpack, int boots, int cmid, int face, int functionalItem1, int functionalItem2, int functionalItem3, int gloves, int head, int lowerBody, int meleeWeapon, int quickItem1, int quickItem2, int quickItem3, AvatarType type, int upperBody, int weapon1, int weapon1Mod1, int weapon1Mod2, int weapon1Mod3, int weapon2, int weapon2Mod1, int weapon2Mod2, int weapon2Mod3, int weapon3, int weapon3Mod1, int weapon3Mod2, int weapon3Mod3, int webbing, string skinColor)
 {
     this.Backpack        = backpack;
     this.Boots           = boots;
     this.Cmid            = cmid;
     this.Face            = face;
     this.FunctionalItem1 = functionalItem1;
     this.FunctionalItem2 = functionalItem2;
     this.FunctionalItem3 = functionalItem3;
     this.Gloves          = gloves;
     this.Head            = head;
     this.LoadoutId       = loadoutId;
     this.LowerBody       = lowerBody;
     this.MeleeWeapon     = meleeWeapon;
     this.QuickItem1      = quickItem1;
     this.QuickItem2      = quickItem2;
     this.QuickItem3      = quickItem3;
     this.Type            = type;
     this.UpperBody       = upperBody;
     this.Weapon1         = weapon1;
     this.Weapon1Mod1     = weapon1Mod1;
     this.Weapon1Mod2     = weapon1Mod2;
     this.Weapon1Mod3     = weapon1Mod3;
     this.Weapon2         = weapon2;
     this.Weapon2Mod1     = weapon2Mod1;
     this.Weapon2Mod2     = weapon2Mod2;
     this.Weapon2Mod3     = weapon2Mod3;
     this.Weapon3         = weapon3;
     this.Weapon3Mod1     = weapon3Mod1;
     this.Weapon3Mod2     = weapon3Mod2;
     this.Weapon3Mod3     = weapon3Mod3;
     this.Webbing         = webbing;
     this.SkinColor       = skinColor;
 }
Пример #37
0
        public void Init()
        {
            //! 随机出生点
            GameObject[] pss = GameObject.FindGameObjectsWithTag("Respawn");
            int          rnd = Random.Range(0, pss.Length);

            GameObject ps = pss[rnd];

            respawnTrans = ps.transform;
            avatarType   = GameApp.GetInstance().GetGameState().Avatar;
            //! playerObject = AvatarFactory.GetInstance().CreateAvatar(avatarType);   //! 创建角色

            playerObject = AvatarFactory.GetInstance().CreateAvatar(Zombie3D.AvatarType.EnegyArmor);               //! 创建钢铁侠
            playerObject.transform.position = ps.transform.position;
            playerObject.transform.rotation = ps.transform.rotation;

            playerObject.name = "Player";
            playerTransform   = playerObject.transform;
            playerConfig      = GameApp.GetInstance().GetGameConfig().playerConf;
            int armorLevel = GameApp.GetInstance().GetGameState().ArmorLevel;

            hp    = playerConfig.hp * (1 + armorLevel * 0.5f);
            maxHp = hp;

            //! 特种兵的血量 × 2
            if (avatarType == AvatarType.Swat)
            {
                hp    = hp * Constant.SWAT_HP;
                maxHp = hp;
            }
            else if (avatarType == AvatarType.EnegyArmor)
            {
                hp    = hp * Constant.ENEGY_ARMOR_HP_BOOST;
                maxHp = hp;
            }


            gameCamera     = GameApp.GetInstance().GetGameScene().GetCamera();
            charController = playerObject.GetComponent <CharacterController>();   //! 控制器
            animation      = playerObject.GetComponent <UnityEngine.Animation>(); //! 动画器
            collider       = playerObject.GetComponent <Collider>();              //! 碰撞检测

            //! 音效
            audioPlayer = new AudioPlayer();
            Transform folderTrans = playerTransform.Find("Audio");

            audioPlayer.AddAudio(folderTrans, AudioName.GETITEM);
            audioPlayer.AddAudio(folderTrans, AudioName.DEAD);
            audioPlayer.AddAudio(folderTrans, AudioName.SWITCH);
            audioPlayer.AddAudio(folderTrans, AudioName.WALK);


            //! 为什么又初始化一边武器列表
            GameApp.GetInstance().GetGameState().InitWeapons();


            weaponList = GameApp.GetInstance().GetGameState().GetBattleWeapons();


            playerState = Player.IDLE_STATE;



            foreach (Weapon w in weaponList)
            {
                w.Init();
            }


            Weapon powerWeapon = null;
            float  maxDamage   = 0;

            foreach (Weapon w in weaponList)
            {
                if (maxDamage < w.Damage)
                {
                    maxDamage   = w.Damage;
                    powerWeapon = w;
                }

                //! if (w.IsSelectedForBattle)
                //! {
                //!     ChangeWeapon(w);
                //!     break;
                //! }
            }

            //! 切换武器
            ChangeWeapon(powerWeapon);


            walkSpeed = GameApp.GetInstance().GetGameConfig().playerConf.walkSpeed - weapon.GetSpeedDrag();  //! 人物速度 - 武器武器负重

            ChangeToNormalState();


            if (gameCamera.GetCameraType() == CameraType.TPSCamera)
            {
                inputController = new TPSInputController();
                inputController.Init();
            }
            else if (gameCamera.GetCameraType() == CameraType.TopWatchingCamera)
            {
                inputController = new TopWatchingInputController();
                inputController.Init();
            }


            UpdateNearestWayPoint();
        }
Пример #38
0
        public void CopyAvatars(string sourceFolder, AvatarType backgroundType, AvatarSizeType copyToNewSize)
        {
            _logger.LogInformation($"{nameof(MediaService)}.{nameof(CopyAvatars)}.Start");
            if (string.IsNullOrEmpty(sourceFolder))
            {
                throw new Exception("SourceUrl is null or empty");
            }
            var fullSourcePath = Path.Combine(_fileManager.GetAbsoluteMediaRootPath(), sourceFolder);
            var fullNewPath    = Path.Combine(_fileManager.GetAbsoluteMediaRootPath(),
                                              CreateAvatarPath(backgroundType, copyToNewSize));

            Size size;

            switch (copyToNewSize)
            {
            case AvatarSizeType.Original:
                size = null;
                break;

            case AvatarSizeType.Small:
                size = new SmallAvatarSizeFolder(null).Size;
                break;

            case AvatarSizeType.Large:
                size = new LargeAvatarSizeFolder(null).Size;
                break;

            default: throw new Exception("Such AvatarSizeType does not exist.");
            }

            var files = Directory.GetFiles(fullSourcePath);

            foreach (var file in files)
            {
                var fileName = Path.GetFileNameWithoutExtension(file);
                var ext      = Path.GetExtension(file);

                if (fileName.Contains("original"))
                {
                    fileName = fileName.Replace("original", copyToNewSize.ToString().ToLower());
                }
                else
                {
                    fileName = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10) + "_" +
                               copyToNewSize.ToString().ToLower();
                }
                var fullNewFilePath = Path.Combine(fullNewPath, fileName + ext);
                if (!File.Exists(fullNewFilePath))
                {
                    if (size == null)
                    {
                        CopyFile(file, fullNewFilePath);
                    }
                    else
                    {
                        ResizeImage(file, fullNewFilePath, size.Height, size.Width);
                    }
                }
            }
            _logger.LogInformation($"{nameof(MediaService)}.{nameof(CopyAvatars)}.End");
        }
Пример #39
0
 public LoadoutView(int loadoutId, int backpack, int boots, int cmid, int face, int functionalItem1, int functionalItem2, int functionalItem3, int gloves, int head, int lowerBody, int meleeWeapon, int quickItem1, int quickItem2, int quickItem3, AvatarType type, int upperBody, int weapon1, int weapon1Mod1, int weapon1Mod2, int weapon1Mod3, int weapon2, int weapon2Mod1, int weapon2Mod2, int weapon2Mod3, int weapon3, int weapon3Mod1, int weapon3Mod2, int weapon3Mod3, int webbing, string skinColor)
 {
     Backpack        = backpack;
     Boots           = boots;
     Cmid            = cmid;
     Face            = face;
     FunctionalItem1 = functionalItem1;
     FunctionalItem2 = functionalItem2;
     FunctionalItem3 = functionalItem3;
     Gloves          = gloves;
     Head            = head;
     LoadoutId       = loadoutId;
     LowerBody       = lowerBody;
     MeleeWeapon     = meleeWeapon;
     QuickItem1      = quickItem1;
     QuickItem2      = quickItem2;
     QuickItem3      = quickItem3;
     Type            = type;
     UpperBody       = upperBody;
     Weapon1         = weapon1;
     Weapon1Mod1     = weapon1Mod1;
     Weapon1Mod2     = weapon1Mod2;
     Weapon1Mod3     = weapon1Mod3;
     Weapon2         = weapon2;
     Weapon2Mod1     = weapon2Mod1;
     Weapon2Mod2     = weapon2Mod2;
     Weapon2Mod3     = weapon2Mod3;
     Weapon3         = weapon3;
     Weapon3Mod1     = weapon3Mod1;
     Weapon3Mod2     = weapon3Mod2;
     Weapon3Mod3     = weapon3Mod3;
     Webbing         = webbing;
     SkinColor       = skinColor;
 }
Пример #40
0
 /// <summary>
 /// Gets the URL of the provided customer's avatar photo. Defaults to the current backoffice owner if no CustomerID is provided.
 /// </summary>
 /// <param name="helper">The UrlHelper object</param>
 /// <param name="CustomerID">The customer ID of the desired avatar URL.</param>
 /// <returns>The avatar photo's URL.</returns>
 public static string Avatar(this UrlHelper helper, int customerID, AvatarType type, bool cache = true)
 {
     return(helper.Action("Avatar", "App", new { id = customerID, type = type, cache = cache }));
 }
		public void UpdateLayout(CGSize cellSize, AvatarType type)
		{
			nfloat scale = 0.592f;
			nfloat avatarDiameter = cellSize.Width * scale;
			nfloat strokeDiameter = avatarDiameter + 4;

			nfloat centerOffsetY = cellSize.Width / 2;
			avatarCenterY.Constant = centerOffsetY;
			strokeEmulatorCenterY.Constant = centerOffsetY;

			avatarWidth.Constant = avatarHeight.Constant = avatarDiameter;
			strokeEmulatorWidth.Constant = strokeEmulatorHeight.Constant = strokeDiameter;
			avatar.Layer.CornerRadius = avatarDiameter / 2;
			strokeEmulator.Layer.CornerRadius = strokeDiameter / 2;

			nickNameTopSpacing.Constant = cellSize.Width - 10;
			nickname.PreferredMaxLayoutWidth = cellSize.Width;

			strokeEmulator.Hidden = type != AvatarType.User;
		}