📄 business.cs
字号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using Utility;
using System.Data.Linq;
using System.Linq.Expressions;
namespace KillingManager
{
public static class Business
{
#region Logon
public static void NewServer()
{
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
var onlinePlayers = from p in db.Users
where p.IsOnline == (int)IsOnlineFlag.Online
select p;
foreach (var user in onlinePlayers)
{
user.IsOnline = (int)IsOnlineFlag.Offline;
}
db.SubmitChanges();
}
}
public static bool Logon(User user)
{
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
if (db.Users.Where(p => p.UserID == user.UserID).Count() <= 0)
{
if (user.Password != null && user.Password != string.Empty)
{
user.PlayNum = 0;
user.IsOnline = (int)IsOnlineFlag.Online;
user.WinNum = 0;
db.Users.InsertOnSubmit(user);
db.SubmitChanges();
}
}
else
{
var q = db.Users.Where(p => p.UserID == user.UserID
&& p.Password == user.Password);
if (q.Count() == 1)
{
User u = q.Single();
if (u.IsOnline == (int)IsOnlineFlag.Online)
{
//player.IsOnline = 2;
//throw new Exception("Error, you already logon !!");
u.IP = user.IP;
db.SubmitChanges();
}
else
{
u.IsOnline = (int)IsOnlineFlag.Online;
u.IP = user.IP;
//p.PlayNum += 1;
db.SubmitChanges();
}
}
else
{
throw new Exception("Error password!!");
}
}
}
return true;
}
public static void Logoff(User player)
{
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
var u = db.Users.Single(p1 => p1.UserID == player.UserID);
if (u.IsOnline == (int)IsOnlineFlag.Online)
{
u.IsOnline = (int)IsOnlineFlag.Offline;
u.PlayNum += 1;
db.SubmitChanges();
}
}
}
public static void AllLogoff()
{
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
var u = from p in db.Users
where p.IsOnline == (int)IsOnlineFlag.Online
select p;
foreach (var item in u)
{
item.IsOnline = (int)IsOnlineFlag.Offline;
item.PlayNum += 1;
}
db.SubmitChanges();
}
}
#endregion
#region NewGame
public static Game CreateNewGame(User user, ref Player player)
{
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
Game game = new Game();
game.StartTime = DateTime.Now;
player = new Player();
player.Game = game;
player.UserID = user.UserID;
player.RoleID = (int)RoleFlag.Killer;
player.IsActive = (int)IsActiveFlag.Active;
db.Games.InsertOnSubmit(game);
db.Players.InsertOnSubmit(player);
db.SubmitChanges();
return game;
}
}
public static Game CreateNewGame()
{
//TODO:
//CreateGame
//Set everone's role
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
User p = db.Users.Where(c => c.IsOnline == (int)IsOnlineFlag.Online)
.First();
Player pInGame = new Player();
Game game = CreateNewGame(p, ref pInGame);
var q = db.Users.Where(c => c.IsOnline == (int)IsOnlineFlag.Online);
RoleFlag role = RoleFlag.Civilian;
foreach (var u in q)
{
if (!object.ReferenceEquals(p, u))
{
JoinOneGame(u, game, role);
}
}
return game;
}
}
/// <summary>
/// Join one game
/// </summary>
/// <param name="player"></param>
/// <param name="game"></param>
/// <returns></returns>
public static Player JoinOneGame(User user, Game game, RoleFlag role)
{
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
Player p = new Player();
p.GameNo = game.GameNo;
p.UserID = user.UserID;
p.RoleID = (int)role;
p.IsActive = (int)IsActiveFlag.Active;
db.Players.InsertOnSubmit(p);
db.SubmitChanges();
return p;
}
}
#endregion
#region Activity
public static Activity CreateNewActivity(Game game)
{
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
int count = db.Activities.Where(a => a.GameNo == game.GameNo).Count();
int typeID;
if (count == 0)
{
typeID = (int)ActivityTypeFlag.Vote;
}
else
{
typeID = db.Activities.Where(c => c.ActivityNo ==
db.Activities.Where(d => d.GameNo == game.GameNo).Max(a => a.ActivityNo))
.Select(c => c.ActivityTypeID).Single();
typeID = NextActivity(typeID);
}
Activity activity = new Activity();
activity.GameNo = game.GameNo;
activity.ActivityTypeID = typeID;
activity.RoundCount = 1;
db.Activities.InsertOnSubmit(activity);
db.SubmitChanges();
return activity;
}
}
private static int NextActivity(int typeID)
{
int returnTypeID;
switch (typeID)
{
case (int)ActivityTypeFlag.Vote:
returnTypeID = (int)ActivityTypeFlag.Kill;
break;
case (int)ActivityTypeFlag.Kill:
returnTypeID = (int)ActivityTypeFlag.Vote;
break;
default:
returnTypeID = (int)ActivityTypeFlag.Vote;
break;
}
return returnTypeID;
}
#endregion
#region Vote
public static List<PlayerEntity> Vote(Vote vote, Activity activity)
{
using (DataMappingDataContext db = new DataMappingDataContext(true))
{
if (db.Votes.Where(v => v.ActivityNo == vote.ActivityNo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -