예제 #1
0
    //发起创建敌人的请求
    public void SendCreateEnemy(CreateEnemyModel model)
    {
        Dictionary <byte, object> parameters = new Dictionary <byte, object>();

        ParameterTool.AddParmeter(parameters, ParameterCode.CreateEnemyModel, model);
        PhotonEngine.Instance.SendRequest(OpCode, SubCode.CreateEnemy, parameters);
    }
예제 #2
0
    public override void OnEvent(EventData eventData)
    {
        SubCode subcode = ParameterTool.GetSubcode(eventData.Parameters);

        switch (subcode)
        {
        case SubCode.CreateEnemy:
            CreateEnemyModel model = ParameterTool.GetParameter <CreateEnemyModel>(eventData.Parameters,
                                                                                   ParameterCode.CreateEnemyModel);
            if (OnCreateEnemy != null)
            {
                OnCreateEnemy(model);
            }
            break;

        case SubCode.SyncPositionAndRotation:
            EnemyPositionModel model1 = ParameterTool.GetParameter <EnemyPositionModel>(eventData.Parameters,
                                                                                        ParameterCode.EnemyPositionModel);
            if (OnSyncEnemyPositionAndRotation != null)
            {
                OnSyncEnemyPositionAndRotation(model1);
            }
            break;

        case SubCode.SyncAnimation:
            EnemyAnimationModel model2 = ParameterTool.GetParameter <EnemyAnimationModel>(eventData.Parameters,
                                                                                          ParameterCode.EnemyAnimationModel);
            if (OnSyncEnemyAnimation != null)
            {
                OnSyncEnemyAnimation(model2);
            }
            break;
        }
    }
예제 #3
0
    public override void OnEvent(EventData eventData)
    {
        SubCode subCode = ParameterTool.GetParameters <SubCode>(eventData.Parameters, ParameterCode.SubCode, false);

        switch (subCode)
        {
        case SubCode.CreateEnemy:
            //Debug.Log("Get the response from server..");
            CreateEnemyModel model = ParameterTool.GetParameters <CreateEnemyModel>(eventData.Parameters, ParameterCode.CreateEnemyModel);
            if (OnCreateEnemy != null)
            {
                OnCreateEnemy(model);
            }
            break;

        case SubCode.AsyncPostionAndEularAngler:
            EnemyPostionModel enemyPosmodel = ParameterTool.GetParameters <EnemyPostionModel>(eventData.Parameters, ParameterCode.EnemyPostionModel);
            if (OnAsyncEnemyPostionRotation != null)
            {
                OnAsyncEnemyPostionRotation(enemyPosmodel);
            }
            break;

        case SubCode.SyncEnemyAnimation:
            EnemyAnimationModel enemyAnimmodel = ParameterTool.GetParameters <EnemyAnimationModel>(eventData.Parameters, ParameterCode.EnemyAnimationModel);
            if (OnSyncEnemyAnimation != null)
            {
                OnSyncEnemyAnimation(enemyAnimmodel);
            }
            break;
        }
    }
예제 #4
0
        public LogModel Walk(CreateCharacterModel character, ICollection <CharacterItem> charInventory)
        {
            Random random = new Random();
            int    roll   = random.Next(100);

            if (character.HP <= character.HPMax / 2)
            {
                if (charInventory.FirstOrDefault(x => x.Id == 17) != default)
                {
                    return(Heal(character, charInventory));
                }
            }

            if (roll < 20 && enemy != null)
            {
                return(Pick(character));
            }
            else
            {
                int enemyId = random.Next(_EnemyRepository.Get().Last().Id + 1);
                if (enemyId == 2)
                {
                    enemyId--;
                }
                if (enemyId == 0)
                {
                    enemyId++;
                }
                var EnemyTemp = _EnemyRepository.Get().FirstOrDefault(u => u.Id == enemyId);
                enemyInventory = _enemyInventoryRepository.Get().FirstOrDefault(u => u.Id == enemyId).EnemyItems;
                enemy          = new CreateEnemyModel()
                {
                    ArmorClass  = EnemyTemp.ArmorClass,
                    ExpGained   = EnemyTemp.ExpGained,
                    HP          = EnemyTemp.HP,
                    HPMax       = EnemyTemp.HPMax,
                    Intitiative = EnemyTemp.Intitiative,
                    Name        = EnemyTemp.Name,
                    IsBoss      = EnemyTemp.IsBoss,
                    Speed       = EnemyTemp.Speed
                };
                enemyLooted          = false;
                character.isFighting = true;

                logModel.enemyName    = enemy.Name;
                logModel.enemyMaxHP   = enemy.HPMax;
                logModel.enemyHP      = enemy.HP;
                logModel.Looted       = false;
                logModel.enemyCreated = true;
                logModel.returnModel  = character.Name + " meet " + enemy.Name + " and he look realy agressive";
            }
            return(logModel);
        }
