Example #1
0
        public async Task Process(JoinFactionRequest joinFaction)
        {
            var db  = new ZkDataContext();
            var acc = db.Accounts.Find(User.AccountID);
            var fac = db.Factions.First(x => !x.IsDeleted && x.Shortcut == joinFaction.Faction);

            if (acc.FactionID == null)
            {
                if (acc.Clan != null && acc.Clan.FactionID == null) // if your clan is faction-less join the faciton too
                {
                    acc.Clan.FactionID = fac.FactionID;
                    foreach (Account member in acc.Clan.Accounts)
                    {
                        member.FactionID = fac.FactionID;
                    }
                    db.SaveChanges();
                    db.Events.InsertOnSubmit(server.PlanetWarsEventCreator.CreateEvent("Clan {0} moved to faction {1}", acc.Clan, fac));
                }
                acc.FactionID = fac.FactionID;
            }
            db.SaveChanges();
            db.Events.InsertOnSubmit(server.PlanetWarsEventCreator.CreateEvent("{0} joins {1}", acc, fac));
            db.SaveChanges();
            await server.PublishAccountUpdate(acc);

            await server.PublishUserProfileUpdate(acc);
        }
Example #2
0
        public async Task Process(LinkSteam linkSteam)
        {
            await Task.Delay(2000); // steam is slow to get the ticket from client .. wont verify if its checked too soon

            var steamID = state.SteamWebApi.WebValidateAuthToken(linkSteam.Token);
            var info    = state.SteamWebApi.WebGetPlayerInfo(steamID);

            using (var db = new ZkDataContext())
            {
                var acc = await db.Accounts.FindAsync(User.AccountID);

                acc.SteamID   = steamID;
                acc.SteamName = info.personaname;
                await db.SaveChangesAsync();

                await state.PublishAccountUpdate(acc);
            }
        }