/// <summary> /// 上班 /// </summary> public static void StartWork(SimulatorBase sender, CheckpointArgs args) { ((Staff)sender).IsWorking = true; StaffSQLController.CheckSql((Staff)sender, true); Debug.WriteLine(((Staff)sender).StaffName + "上班!"); SimulatorTimer.SpeedSetNormal(); }
public static void UpdateSales(SimulatorBase sender, CheckpointArgs args) { var game = (Game)sender; int tmpSales = (int)((game.GameArt + game.GameMusic) * game.GameFun * 0.1 * Math.Abs(1 / (SimulatorTimer.GameTimeNow - game.GameFinishDevelopTime).TotalDays)); game.GameSales += tmpSales; game.GameStudioObject.StudioProperty += game.GamePrice * tmpSales; }
/// <summary> /// 查看是否上班 /// </summary> public static bool CheckStartWork(SimulatorBase sender, CheckpointArgs args) { var staff = (Staff)sender; // Debug.WriteLine(staff.StaffCurStrength); return(!staff.IsWorking && staff.IsWeekday() && staff.StaffCurStrength > 10 && staff.IsInWorkTime()); }
/// <summary> /// 开发更新 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public static void UpdateDevelop(SimulatorBase sender, CheckpointArgs args) { var game = (Game)sender; game._developmentProcess = args.UpdateParm; float artCapability = (from developer in game.Developers where developer.IsWorking && developer.StaffOccupation == Occupation.Artist select developer.StaffIntelligence).Aggregate(0, (current, s) => current + s) / 100f; float musicCapability = (from developer in game.Developers where developer.IsWorking && developer.StaffOccupation == Occupation.Musician select developer.StaffIntelligence).Aggregate(0, (current, s) => current + s) / 100f; float funCapability = (from developer in game.Developers where developer.IsWorking && developer.StaffOccupation == Occupation.Designer select developer.StaffIntelligence).Aggregate(0, (current, s) => current + s) / 100f; float programCapability = (from developer in game.Developers where developer.IsWorking && developer.StaffOccupation == Occupation.Programmer select developer.StaffIntelligence).Aggregate(0, (current, s) => current + s) / 100f; float controlCapability = (from developer in game.Developers where developer.IsWorking && developer.StaffOccupation == Occupation.Producer select developer.StaffIntelligence).Aggregate(0, (current, s) => current + s) / 100f; game.GameArt = (int)(((float)game.GameArt) + artCapability * (1 + controlCapability) * (1 + programCapability * 0.7)); game.GameMusic = (int)(((float)game.GameMusic) + musicCapability * (1 + controlCapability) * (1 + programCapability * 0.7)); game.GameFun = (int)(((float)game.GameFun) + funCapability * (1 + controlCapability) * (1 + programCapability * 0.7)); args.ArtParm = game.GameArt; args.MusicParm = game.GameMusic; args.FunParm = game.GameFun; Debug.WriteLine(game.GameName + " Processing:" + args.UpdateParm + "%. In " + SimulatorTimer.GameTimeNow); Debug.WriteLine(game.GameName + " ArtParm:" + args.ArtParm + ". In " + SimulatorTimer.GameTimeNow); Debug.WriteLine(game.GameName + " GameArt:" + game.GameArt + ". In " + SimulatorTimer.GameTimeNow); Debug.WriteLine(game.GameName + " GameArt Temp:" + (int)(((float)game.GameFun + funCapability) * (1 + controlCapability) * (0.5f + programCapability)) + ". In " + SimulatorTimer.GameTimeNow); Debug.WriteLine(game.GameName + " GameArt Capability:" + artCapability + ". In " + SimulatorTimer.GameTimeNow); args.UpdateParm += args.UpdateSpeed; //支付开发经费 int cost = (from gameDeveloper in game.Developers select gameDeveloper.StaffSalary).Aggregate(0, (current, s) => current + s); game.GameStudioObject.ChangeProperty(-cost / 10); UpdateDevelopEvent?.Invoke(sender, args); }
public static void SettleMaintenance(SimulatorBase sender, CheckpointArgs args) { Studio studio = (Studio)sender; var cost = (from staff in studio.StudioStaffs select staff.StaffSalary).Aggregate(0, (current, s) => current + s); studio.ChangeProperty(-cost); Debug.WriteLine("已扣维护费 ¥" + cost); }
/// <summary> /// 查看是否下班 /// </summary> public static bool CheckQuitWork(SimulatorBase sender, CheckpointArgs args) { var staff = (Staff)sender; return(staff.IsWorking && ( staff.StaffCurStrength <= 0 || staff.IsWeekday() && !staff.IsInWorkTime() )); }
/// <summary> /// 下班 /// </summary> public static void QuitWork(SimulatorBase sender, CheckpointArgs args) { var staff = (Staff)sender; staff.IsWorking = false; StaffSQLController.CheckSql(staff, false); Debug.WriteLine(((Staff)sender).StaffName + "下班!"); if (staff.StaffStudioObject.FindWorkingStaffs().Count == 0) { SimulatorTimer.SpeedSetQuick(); } }
public static void WorkUpdate(SimulatorBase sender, CheckpointArgs args) { var staff = (Staff)sender; if (staff.IsWorking && staff.StaffCurStrength > 0) { staff.StaffCurStrength -= 1 * SimulatorTimer.TimeSpeed; if (staff.StaffCurStrength < 0) { staff.StaffCurStrength = 0; } } }
public static void QuitUpdate(SimulatorBase sender, CheckpointArgs args) { var staff = (Staff)sender; if (!staff.IsWorking && staff.StaffCurStrength < staff.StaffStrength) { staff.StaffCurStrength += 1 * SimulatorTimer.TimeSpeed; if (staff.StaffCurStrength > staff.StaffStrength) { staff.StaffCurStrength = staff.StaffStrength; } } }
/// <summary> /// 开发结束 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public static void EndDevelop(SimulatorBase sender, CheckpointArgs args) { var game = (Game)sender; game.GameIsDeveloping = false; game.GameStudioObject.AddDevelopedGame(game); game.GameStudioObject.RemoveDevelopingGame(game); game.GameFinishDevelopTime = SimulatorTimer.GameTimeNow; game.UpdateSql(); game.StartSales(); // GameSQLController.UpdateGameInfoSql(GameSQLController.ReadGameInfoSql(game.GameNumber), game); Debug.WriteLine(game.GameName + " Game FINISHED!"); EndDevelopEvent?.Invoke(sender, args); }
public void StartSales() { var arg = new CheckpointArgs(); arg.CheckTime = SimulatorTimer.GameTimeNow; var cp = new Checkpoint.Checkpoint(this.GameNumber, SimulatorTimer.GameTimeNow, new[] { "EndSales" }, new[] { "UpdateSales" }, "CheckSalesEnd", this, arg, GetTypeName(), true, true ); SimulatorTimer.AddCheckpoint(cp); }
/// <summary> /// 默认开发时间 /// </summary> // private static int _developingTime = 800; /// <summary> /// 开始开发 /// </summary> /// <param name="hours">开发时长</param> /// <param name="studio">开发工作室</param> public void StartDevelop(int hours) { var arg = new CheckpointArgs(); arg.CheckParm = hours; arg.UpdateParm = 0f; arg.UpdateSpeed = 100f / (hours * 3); arg.CheckTime = SimulatorTimer.GetTimeAfterHours(hours); ControllerBase.InsertInfoSql(this); this.GameStudioObject.AddDevelopingGame(this); var cp = new Checkpoint.Checkpoint(this.GameNumber, SimulatorTimer.GetTimeAfterHours(hours), new[] { "EndDevelop" }, new[] { "UpdateDevelop" }, "CheckTimeAndProcess", this, arg, GetTypeName() ); SimulatorTimer.AddCheckpoint(cp); }
public static bool CheckTimeAndProcess(object sender, CheckpointArgs args) => args.UpdateParm >= 100 || SimulatorTimer.GameTimeNow >= args.CheckTime;
public static void EndSales(SimulatorBase sender, CheckpointArgs args) { }
public static bool CheckSalesEnd(SimulatorBase sender, CheckpointArgs args) => false;
public static bool CheckMaintenance(SimulatorBase sender, CheckpointArgs args) => SimulatorTimer.GameTimeNow.Day == 1;
public static void MaintenanceUpdate(SimulatorBase sender, CheckpointArgs args) { }