예제 #5
0
    IEnumerator SpawnEnemy()
    {
        yield return(new WaitForSeconds(time));

        //发送消息 让其他客户端产生敌人 ,包括数量和类型
        foreach (GameObject go in enemyPrefabs)
        {
            List <CreateEnemyProperty> propertylist = new List <CreateEnemyProperty>();
            foreach (Transform t in spawnPosArray)
            {
                GameObject temp         = GameObject.Instantiate(go, t.position, Quaternion.identity) as GameObject;
                string     guidStr      = Guid.NewGuid().ToString();       //guidStr=GUID
                int        targetRoleId = GameController.Instance.GetRandomRoleID();
                if (temp.GetComponent <Enemy>() != null)
                {
                    Enemy enemy = temp.GetComponent <Enemy>();
                    enemy.guid = guidStr;                                //为每一个新生产的敌人创建一个GUID
                    //temp.GetComponent<Enemy>().enabled = true;
                    enemy.targetRoleId = targetRoleId;
                }
                else
                {
                    BossOrc bossOrc = temp.GetComponent <BossOrc>();
                    bossOrc.guid         = guidStr;                     //为新生产的Boss敌人创建一个GUID
                    bossOrc.targetRoleId = targetRoleId;
                }

                CreateEnemyProperty property = new CreateEnemyProperty()
                {
                    guid         = guidStr,
                    position     = new Vector3Obj(t.position),
                    prefabName   = go.name,
                    targetRoleID = targetRoleId
                };
                propertylist.Add(property);
            }
            if (GameController.Instance.battleType == BattleType.Team && GameController.Instance.isMaster)
            {
                CreateEnemyModel model = new CreateEnemyModel()
                {
                    List = propertylist
                };
                enemyController.SendCreateEnemy(model);
            }
            yield return(new WaitForSeconds(repeateRate));
        }
    }
예제 #6
0
 private void OnCreateEnemy(CreateEnemyModel model) {
     foreach(CreateEnemyProperty propety in model.list)
     {
         GameObject enemyPrefab = Resources.Load<GameObject>("enemy/" + propety.PrefabName);
         GameObject go=GameObject.Instantiate(enemyPrefab, propety.Postion.ToVector3(), Quaternion.identity) as GameObject;
         if (go.GetComponent<Enemy>() != null)
         { 
             go.GetComponent<Enemy>().guid = propety.GUID;
         }
         else if (go.GetComponent<Boss>() != null)
         {
             go.GetComponent<Boss>().guid = propety.GUID;
         }
         //TranscriptManager._instance.enemyList.Add(go);//使得角色可以对敌人进行攻击
         AddEnemy(go);
     }
 }
예제 #7
0
 private void OnCreateEnemy(CreateEnemyModel model)
 {
     foreach (CreateEnemyProperty propety in model.list)
     {
         GameObject enemyPrefab = Resources.Load <GameObject>("enemy/" + propety.PrefabName);
         GameObject go          = GameObject.Instantiate(enemyPrefab, propety.Postion.ToVector3(), Quaternion.identity) as GameObject;
         if (go.GetComponent <Enemy>() != null)
         {
             go.GetComponent <Enemy>().guid = propety.GUID;
         }
         else if (go.GetComponent <Boss>() != null)
         {
             go.GetComponent <Boss>().guid = propety.GUID;
         }
         //TranscriptManager._instance.enemyList.Add(go);//使得角色可以对敌人进行攻击
         AddEnemy(go);
     }
 }
예제 #8
0
	IEnumerator SpawnEnemy()
	{
		yield return new WaitForSeconds(time);
        //发送消息,让其他客户端产生相应的敌人(位置,敌人类型)
		foreach(GameObject go in enemyPrefabs)
		{
            List<CreateEnemyProperty> propertylist = new List<CreateEnemyProperty>( );
			foreach(Transform t in spawnPosArray)
			{
			 	GameObject temp = GameObject.Instantiate(go,t.position,Quaternion.identity) as GameObject;
			    string GUID = Guid.NewGuid().ToString();
                int targetRoleId = GameController.Instance.GetRandomRoleID();
			    if (temp.GetComponent<Enemy>() != null)
			    {
			        Enemy enemy = temp.GetComponent<Enemy>();
			        enemy.guid = GUID; //为每一个新生成的敌人创建一个GUID
			        enemy.targetRoleId =targetRoleId ;
			    }
			    else
			    {
                    Boss boss = temp.GetComponent<Boss>();		       
                    boss.guid = GUID;
                    boss.targetRoleId = targetRoleId;

			    }
               
			    CreateEnemyProperty property = new CreateEnemyProperty()
                {
                    guid = GUID,
                    position = new Vector3Obj(t.position),
                    prefabName = go.name,
                    targetRoleID = targetRoleId
                };
                propertylist.Add(property);
			}

		    if (GameController.Instance.battleType == BattleType.Team && GameController.Instance.isMaster)
		    {
                CreateEnemyModel model = new CreateEnemyModel(){list = propertylist};
                enemyController.SendCreateEnemy(model);
		    }
		    yield return new WaitForSeconds(repeateRate);
		}
	}
