Вверх ↑
Этот топик читают: Гость
Ответов: 92
Рейтинг: 0
#1: 2019-08-24 03:14:30 ЛС | профиль | цитата
Стало интересно можно ли реализовать пародию на программу ментальных карт, но если честно даже хз с какой стороны к этому делу подойти.

По сути хочу реализовать нечто подобное:


Т.е. линия и точки с коментариями присутствуют по дефолту, а пользователь может создавать текстовые блоки, от которых будет идти пунктир на линию, и которые он может свободно передвигать. Ну и соответственно как-то это дело сохранять в файл базу и загружать.

Может у кого-то есть примеры нечто подобного?
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 632
Рейтинг: 4
#2: 2019-08-24 14:56:05 ЛС | профиль | цитата
Схематично, я сделал.
Дальше можно добавить редактирование, перемещаемость и другое.

Add(MainForm,2953706,21,105)
{
Height=452
link(onCreate,162560:In,[(61,125)(61,104)])
}
Add(ChildPanelEx,1391515,644,93)
{
Mode=2
link(Text,1365625:Value,[(650,79)(580,79)])
link(Data,10645062:Var3,[(657,73)(679,73)(679,54)])
}
BEGIN_SDK
Add(EditMultiEx,16070775,21,21)
{
WorkCount=#5:##add|
DataCount=#4:Text|4:Data|
Height=228
Point(##add)
link(##add,13282488:doEvent1,[(101,27)(101,104)])
}
Add(Panel,3378143,238,154)
{
Left=30
Top=60
Point(doLeft)
}
Add(Label,312268,231,84)
{
Left=2
Top=2
Width=56
Height=46
Align=5
Color=16777215
link(Text,16070775:Text,[(237,60)(27,60)])
}
Add(Hub,13282488,105,98)
{
link(onEvent1,312268:doText,[(175,104)(175,90)])
link(onEvent2,6594474:doData,[(137,111)(137,139)])
}
Add(DoData,6594474,154,133)
{
link(onEventData,3378143:doLeft,[(191,139)(191,167)])
link(Data,6245219:Var,[])
}
Add(LineBreak,4962925,28,35)
{
Type=1
link(Data,16070775:Data,[])
Primary=[6245219,126,70]
}
END_SDK
Add(Button,10353750,70,126)
{
Left=15
Top=15
link(onClick,7488178:doWork1,[])
}
Add(ChildForm,7488178,189,126)
{
link(onEvent1,15761338:doEvent1,[(243,132)(243,118)])
}
BEGIN_SDK
Add(EditMulti,14562542,21,21)
{
EventCount=1
WorkCount=1
VarCount=3
Width=433
Height=403
link(doWork1,13481835:doEvent1,[(28,27)(28,139)])
link(Var1,9139681:Var,[])
link(Var2,7935659:Var,[])
link(Var3,12126326:Var,[])
}
Add(MainForm,15955289,91,105)
{
Left=35
Top=105
Width=289
Height=178
Visible=1
Point(doVisible)
}
Add(Edit,4328902,231,42)
{
Left=105
Top=30
Width=110
}
Add(Edit,15285962,161,70)
{
Left=105
Top=65
Width=115
}
Add(Button,16704532,231,161)
{
Left=155
Top=105
link(onClick,11309597:doEvent1,[(271,167)(271,139)])
}
Add(LineBreak,11155895,154,119)
{
Type=1
link(Data,15285962:Text,[(160,111)(167,111)])
Primary=[9139681,-133,273]
}
Add(LineBreak,11905089,224,91)
{
Type=1
link(Data,4328902:Text,[(230,83)(237,83)])
Primary=[7935659,-196,301]
}
Add(LineBreak,11511134,343,28)
{
link(Out,14562542:onEvent1,[(379,34)(379,27)])
Primary=[15537234,-35,112]
}
Add(Hub,11309597,280,133)
{
OutCount=3
link(onEvent1,7284748:In,[(308,139)(308,125)])
link(onEvent2,15537234:In,[])
link(onEvent3,15097300:doData,[])
}
Add(Hub,13481835,63,133)
{
InCount=2
OutCount=1
link(onEvent1,15955289:doVisible,[])
}
Add(DoData,15097300,315,147)
{
Data=Integer(0)
link(onEventData,5582764:In,[])
}
Add(LineBreak,6481664,14,140)
{
link(Out,13481835:doEvent2,[])
Primary=[5582764,343,7]
}
Add(Math,1644708,259,280)
{
OpType=2
Op2=30
link(Op1,15727499:Count,[(265,264)(272,264)])
}
Add(CounterEx,15727499,266,217)
{
Step=2
link(onNext,1644708:doOperation,[(341,223)(341,255)(247,255)(247,286)])
}
Add(LineBreak,12981150,252,329)
{
Type=1
link(Data,1644708:Result,[(258,321)(265,321)])
Primary=[12126326,-217,63]
}
Add(LineBreak,940652,231,217)
{
link(Out,15727499:doNext,[])
Primary=[7284748,91,-98]
}
END_SDK
Add(ChildPanelEx,16670603,679,205)
{
Mode=2
link(Data,14468721:Var,[])
}
BEGIN_SDK
Add(EditMultiEx,15971609,21,21)
{
WorkCount=#5:##add|
DataCount=#4:Data|
Point(##add)
link(##add,6485011:doData,[(35,27)(35,118)])
}
Add(Panel,1125586,182,133)
{
Left=15
Top=145
Width=80
Height=20
Point(doLeft)
}
Add(Image,11801751,203,56)
{
Left=2
Top=2
Width=76
Height=16
Align=5
Color=255
}
Add(DoData,6485011,98,112)
{
link(onEventData,1125586:doLeft,[(156,118)(156,146)])
link(Data,14811748:Var,[])
}
Add(LineBreak,296277,21,35)
{
Type=1
link(Data,15971609:Data,[])
Primary=[14811748,77,49]
}
END_SDK
Add(ChildPanelEx,5652211,735,317)
{
Mode=2
link(Text,2395982:Value,[(741,305)(699,305)])
link(Data,10417007:Var,[])
}
BEGIN_SDK
Add(EditMultiEx,5857535,21,21)
{
WorkCount=#5:##add|
DataCount=#4:Text|4:Data|
Point(##add)
link(##add,15213898:doEvent1,[(101,27)(101,83)])
}
Add(Panel,1805678,210,133)
{
Left=30
Top=165
Width=85
Height=30
Point(doLeft)
}
Add(Label,13297114,238,77)
{
Left=2
Top=2
Width=56
Height=46
Align=5
Color=16777215
link(Text,11477715:Var,[])
}
Add(LineBreak,1593841,21,35)
{
Type=1
link(Data,5857535:Text,[])
Primary=[11477715,217,14]
}
Add(Hub,15213898,133,77)
{
link(onEvent1,13297114:doText,[])
link(onEvent2,6413531:doData,[(157,90)(157,104)])
}
Add(DoData,6413531,168,98)
{
link(onEventData,1805678:doLeft,[(205,104)(205,146)])
link(Data,3978454:Var,[])
}
Add(LineBreak,2148210,28,35)
{
Type=1
link(Data,5857535:Data,[])
Primary=[3978454,140,35]
}
END_SDK
Add(Hub,14226251,560,175)
{
OutCount=3
link(onEvent1,1391515:##add,[(609,181)(609,99)])
link(onEvent2,16670603:##add,[(592,188)(592,211)])
link(onEvent3,5652211:##add,[(592,195)(592,323)])
}
Add(GetDataEx,10645062,664,49)
{
Angle=3
link(Data,9649118:Value,[(661,54)(661,40)(699,40)])
}
Add(LineBreak,4572420,700,65)
{
Type=1
link(Data,7819451:Var3,[(706,58)])
Primary=[10417007,42,224]
}
Add(GetDataEx,7819451,686,53)
{
Angle=3
link(Data,10645062:Var2,[])
}
Add(LineBreak,8394402,679,79)
{
Type=1
link(Data,7819451:Var2,[(685,71)(692,71)])
Primary=[14468721,0,98]
}
Add(ListBox,16337354,210,420)
{
Left=15
Top=215
Width=355
Height=160
FileName="список"
}
Add(FormatStr,345241,91,420)
{
Mask="%1;%2"
link(onFString,16337354:doAdd,[])
link(Str1,14688445:Var,[])
link(Str2,16204105:Var,[])
}
Add(LineBreak,5302150,154,217)
{
Type=1
link(Data,3458836:Var1,[(160,194)])
Primary=[14688445,-63,175]
}
Add(LineBreak,14461242,196,245)
{
Type=1
link(Data,12574695:Var2,[])
Primary=[16204105,-98,147]
}
Add(LineBreak,8306749,35,420)
{
link(Out,345241:doString,[])
Primary=[14845093,301,-285]
}
Add(Button,3323596,105,490)
{
Left=20
Top=385
link(onClick,3274352:doEnum,[])
}
Add(Memory,1365625,574,35)
{
}
Add(Memory,2395982,693,261)
{
}
Add(Hub,15761338,252,112)
{
OutCount=6
link(onEvent1,15853358:doData,[(273,118)(273,41)])
link(onEvent2,8451739:doData,[(276,125)(276,83)])
link(onEvent3,12409247:doData,[])
link(onEvent4,14845093:In,[(312,139)(312,141)])
link(onEvent5,7460546:In,[])
link(onEvent6,3792906:In,[])
}
Add(DoData,15853358,294,35)
{
link(onEventData,11368337:In,[])
link(Data,9108420:Var,[])
}
Add(GetDataEx,3458836,175,189)
{
Angle=1
link(Data,7488178:Var1,[(195,194)])
}
Add(LineBreak,15727930,161,224)
{
Type=1
link(Data,3458836:Var3,[(167,183)(181,183)])
Primary=[9108420,133,-224]
}
Add(DoData,8451739,336,77)
{
link(onEventData,5502080:In,[])
link(Data,8925780:Var,[])
}
Add(GetDataEx,12574695,196,210)
{
link(Data,7488178:Var2,[])
}
Add(LineBreak,14709304,203,224)
{
Type=1
link(Data,12574695:Var3,[(209,215)])
Primary=[8925780,133,-175]
}
Add(LineBreak,5119502,630,261)
{
link(Out,13371694:doEvent1,[(666,267)(666,265)])
Primary=[5502080,-252,-184]
}
Add(Hub,7771272,504,210)
{
InCount=2
OutCount=1
link(onEvent1,14226251:doEvent1,[(539,216)(539,181)])
}
Add(ArrayEnum,3274352,210,490)
{
link(onItem,12076936:doSplit,[(268,496)(268,510)])
link(Array,16337354:Array,[(216,478)(230,478)])
}
Add(MultiStrData,12076936,294,504)
{
link(onPart1,9532387:In,[])
link(onPart2,4579337:doEvent1,[])
}
Add(Hub,11743974,546,35)
{
InCount=2
OutCount=1
link(onEvent1,1365625:doValue,[])
}
Add(Hub,13371694,672,259)
{
InCount=2
OutCount=1
link(onEvent1,2395982:doValue,[(690,265)(690,267)])
}
Add(Memory,9649118,693,-7)
{
}
Add(DoData,12409247,392,126)
{
link(onEventData,1936062:In,[])
link(Data,5215062:Var,[])
}
Add(LineBreak,11716690,462,210)
{
link(Out,7771272:doEvent1,[])
Primary=[3792906,-189,-63]
}
Add(LineBreak,33778,623,-7)
{
link(Out,7588467:doEvent1,[])
Primary=[1936062,-189,133]
}
Add(LineBreak,13854526,203,175)
{
Type=1
link(Data,7488178:Var3,[])
Primary=[5215062,189,-77]
}
Add(Math,7798157,490,301)
{
OpType=2
Op2=30
link(onResult,9008167:In,[])
link(Op1,4733675:Count,[(496,285)(503,285)])
}
Add(CounterEx,4733675,497,238)
{
Step=2
link(onNext,7798157:doOperation,[(572,244)(572,276)(478,276)(478,307)])
}
Add(Hub,2555142,441,252)
{
link(onEvent1,4733675:doNext,[(476,258)(476,244)])
link(onEvent2,1735224:In,[])
}
Add(LineBreak,12749079,462,217)
{
link(Out,7771272:doEvent2,[])
Primary=[1735224,7,42]
}
Add(LineBreak,10026021,497,42)
{
link(Out,11743974:doEvent2,[])
Primary=[9532387,-126,462]
}
Add(LineBreak,12845187,630,266)
{
link(Out,13371694:doEvent2,[])
Primary=[12218564,-259,245]
}
Add(Hub,7588467,665,-7)
{
InCount=2
OutCount=1
link(onEvent1,9649118:doValue,[])
}
Add(LineBreak,3763388,623,0)
{
link(Out,7588467:doEvent2,[])
Primary=[9008167,-91,301]
}
Add(Hub,4579337,336,511)
{
link(onEvent1,12218564:In,[])
link(onEvent2,4631165:In,[])
}
Add(LineBreak,14229638,399,252)
{
link(Out,2555142:doEvent1,[])
Primary=[4631165,-28,266]
}
Add(LineBreak,323468,154,455)
{
link(Out,16337354:doSave,[])
Primary=[7460546,147,-315]
}
Add(LineBreak,11309532,154,448)
{
link(Out,16337354:doLoad,[])
Primary=[162560,-84,-350]
}
Add(LineBreak,10469277,504,35)
{
link(Out,11743974:doEvent1,[])
Primary=[11368337,-168,0]
}

карма: 0

0
Ответов: 2059
Рейтинг: 132
#3: 2019-08-24 19:17:12 ЛС | профиль | цитата
Это надо делать в графике, или довести до ума этот компонент https://yadi.sk/d/9OnCO0Q4uZl-hQ
Надо сделать линии и стрелочки с "прилипанием".
Клик правой кнопкой мыши, а дальше по меню.
По хорошему надо-бы сделать в HiAsm для таких целей вот такое https://github.com/Dev-Demi/GLEngine2D , такое http://quad-engine.com/ , или такое http://www.zengl.org/download_ru.html
Прилепить такое GUI https://github.com/ocornut/imgui и обязательно сделать поддержку Lua-скриптов.
А то делать сценарии на кубиках никуда не годится.

Несколько раз порывался сделать, но никак выбрать не могу что лучше. даже несколько компонентов сделал по каждому движку...

© Николай Гоголь
Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича, да взять сколь-нибудь развязанное, какая у Балтазара Балтазаровича, да, пожалуй, прибавить к этому еще дородности Ивана Павловича — я бы тогда тотчас же решилась. А теперь — поди подумай!
И тут я понял, что можно совместить.
Только вот лень матушка одолела и нужно-ли это?

Редактировалось 2 раз(а), последний 2019-08-24 19:20:44
карма: 6

0
Ответов: 8889
Рейтинг: 823
#4: 2019-08-26 14:49:08 ЛС | профиль | цитата
flint2 писал(а):
..делать сценарии на кубиках никуда не годится..

flint2, вы провокатор
Вот они, кубики, бери не хочу
https://forum.hiasm.com/getfile/38723
карма: 19

0
Ответов: 2059
Рейтинг: 132
#5: 2019-08-26 15:10:57 ЛС | профиль | цитата
Леонид, Я имею ввиду не картинки.
С ними всё просто.
Я про тайлы, изометрические тайлы, частицы, шейдеры, скелетную анимацию и по карте анимаций.
Короче говоря в динамике, чтобы даже игрушки можно было делать.
Уж если делать - так делать, чтобы из движка выжать всё.
А на кубиках FPS будет не больше десятка доже при простеньком сценарии.
Чтобы сделать такие https://youtu.be/d09W5HOFHt0 очень простые примерчики сколько килограммов кубиков потребуется?
Я предполагаю использование скриптов и кубиков.
P.S. сценарий идёт минут 10 https://yadi.sk/d/egKu9bLOj01Dag
P.S.
Всю эту https://forum.hiasm.com/getfile/38723 паутину можно заменить двумя десятками строк в скрипте на Lua, а может и меньше. Это не delphi.
Для меня так гораздо удобней.

Редактировалось 4 раз(а), последний 2019-08-26 15:55:56
карма: 6

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)