/// <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();
 }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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;
                }
            }
        }
Ejemplo n.º 10
0
        /// <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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        /// <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);
        }
Ejemplo n.º 13
0
 public static bool CheckTimeAndProcess(object sender, CheckpointArgs args) =>
 args.UpdateParm >= 100 || SimulatorTimer.GameTimeNow >= args.CheckTime;
Ejemplo n.º 14
0
 public static void EndSales(SimulatorBase sender, CheckpointArgs args)
 {
 }
Ejemplo n.º 15
0
 public static bool CheckSalesEnd(SimulatorBase sender, CheckpointArgs args) => false;
Ejemplo n.º 16
0
 public static bool CheckMaintenance(SimulatorBase sender, CheckpointArgs args) => SimulatorTimer.GameTimeNow.Day == 1;
Ejemplo n.º 17
0
 public static void MaintenanceUpdate(SimulatorBase sender, CheckpointArgs args)
 {
 }