예제 #9
0
 public void OnCreateEnemy(CreateEnemyModel model)
 {
     foreach (CreateEnemyProperty property in model.list)
     {
         GameObject enemyPrefab = Resources.Load("enemy/" + property.prefabName) as GameObject;
         GameObject go          = GameObject.Instantiate(enemyPrefab, property.position.ToVector3(), Quaternion.identity) as GameObject;
         Enemy      enemy       = go.GetComponent <Enemy>();
         if (enemy != null)
         {
             enemy.guid         = property.guid;
             enemy.targetRoleId = property.targetRoleID;
         }
         else
         {
             Boss boss = go.GetComponent <Boss>();
             boss.guid         = property.guid;
             boss.targetRoleId = property.targetRoleID;
         }
     }
 }
예제 #10
0
    public void OnCreateEnemy(CreateEnemyModel model)
    {
        foreach (CreateEnemyProperty property in model.list)
        {
            GameObject enemyPrefab = Resources.Load("enemy/" + property.prefabName) as  GameObject;
            GameObject go = GameObject.Instantiate(enemyPrefab, property.position.ToVector3(), Quaternion.identity) as GameObject;
            Enemy enemy = go.GetComponent<Enemy>();
            if (enemy != null)
            {
                enemy.guid = property.guid;
                enemy.targetRoleId = property.targetRoleID;
            }
            else
            {
                Boss boss = go.GetComponent<Boss>();
                boss.guid = property.guid;
                boss.targetRoleId = property.targetRoleID;
            }

        }
    }
예제 #11
0
    IEnumerator SpawnEnemy()
    {
        yield return(new WaitForSeconds(time));

        foreach (GameObject go in enemyPrefabs)
        {
            List <CreateEnemyProperty> list = new List <CreateEnemyProperty>();
            foreach (Transform t in spawnPoint)
            {
                GameObject enemy = GameObject.Instantiate(go, t.position, Quaternion.identity) as GameObject;
                string     guid  = Guid.NewGuid().ToString();
                if (enemy.GetComponent <Enemy>() != null)
                {
                    enemy.GetComponent <Enemy>().guid = guid;
                }
                else if (enemy.GetComponent <Boss>() != null)
                {
                    enemy.GetComponent <Boss>().guid = guid;
                }
                CreateEnemyProperty enemyProperty = new CreateEnemyProperty()
                {
                    GUID       = guid,
                    PrefabName = go.name,
                    Postion    = new Vector3Obj(t.position)
                };
                list.Add(enemyProperty);
                TranscriptManager._instance.AddEnemy(enemy);
                yield return(new WaitForSeconds(repeateTime));
            }
            if (GameManger._instance.battleType == BattleType.Team && GameManger._instance.isMaster)
            {
                Debug.Log("this is master");
                CreateEnemyModel model = new CreateEnemyModel();
                model.list = list;
                enemyController.SendCreateEnemy(model);
            }
        }
        yield return(new WaitForSeconds(repeateTime));
    }
예제 #12
0
 IEnumerator SpawnEnemy()
 {
     yield return new WaitForSeconds(time);
     foreach(GameObject go in enemyPrefabs)
     {
         List<CreateEnemyProperty> list = new List<CreateEnemyProperty>();
         foreach(Transform t in spawnPoint)
         {
             GameObject enemy=GameObject.Instantiate(go, t.position, Quaternion.identity) as GameObject;
             string guid = Guid.NewGuid().ToString();
             if (enemy.GetComponent<Enemy>() != null)
             {
                 enemy.GetComponent<Enemy>().guid = guid;
             }
             else if (enemy.GetComponent<Boss>() != null)
             {
                 enemy.GetComponent<Boss>().guid = guid;
             }
             CreateEnemyProperty enemyProperty = new CreateEnemyProperty() {
                 GUID = guid,
                 PrefabName = go.name, 
                 Postion = new Vector3Obj(t.position)
             };
             list.Add(enemyProperty);
             TranscriptManager._instance.AddEnemy(enemy);
             yield return new WaitForSeconds(repeateTime);
         }
         if(GameManger._instance.battleType==BattleType.Team && GameManger._instance.isMaster)
         {
             Debug.Log("this is master");
             CreateEnemyModel model = new CreateEnemyModel();
             model.list = list;
             enemyController.SendCreateEnemy(model);
         }
     }
     yield return new WaitForSeconds(repeateTime);
 }
예제 #13
0
 //发起创建敌人的请求
 public void SendCreateEnemy(CreateEnemyModel model)
 {
     Dictionary<byte,object> parameters = new Dictionary<byte, object>();
     ParameterTool.AddParameter(parameters,ParameterCode.CreateEnemyModel, model);
     PhotonEngine.Instance.SendRequest(OpCode,SubCode.CreateEnemy,parameters);
 }