Fulqrum Publishing Home   |   Register   |   Today Posts   |   Members   |   UserCP   |   Calendar   |   Search   |   FAQ

Go Back   Official Fulqrum Publishing forum > Fulqrum Publishing > IL-2 Sturmovik: Cliffs of Dover > FMB, Mission & Campaign builder Discussions

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #11  
Old 10-25-2012, 01:16 PM
FG28_Kodiak FG28_Kodiak is offline
Approved Member
 
Join Date: Dec 2009
Location: Swabia->Bavaria->Germany
Posts: 884
Default

Update: Labels working now
Updated Update: Not in Multiplayer

My testscript use the Missionmenu to create the Labels:
Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
using maddox.GP;


public class Mission : AMission
{

    class Recon
    {
        public Player ReconPlayer { get; internal set; }
        public List<GPUserLabel> Labels = new List<GPUserLabel>();
    
    
        public Recon(Player player, GPUserLabel userLabel)
        {
            ReconPlayer = player;
            if (userLabel != null)
            {
                Labels.Add(userLabel);
            }
        }
    }


    List<Recon> ActiveRecons = new List<Recon>();


    public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
    {
        base.OnPlaceEnter(player, actor, placeIndex);

        SetMainMenu(player);

    }


    enum MenuID
    {
        MainMenu,
        ReconMenu,
    }


    
    public void SetMainMenu(Player player)
    {
        GamePlay.gpSetOrderMissionMenu(player, false, (int)MenuID.MainMenu, new string[] { "Recon" }, new bool[] { true });
    }


    public void SetReconMenu(Player player)
    {
        GamePlay.gpSetOrderMissionMenu(player, true, (int)MenuID.ReconMenu, new string[] { "Set AAA Mark", "Set Tank Mark", "Set Plane Mark", "Set Factory Mark", "Set Car Mark", "Set Label", "Set Ship Mark", "Set WayPoint Mark", "Delete Marks" }, new bool[] { false, false, false, false, false, false, false, false, false });
    }




    public override void OnOrderMissionMenuSelected(Player player, int ID, int menuItemIndex)
    {
        base.OnOrderMissionMenuSelected(player, ID, menuItemIndex);

        if (ID == 0)
        {
            // main menu
            if (menuItemIndex == 1)
            {
                SetReconMenu(player);
            }
            else
            {
                SetMainMenu(player);
            }
        }
        else if (ID == (int)MenuID.ReconMenu)
        {

            switch (menuItemIndex)
            {
                case 1:
                    AddReconMark(player, GPUserIconType.AAGun);
                    SetMainMenu(player);
                    break;
                case 2:
                    AddReconMark(player, GPUserIconType.Tank);
                    SetMainMenu(player);
                    break;
                case 3:
                    AddReconMark(player, GPUserIconType.Plane);
                    SetMainMenu(player);
                    break;
                case 4:
                    AddReconMark(player, GPUserIconType.Factory);
                    SetMainMenu(player);
                    break;
                case 5:
                    AddReconMark(player, GPUserIconType.Car);
                    SetMainMenu(player);
                    break;
                case 6:
                    AddReconMark(player, GPUserIconType.Label);
                    SetMainMenu(player);
                    break;
                case 7:
                    AddReconMark(player, GPUserIconType.Ship);
                    SetMainMenu(player);
                    break;
                case 8:
                    AddReconMark(player, GPUserIconType.Waypoint);
                    SetMainMenu(player);
                    break;
                case 9:
                    RemoveMarks(player);
                    SetMainMenu(player);
                    break;
                default:
                    SetMainMenu(player);
                    break;
            }
        }
    }


    private void RemoveMarks(Player player)
    {
        if (ActiveRecons.Exists(item => item.ReconPlayer == player))
        {
            Recon recon = ActiveRecons.Find(item => item.ReconPlayer == player);
            recon.Labels.ForEach(item => GamePlay.gpDeleteUserLabel(item));
            recon.Labels.Clear();
        }
        
    }


    private void AddReconMark(Player player, GPUserIconType iconType)
    {
        AiActor actor = player.Place();
        GPUserLabel newLable =null;

        if (actor != null)
        {
            Point2d pos = new Point2d(actor.Pos().x, actor.Pos().y);

            switch (iconType)
            {
                case GPUserIconType.AAGun:
                    newLable = GamePlay.gpMakeUserLabel(pos, player, "AAA", GamePlay.gpTimeofDay(), (int)GPUserIconType.AAGun);
                    break;
                case GPUserIconType.Tank:
                    newLable = GamePlay.gpMakeUserLabel(pos, player, "Tanks", GamePlay.gpTimeofDay(), (int)GPUserIconType.Tank);
                    break;
                case GPUserIconType.Plane:
                    newLable = GamePlay.gpMakeUserLabel(pos, player, "Planes", GamePlay.gpTimeofDay(), (int)GPUserIconType.Plane);
                    break;
                case GPUserIconType.Factory:
                    newLable = GamePlay.gpMakeUserLabel(pos, player, "Factory", GamePlay.gpTimeofDay(), (int)GPUserIconType.Factory);
                    break;
                case GPUserIconType.Car:
                    newLable = GamePlay.gpMakeUserLabel(pos, player, "Car", GamePlay.gpTimeofDay(), (int)GPUserIconType.Car);
                    break;
                case GPUserIconType.Label:
                    newLable = GamePlay.gpMakeUserLabel(pos, player, "Label", GamePlay.gpTimeofDay(), (int)GPUserIconType.Label);
                    break;
                case GPUserIconType.Ship:
                    newLable = GamePlay.gpMakeUserLabel(pos, player, "Ship", GamePlay.gpTimeofDay(), (int)GPUserIconType.Ship);
                    break;
                case GPUserIconType.Waypoint:
                    newLable = GamePlay.gpMakeUserLabel(pos, player, "Waypoint", GamePlay.gpTimeofDay(), (int)GPUserIconType.Waypoint);
                    break;
            }


            if (newLable != null)
            {
                if (ActiveRecons.Exists(item => item.ReconPlayer == player))
                    ActiveRecons.Find(item => item.ReconPlayer == player).Labels.Add(newLable);
                else
                    ActiveRecons.Add(new Recon (player, newLable));
                

                GamePlay.gpDrawUserLabel(player.Army(), newLable);

            }
        }
    }



    static string CreateTimeString(double num)
    {
        double hours = Math.Floor(num);
        double minutes = (num - hours) * 60.0;
        double seconds = (minutes - Math.Floor(minutes)) * 60.0;
        int H = (int)Math.Floor(hours);
        int M = (int)Math.Floor(minutes);
        int S = (int)Math.Floor(seconds);
        return H.ToString("00") + ":" + M.ToString("00") + ":" + S.ToString("00");
    }


    public override void OnUserCreateUserLabel(GPUserLabel ul)
    {
        base.OnUserCreateUserLabel(ul);

        GamePlay.gpLogServer(null, "OnUserCreateUserLabel: {0} created {1} Mark at {2} ", new object[] { ul.Player.Name(), ul.Text, CreateTimeString(ul.time) });

    }
}

Last edited by FG28_Kodiak; 10-26-2012 at 11:02 AM.
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 04:38 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.