123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- namespace ET.Server
- {
-
-
-
- [ActorMessageHandler(SceneType.Game)]
- public class R2G_AddLevelHandler : AMActorHandler<Scene, R2G_AddLevel>
- {
- protected override async ETTask Run(Scene scene, R2G_AddLevel request)
- {
-
- Map map = scene.GetComponent<GameMapComponent>().GetMapByRoomId(request.RoomId);
- if (map == null)
- {
- Log.Debug($"未找到房间...roomId={request.RoomId}");
- return;
- }
-
- if (map.GetUnitTemplateId(request.OpenId) == 0)
- {
- Log.Debug($"未找到单位玩家数据...openId={request.OpenId}");
- return;
- }
-
- int totelLikes = 0;
-
- if (map.UnitPlayerLikes.TryGetValue(request.OpenId, out int likes))
- {
- totelLikes = likes + request.Likes;
- map.UnitPlayerLikes[request.OpenId] = totelLikes;
- }
- else
- {
- totelLikes = request.Likes;
- map.UnitPlayerLikes.Add(request.OpenId, totelLikes);
- }
- int initialLevel = 1;
- int maxLevel = 3;
- int level = initialLevel;
- int levelUpCount = totelLikes / 10;
-
- for (int i = 0; i < levelUpCount; i++)
- {
- level++;
-
- if (level > maxLevel)
- {
- level = maxLevel;
- break;
- }
- }
-
- int oldTemplateId = map.GetUnitTemplateId(request.OpenId);
- int newTemplateId = ((oldTemplateId / 10) * 10) + level;
- if (oldTemplateId != newTemplateId)
- {
-
- int curObjId = map.GetUnitObjId(request.OpenId);
-
- await map.RemovePointUnit(curObjId);
- string[] pos = map.GetCurXY().Split(";");
- Struct.MonsterUnit unit = new Struct.MonsterUnit();
- unit.id = newTemplateId;
- unit.force = 1;
- unit.x = int.Parse(pos[0]);
- unit.y = int.Parse(pos[1]);
- unit.autoGuard = true;
- curObjId = await map.AddUnits(unit, true);
- map.AddUnitObjId(request.OpenId, curObjId);
- map.AddUnitPlayer(request.OpenId, newTemplateId);
- }
- await ETTask.CompletedTask;
- }
- }
- }
|